2.12.1 • Published 10 months ago

yt-search v2.12.1

Weekly downloads
29,274
License
MIT
Repository
github
Last release
10 months ago

npm npm npm mac ubuntu windows

yt-search

simple youtube search API and CLI

npm.io

Installation

npm install yt-search # local module usage

Easy to use

const yts = require( 'yt-search' )
const r = await yts( 'superman theme' )

const videos = r.videos.slice( 0, 3 )
videos.forEach( function ( v ) {
	const views = String( v.views ).padStart( 10, ' ' )
	console.log( `${ views } | ${ v.title } (${ v.timestamp }) | ${ v.author.name }` )
} )
output
  38878009 | Superman Theme (4:13) | Super Man
   8861479 | Superman • Main Theme • John Williams (4:26) | HD Film Tributes
   7802473 | Superman - Main Theme (BBC Proms) (4:46) | brassbone player
try it

https://runkit.com/talmobi/runkit-npm-yt-search-basic

single video

const video = await yts( { videoId: '_4Vt0UGwmgQ' } )
console.log( video.title + ` (${ video.duration.timestamp })` )
output
Philip Glass. -  Koyaanisqatsi (original version) (3:29)
try it

https://runkit.com/talmobi/runkit-npm-yt-search-video

single playlist

const list = await yts( { listId: 'PL7k0JFoxwvTbKL8kjGI_CaV31QxCGf1vJ' } )

console.log( 'playlist title: ' + list.title )
list.videos.forEach( function ( video ) {
	console.log( video.title )
} )
output
playlist title: Superman Themes
The Max Fleischer Cartoon (From "Superman")
[Deleted video]
Superman Theme
[Private video]
Superman The Animated Series Full Theme
Smallville theme song
Reprise / Fly Away
Superman Doomsday Soundtrack- Main Title
Hans Zimmer - Man of Steel Theme
Supergirl CW Soundtrack - Superman Theme Extended
try it

https://runkit.com/talmobi/runkit-npm-yt-search-playlist

CLI Usage (interactive)

yt-search superman theme

If you have mpv installed, yt-search can directly play yt videos (or audio only)

yt-search-video Dank Memes Videos
yt-search-audio Wagner

If you don't have mpv installed, you can alternatively try installing yt-play-cli

npm install -g yt-play-cli

see: https://github.com/talmobi/yt-play

About

Simple function to get youtube search results.

Why

Not sure..

How

Using HTTP requests and parsing the results with cheerio.

CLI interactive mode with node-fzf

Options

var opts = { query: 'superman theme' }
yts( opts, function ( err, r ) {
	if ( err ) throw err
	console.log( r.videos ) // video results
	console.log( r.playlists ) // playlist results
	console.log( r.channels ) // channel results
	console.log( r.live ) // live stream results
} )

var opts = { videoId: 'e9vrfEoc8_g' }
yts( opts, function ( err, video ) {
	if ( err ) throw err
	console.log( video ) // single video metadata
} )

var opts = { listId: 'PL7k0JFoxwvTbKL8kjGI_CaV31QxCGf1vJ' }
yts( opts, function ( err, playlist ) {
	if ( err ) throw err
	console.log( playlist ) // single playlist metadata
	console.log( playlist.videos ) // playlist videos
} )

Alternatives

ytsr

Test

npm test

Development / Debugging

Modify debug.js by adding another mXX function and calling it at the top.

Run with the debug flag ex: DEBUG=1 node debug.js

The HTML response received by yt-search is written to dasu.response.

Prettify dasu.response for easier debugging ex: prettier --parser html -- save it as a temporary file so it's not overwritten when you call the debug fn again if necessary ex: pewdiepie.channel or superman.results

Most/all relevant data for parsing is found in the results inside the ytInitialData object.

We're using jsonpath-plus for resilient parsing of the ytInitialData object that is subject to continuous modifications by YouTube.

2.11.1

12 months ago

2.12.0

10 months ago

2.12.1

10 months ago

2.11.0

1 year ago

2.10.4

2 years ago

2.10.3

3 years ago

2.10.2

4 years ago

2.10.1

4 years ago

2.10.0

4 years ago

2.9.0

4 years ago

2.8.0

4 years ago

2.7.7

4 years ago

2.7.6

4 years ago

2.7.5

4 years ago

2.7.4

4 years ago

2.7.3

4 years ago

2.7.2

4 years ago

2.7.1

4 years ago

2.7.0

4 years ago

2.6.2

4 years ago

2.6.1

4 years ago

2.6.0

4 years ago

2.5.2

4 years ago

2.5.1

5 years ago

2.5.0

5 years ago

2.4.2

5 years ago

2.4.1

5 years ago

2.3.3

5 years ago

2.3.2

5 years ago

2.3.1

5 years ago

2.3.0

5 years ago

2.2.4

5 years ago

2.2.3

5 years ago

2.2.1

5 years ago

2.2.2

5 years ago

2.2.0

5 years ago

2.1.10

5 years ago

2.1.11

5 years ago

2.1.9

5 years ago

2.1.8

5 years ago

2.1.7

5 years ago

2.1.6

5 years ago

2.1.5

5 years ago

2.1.4

5 years ago

2.1.3

5 years ago

2.1.2

5 years ago

2.1.1

5 years ago

2.0.2

5 years ago

2.0.1

5 years ago

2.0.0

5 years ago

1.1.2

5 years ago

1.1.1

5 years ago

1.1.0

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago

0.4.5

5 years ago

0.4.4

5 years ago

0.4.3

5 years ago

0.4.2

5 years ago

0.4.1

7 years ago

0.4.0

7 years ago

0.3.0

7 years ago

0.2.0

7 years ago

0.1.4

7 years ago

0.1.3

7 years ago

0.1.2

7 years ago

0.1.1

7 years ago

0.1.0

7 years ago

0.0.2

7 years ago

0.0.1

7 years ago

0.0.0

9 years ago