npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

scany

v1.3.1

Published

Easily grab video data from user, channel, playlist, and video URLs!

Downloads

34

Readme

scany

Build Status Code Coverage Dependencies DevDependencies npm Monthly Downloads Total Downloads

YouTube provides basic information on users, channels, and playlists via RSS feeds. This module makes it incredibly easy to access that data without requiring an API key! Not having to sign up for something new is great for hackathons and small projects.

Features

  • No configuration necessary!
  • Scrapes the web for channels/users/playlists and reads metadata directly from the video feeds.
  • Anonymous API, no OAuth key needed!
  • Automatically creates all available thumbnail URLs for easy use!
  • Complete, built-in typescript typings!

Installation

npm i scany

Example

import { scanFeed, scanVideo } from 'scany';

let singleVideo = await scanVideo('https://www.youtube.com/watch?v=dQw4w9WgXcQ');
let multipleVideos = await scanVideo(['OFbBs9M0cqw', 'https://www.youtube.com/watch?v=beaHxW5o-uw']);

let channelViaUser = await scanFeed('https://www.youtube.com/user/freddiew');
let channelViaChannelId = await scanFeed('https://www.youtube.com/channel/UCG08EqOAXJk_YXPDsAvReSg');
let playlist = await scanFeed('https://www.youtube.com/playlist?list=PLjHf9jaFs8XUXBnlkBAuRkOpUJosxJ0Vx');

console.log(`${playlist.playlistTitle} by ${playlist.channelName}:`);
playlist.videos.forEach((video, i) => {
  console.log(`[${i}] ${video.videoTitle} (${video.channelName})`);
});

API

Methods

scanFeed(url, [options])

Returns a Promise for a FeedResult object.

url

Type: String

The URL to a Youtube channel or playlist. If the URL is a channel it will return the feed of the default "Uploads" playlist.

options

Type: Object

  • limit: Number - Limit the number of videos retrieved from the feed URL. Defaults to all (MAX_SAFE_INTEGER) for playlists and 10 for channel urls (recent uploads).
  • scanVideos: Boolean - Toggles the retrieval of extra metadata for each video. Defaults to true.
  • concurrency: Number - Maximum number of videos to query at once. Defaults to 8. Ignored if scanVideos is false.

scanVideo(url, [concurrency])

Returns a Promise for one or more VideoResult objects.

url

Type: String String[]

The URL or array of URLs to a Youtube video.

concurrency

Type: Number

Maximum number of videos to query at once. Defaults to 8.

findFeed(video, [options])

Finds a playlist based on the provided video title/channel.

  • TODO

Models

FeedResult

Type: Object

  • TODO

VideoResult

Type: Object

  • TODO

Related

  • Use pully to easily download a retrieved videos.
  • Check out pully-server for a complete solution to set up an auto-download system.

Contribute

  1. Fork it
  2. npm i
  3. npm run watch
  4. Make changes and write tests.
  5. Send pull request! :sunglasses:

License

MIT