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

like-youtube

v1.0.1

Published

Search and download YouTube videos

Downloads

71

Readme

like-youtube

Search and download YouTube videos

npm i like-youtube

It uses some libraries but it simplifies the usage. Eventually can be built-in.

Usage

const YouTube = require('like-youtube')

const yt = new YouTube()
const page = await yt.search('How to create a variable in JS')

for (const item of page.items) {
  const download1 = yt.download(item.id, { filename: './video-' + item.id + '.mp4' })
  const download2 = yt.audio(item.id, { filename: './audio-' + item.id + '.webm' })

  await download1.done()
  await download2.done()
}

const page2 = await yt.search(null, { next: page.next })
// ...

const details = await yt.getVideoDetails(videoId)
// E.g. details.suggestions

Stream without saving into a file:

for (const item of page.items) {
  const dl1 = yt.download(item.id)
  const dl2 = yt.audio(item.id)

  // dl1.stream ...
  // dl2.stream ...

  await dl1.done()
  await dl2.done()
}

API

youtube = new YouTube()

Creates a YouTube instance.

page = await youtube.search(input, [options])

Search by keywords. Returns { items, next }.

Input becomes optional if you're getting a next page.

Options:

{
  limit: 10,
  type: 'video', // Possible values: 'video', 'channel', 'playlist', 'movie'
  next // Accepts a page.next
}

Items from search are like:

{
  id,
  type,
  title,
  channelTitle,
  shortBylineText,
  length: Number,
  isLive: Boolean,
  thumbnail: { url, width, height },
  thumbnails: Array
}

download = youtube.video(idOrUrl, [options])

download = youtube.audio(idOrUrl, [options])

Creates a downloader. Use download.stream.

Wait for completion: await download.done() Cancel the download: await download.close()

Options:

{
  // Passing a filename will save the content into a file 
  // Then you only need to await dl.done()
  filename
}

Example: await yt.video(id, { filename }).done()

details = await youtube.getVideoDetails(id)

Get the details of a video.

Returns like:

{
  id,
  title,
  channel,
  channelId,
  description,
  keywords: Array,
  isLive: Boolean,
  thumbnail: { url, width, height },
  thumbnails: Array,
  suggestions: Array // Same format as search results
}

License

MIT