1.0.0 • Published 3 years ago

node-youtube-data v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

YoutubeData

Typescript or ES6

import {YoutubeData} from 'node-youtube-data';

Common js

const YoutubeData= require('node-youtube-data');

Create instance of YoutubeData

const api=new YoutubeData();

To retrive YoutubeVideo data ,will need to use getVideoInfo method

There are 3 ways to use it ,by using :-

  1. async/await
  2. promise
  3. callback function

How to use getVideoInfo with async/await

function must be wrapped inside async method

const response=await api.getVideoInfo('videoId')
     if(response){
      const data=response.data;
     }

How to use getVideoInfo with Promise

api.getVideoInfo('videoId').then(res=>{
    if(res){
      const data=res.data;
    }
})

How to use getVideoInfo with Callback

api.getVideoInfo('videoId',(errors,data)=>{
      const data=data;
})

The data response from Youtube is very big Json object but the interesting part is video url ,but beafore all we can have two type of videos, encrpted(ciphered) non-encrypted

sample response for ciphered video

{
        "csn": "GJxpYIjqN-LJsAKIkJbwAQ",
        "root_ve_type": "27240",
        "vss_host": "s.youtube.com",
        "cr": "US",
        "host_language": "en",
        "hl": "en_US",
        "innertube_api_key": "AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8",
        "innertube_api_version": "v1",
        "innertube_context_client_version": "2.20210401.06.00",
        "watermark": "https://s.ytimg.com/yts/img/watermark/youtube_watermark-vflHX6b6E.png,https://s.ytimg.com/yts/img/watermark/youtube_hd_watermark-vflAzLcD6.png",
        "c": "WEB",
        "cver": "2.20210401.06.00",
        "player_response": {

            "streamingData": {
                "expiresInSeconds": "21540",
                "formats": [
                    {
                        "ciphered": true,
                        "itag": "18",
                        "mimeType": "video/mp4;+codecs=\"avc1.42001E,+mp4a.40.2\"",
                        "bitrate": "706170",
                        "width": "640",
                        "height": "360",
                        "lastModified": "1599907483477795",
                        "contentLength": "12366639",
                        "quality": "medium",
                        "fps": "24",
                        "qualityLabel": "360p",
                        "projectionType": "RECTANGULAR",
                        "averageBitrate": "705883",
                        "audioQuality": "AUDIO_QUALITY_LOW",
                        "approxDurationMs": "140155",
                        "audioSampleRate": "44100",
                        "audioChannels": "2",
                        "signatureCipher": {
                            "s": "8Oq1Oq0QJjwRgIhALwAvc1aDkgbdXxnFrh8jSTg=WCyAoGkolchtjdZq2KZAjEA7lO4mKC7Su6q9IEdqIpQPtc4C55M8ML5BsXldWzCsX0iX0i",
                            "sp": "sig",
                            "url": "https://r2---sn-uujau1-q5ge.googlevideo.com/videoplayback?expire=1617555576&ei=GJxpYIjqN-LJsAKIkJbwAQ&ip=41.59.81.20&id=o-AJlbFpM2Kaw8M6_r-ny7ERu0NtPWxB3ad4bmdhdRx4ev&itag=18&source=youtube&requiressl=yes&mh=oO&mm=31%2C29&mn=sn-uujau1-q5ge%2Csn-hpa7kn7e&ms=au%2Crdu&mv=m&mvi=2&pl=24&initcwndbps=123750&vprv=1&mime=video%2Fmp4&ns=Cg6esorNBv4ei0gojiry0JsF&gir=yes&clen=12366639&ratebypass=yes&dur=140.155&lmt=1599907483477795&mt=1617533568&fvip=6&fexp=24001373%2C24007246&c=WEB&txp=5531432&n=ZrjBYmq4IJqCLFD0A&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cratebypass%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRgIhAJiiLinwXktDwL4nnlIcXatf1GgvKM7p0PsST2Q2WYaJAiEAwoJkAXpYApAnLrxr2Hb4_s4Udo7LyAMxpAmc7zRpXJo%3D"
                        }
                    } 
                ],
                "adaptiveFormats": [
                    {
                        "ciphered": true,
                        "itag": "251",
                        "mimeType": "audio/webm;+codecs=\"opus\"",
                        "bitrate": "143321",
                        "initRange": "[object Object]",
                        "indexRange": "[object Object]",
                        "lastModified": "1599907451629082",
                        "contentLength": "2324408",
                        "quality": "tiny",
                        "projectionType": "RECTANGULAR",
                        "averageBitrate": "132708",
                        "audioQuality": "AUDIO_QUALITY_MEDIUM",
                        "approxDurationMs": "140121",
                        "audioSampleRate": "48000",
                        "audioChannels": "2",
                        "loudnessDb": "5.8800001",
                        "signatureCipher": {
                            "s": "8OqmOq0QJ6wRQIhALUAykmD7yTmOaAvhlU5VzyU=W08noE4tSmEy3gKalpJAZBKWwQsIX-QKSHNN28NY7o3_iK_jfViAvjjxnW-Pso5cQ=iQ=i",
                            "sp": "sig",
                            "url": "https://r2---sn-uujau1-q5ge.googlevideo.com/videoplayback?expire=1617555576&ei=GJxpYIjqN-LJsAKIkJbwAQ&ip=41.59.81.20&id=o-AJlbFpM2Kaw8M6_r-ny7ERu0NtPWxB3ad4bmdhdRx4ev&itag=251&source=youtube&requiressl=yes&mh=oO&mm=31%2C29&mn=sn-uujau1-q5ge%2Csn-hpa7kn7e&ms=au%2Crdu&mv=m&mvi=2&pl=24&initcwndbps=123750&vprv=1&mime=audio%2Fwebm&ns=RH0q5w37Li_MOTtL9oAnWocF&gir=yes&clen=2324408&dur=140.121&lmt=1599907451629082&mt=1617533568&fvip=6&keepalive=yes&fexp=24001373%2C24007246&c=WEB&txp=5531432&n=2vVx0HhfoeNePVDEy&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRQIhAJf7ENTuzJgUP6rTgHcMhlzjw4We9b6ogcodjZnu_Tt-AiAqE-WurFnVMsi31LkKL86v_DQZLO4Gpw8fTt3tIvLhTw%3D%3D"
                        }
                    }
                ]
            },
        
        "status": "ok"
    }
    }

From above response video can be accessed by

data.player_response.streamingData.formats[0].signatureCipher.url+&signature={deciphered signature }

sample response for non-ciphered video

{
        "csn": "DK5pYIPDNeiOmLAPyr-_oAM",
        "root_ve_type": "27240",
        "vss_host": "s.youtube.com",
        "cr": "US",
        "host_language": "en",
        "hl": "en_US",
        "innertube_api_key": "AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8",
        "innertube_api_version": "v1",
        "innertube_context_client_version": "2.20210401.06.00",
        "watermark": "https://s.ytimg.com/yts/img/watermark/youtube_watermark-vflHX6b6E.png,https://s.ytimg.com/yts/img/watermark/youtube_hd_watermark-vflAzLcD6.png",
        "c": "WEB",
        "cver": "2.20210401.06.00",
        "player_response": {
            "streamingData": {
                "expiresInSeconds": "21540",
                "formats": [
                    {
                        "ciphered": false,
                        "itag": "22",
                        "url": "https://r2---sn-uujau1-q5ge.googlevideo.com/videoplayback?expire=1617560172&ei=DK5pYIPDNeiOmLAPyr-_oAM&ip=41.59.81.20&id=o-ALMYkpxgYx0_Psmea1HkrM3JTpXJxc5pXWsagvb4OGwU&itag=22&source=youtube&requiressl=yes&mh=sv&mm=31,29&mn=sn-uujau1-q5ge,sn-hpa7kn7z&ms=au,rdu&mv=m&mvi=2&pl=24&initcwndbps=117500&vprv=1&mime=video/mp4&ns=wsKBX9LlI-WHJNQSgnRWJLkF&cnr=14&ratebypass=yes&dur=2435.587&lmt=1616926733174412&mt=1617538365&fvip=6&fexp=24001373,24007246&c=WEB&txp=6316222&n=M7OI8sd-YxgiJMuFT&sparams=expire,ei,ip,id,itag,source,requiressl,vprv,mime,ns,cnr,ratebypass,dur,lmt&sig=AOq0QJ8wRAIgIRI7oI4qns73kFTz77ieP5004tfXOMLv3abCzHQGAVMCIAyx5kZSPYf3lBjXJcC-EtDfYrhjLZ7ndEtO7Mb56osA&lsparams=mh,mm,mn,ms,mv,mvi,pl,initcwndbps&lsig=AG3C_xAwRAIgYbBbZh47atXrjcxF7wEebxZnd3eBfSw79iILZg9mZ0cCIGBlGGqsLsF0Dzbjgm3TXkWD-se87Ge9WKJnPuvb8zub",
                        "mimeType": "video/mp4;+codecs=\"avc1.64001F,+mp4a.40.2\"",
                        "bitrate": "2111395",
                        "width": "1280",
                        "height": "720",
                        "lastModified": "1616926733174412",
                        "quality": "hd720",
                        "fps": "25",
                        "qualityLabel": "720p",
                        "projectionType": "RECTANGULAR",
                        "audioQuality": "AUDIO_QUALITY_MEDIUM",
                        "approxDurationMs": "2435587",
                        "audioSampleRate": "44100",
                        "audioChannels": "2"
                    }
                    
                ],
                "adaptiveFormats": [
                    {
                        "ciphered": false,
                        "itag": "251",
                        "url": "https://r2---sn-uujau1-q5ge.googlevideo.com/videoplayback?expire=1617560172&ei=DK5pYIPDNeiOmLAPyr-_oAM&ip=41.59.81.20&id=o-ALMYkpxgYx0_Psmea1HkrM3JTpXJxc5pXWsagvb4OGwU&itag=251&source=youtube&requiressl=yes&mh=sv&mm=31,29&mn=sn-uujau1-q5ge,sn-hpa7kn7z&ms=au,rdu&mv=m&mvi=2&pl=24&initcwndbps=117500&vprv=1&mime=audio/webm&ns=eCMTyjQDydOXLV5sDhJIOJ4F&gir=yes&clen=37768509&dur=2435.541&lmt=1616926597399228&mt=1617538365&fvip=6&keepalive=yes&fexp=24001373,24007246&c=WEB&txp=6311222&n=0zkXqmXqYwmVA7hqL&sparams=expire,ei,ip,id,itag,source,requiressl,vprv,mime,ns,gir,clen,dur,lmt&sig=AOq0QJ8wRQIgTT4KUP4Fk22-9tSF2KRSqHVE6TJz0S6w5jesvH1bMCwCIQCto02PvbpmRe3orhSw9wygRob0K3wV_vOGwuiB_MKYrA==&lsparams=mh,mm,mn,ms,mv,mvi,pl,initcwndbps&lsig=AG3C_xAwRAIgYbBbZh47atXrjcxF7wEebxZnd3eBfSw79iILZg9mZ0cCIGBlGGqsLsF0Dzbjgm3TXkWD-se87Ge9WKJnPuvb8zub",
                        "mimeType": "audio/webm;+codecs=\"opus\"",
                        "bitrate": "140469",
                        "initRange": "[object Object]",
                        "indexRange": "[object Object]",
                        "lastModified": "1616926597399228",
                        "contentLength": "37768509",
                        "quality": "tiny",
                        "projectionType": "RECTANGULAR",
                        "averageBitrate": "124057",
                        "audioQuality": "AUDIO_QUALITY_MEDIUM",
                        "approxDurationMs": "2435541",
                        "audioSampleRate": "48000",
                        "audioChannels": "2",
                        "loudnessDb": "2.3900003"
                    }
                    
                ]
            },
            
        "status": "ok"
    }
}

From above response video can be accessed by

data.player_response.streamingData.formats[0].url