├── .gitignore ├── LICENSE ├── README.md ├── README.old.md ├── cli.js ├── docs ├── demo.svg └── how-to-record-demo.txt ├── menu.js ├── package-lock.json ├── package.json ├── test ├── menu-test.js ├── samples │ ├── 10vor10.json │ ├── primitive.json │ └── thankyousong.json └── ytdl-api-test.js └── ytdl-api.js /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | node_modules 3 | .vscode 4 | .DS_Store 5 | *.mp4 6 | *.part 7 | *.m4a 8 | *.mkv 9 | *.ytdl -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Aravindo Wingeier 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # youtube-dl-interactive is _inactive_. 2 | 3 | This was just an experiment. Yes it was possible make this tiny tool with nodejs, a few shell scripts, python scripts, or bash aliases would have been more helpful. 4 | 5 | 6 | -------------------------------------------------------------------------------- /README.old.md: -------------------------------------------------------------------------------- 1 | > Interactively select the quality and format for youtube-dl. 2 | 3 | A [youtube-dl](https://github.com/ytdl-org/youtube-dl) wrapper, which helps you to download a specific format. 4 | 5 | 6 |

7 | 8 |

9 | 10 | 11 | 12 | 13 | # Why? 14 | Because remembering CLI flags is hard. 15 | 16 | # Installation 17 | 18 | Make sure you have [youtube-dl](https://github.com/ytdl-org/youtube-dl) installed. And [Node](https://nodejs.org) >= 8. 19 | 20 | $ npm install -g youtube-dl-interactive 21 | 22 | # Usage 23 | 24 | $ youtube-dl-interactive URL 25 | 26 | # Note 27 | 28 | > This is alpha version, use it at your own risks! 😱 29 | > Thanks in advance for reporting bugs. #sharethelove 😊 30 | 31 | Only tested on macOS so far. It uses the `youtube-dl` in your `PATH`. 32 | -------------------------------------------------------------------------------- /cli.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 'use strict' 3 | const meow = require('meow') 4 | const logSymbols = require('log-symbols') 5 | const shell = require('shelljs') 6 | const ora = require('ora') 7 | const updateNotifier = require('update-notifier') 8 | const chalk = require('chalk') 9 | const ytdlApi = require('./ytdl-api') 10 | const menu = require('./menu') 11 | const pkg = require('./package.json') 12 | 13 | const cli = meow( 14 | ` 15 | Usage: youtube-dl-interactive URL 16 | 17 | Options: 18 | --help, -h output usage information 19 | --version output the version number 20 | --demo use sample data, no remote calls 21 | 22 | `, 23 | { 24 | flags: { 25 | demo: { 26 | type: 'boolean' 27 | } 28 | } 29 | } 30 | ) 31 | 32 | async function init(args, flags) { 33 | if (!shell.which('youtube-dl')) { 34 | shell.echo('Sorry, this script requires youtube-dl.') 35 | shell.echo('See https://github.com/ytdl-org/youtube-dl.') 36 | shell.exit(1) 37 | } 38 | 39 | updateNotifier({pkg}).notify() 40 | 41 | if (flags.demo) { 42 | console.log( 43 | logSymbols.warning, 44 | chalk.bgYellowBright( 45 | 'Running demo with sample data, not actually calling youtube-dl.' 46 | ) 47 | ) 48 | await run(null, true) 49 | } else { 50 | if (args.length !== 1) { 51 | cli.showHelp(1) 52 | } 53 | 54 | const url = args[0] 55 | await run(url, false) 56 | } 57 | } 58 | 59 | init(cli.input, cli.flags).catch(error => { 60 | console.error(error) 61 | process.exit(1) 62 | }) 63 | 64 | async function run(url, isDemo) { 65 | const info = isDemo 66 | ? require('./test/samples/thankyousong.json') 67 | : await fetchInfo(url) 68 | 69 | if (!info) { 70 | return 71 | } 72 | 73 | console.log(chalk.bold('Title:', chalk.blue(info.title))) 74 | 75 | const {formats} = info 76 | const {formatString, hasVideo, hasAudio} = await menu.formatMenu(formats) 77 | let options = ` -f '${formatString}' --restrict-filenames ` 78 | 79 | if (!hasVideo && hasAudio) { 80 | options += ' --extract-audio ' 81 | } 82 | 83 | if (isDemo) { 84 | console.log( 85 | logSymbols.warning, 86 | `End of demo. would now call: youtube-dl ${options} "` 87 | ) 88 | } else { 89 | const command = `youtube-dl ${options} "${url}"` 90 | console.log(logSymbols.success, `OK. Running: ${command}`) 91 | shell.exec(command) 92 | } 93 | } 94 | 95 | async function fetchInfo(url) { 96 | const spinner = ora('Loading metadata').start() 97 | try { 98 | const info = await ytdlApi.getInfo(url) 99 | spinner.stop() 100 | return info 101 | } catch (error) { 102 | spinner.fail('Error while loading metadata') 103 | console.error(error) 104 | return null 105 | } 106 | } 107 | -------------------------------------------------------------------------------- /docs/demo.svg: -------------------------------------------------------------------------------- 1 | $youtube-dl-interactivehttps://www.youtube.com/watch?v=CjLHuhOTnaITitle:CanYouTrustApple?Facebook?Google??Whatdoyouwant?(Usearrowkeys)bestvideo+bestaudioworstvideo+worstaudio<480pmp4audioonly---specifyresolution:---1080p720p480p360p240p(Moveupanddowntorevealmorechoices)?Whatdoyouwant?bestvideo+bestaudioworstvideo+worstaudio1080p720p144p?Whatdoyouwant?720p?Selectavideofile:(Usearrowkeys)webm1280x720720p34.7MiB(247)mp41280x720720p6022.6MiB(298)webm1280x720720p6032.5MiB(302)mp41280x720720p33.6MiB(136)mp41280x720hd720NaNaudio:mp4a.40.2@192k(22)?Selectavideofile:webm1280x720720p34.7MiB(247)webm1280x720720p6032.5MiB(302)mp41280x720720p33.6MiB(136)mp41280x720hd720NaNaudio:mp4a.40.2@192k(22)?Selectavideofile:mp41280x720hd720NaNaudio:mp4a.40.2@192k(22)?Selectaudio:(Usearrowkeys)Useaudioincludedinthevideo:mp4a.40.2@192k──────────────bestaudioworstaudio---specify:---webmopus@50kDASHaudio3.9MiB(249)webmopus@70kDASHaudio5.1MiB(250)webmvorbis@128kDASHaudio8.2MiB(171)m4amp4a.40.2@128kDASHaudio10.0MiB(140)webmopus@160kDASHaudio9.9MiB(251)?Selectaudio:bestaudioOK.Running:youtube-dl-f'22+bestaudio'"https://www.youtube.com/watch?v=CjLHuhOTnaI"[youtube]CjLHuhOTnaI:DownloadingwebpageLoadingmetadata<480pmp4audioonlymp41280x720720p6022.6MiB(298)?Selectaudio:Useaudioincludedinthevideo:mp4a.40.2@192kbestaudio[youtube]CjLHuhOTnaI:Downloadingvideoinfowebpage -------------------------------------------------------------------------------- /docs/how-to-record-demo.txt: -------------------------------------------------------------------------------- 1 | 2 | https://github.com/marionebl/svg-term-cli 3 | https://asciinema.org/docs/installation 4 | 5 | asciinema rec demo 6 | 7 | (edit the demo file for start and end) 8 | 9 | cat demo | svg-term --out demo.svg --window --from 4300 --width 75 --height 10 10 | 11 | -------------------------------------------------------------------------------- /menu.js: -------------------------------------------------------------------------------- 1 | const inquirer = require('inquirer') 2 | const byteSize = require('byte-size') 3 | 4 | exports.formatMenu = async function(formats) { 5 | // Select video preset or resolution (it may include a audio track) 6 | let { 7 | finalFormatId, 8 | videoFormatId, 9 | audioFormatId, 10 | height 11 | } = await selectPresetOrResolution(formats) 12 | 13 | // FinalFormatId means no further selection is required 14 | if (!finalFormatId) { 15 | let videoFormat 16 | // Specifiy which video with this height 17 | if (height) { 18 | videoFormat = await exports.selectOneVideo( 19 | formats.filter(f => f.height === height) 20 | ) 21 | videoFormatId = videoFormat.format_id 22 | } 23 | 24 | // Specify audio track 25 | audioFormatId = await selectAudio(formats, videoFormat) 26 | } 27 | 28 | if (finalFormatId) { 29 | return {formatString: finalFormatId, hasVideo: true, hasAudio: true} 30 | } 31 | 32 | if (videoFormatId && audioFormatId) { 33 | if (videoFormatId === audioFormatId) { 34 | return {formatString: videoFormatId, hasVideo: true, hasAudio: true} 35 | } 36 | 37 | return { 38 | formatString: `${videoFormatId}+${audioFormatId}`, 39 | hasVideo: true, 40 | hasAudio: true 41 | } 42 | } 43 | 44 | if (videoFormatId) { 45 | // The special case 'video only' has no audio 46 | return {formatString: videoFormatId, hasVideo: true, hasAudio: false} 47 | } 48 | 49 | // The special case 'audio only' has no video data 50 | return {formatString: audioFormatId, hasVideo: false, hasAudio: true} 51 | } 52 | 53 | async function selectPresetOrResolution(formats) { 54 | const answers = await inquirer.prompt([ 55 | { 56 | type: 'list', 57 | name: 'q', 58 | message: 'What do you want?', 59 | pageSize: 10, 60 | choices: [ 61 | { 62 | name: 'best video + best audio', 63 | value: {finalFormatId: 'bestvideo+bestaudio/best'} 64 | }, 65 | { 66 | name: 'worst video + worst audio', 67 | value: {finalFormatId: 'worstvideo+worstaudio/worst'} 68 | }, 69 | { 70 | name: '<480p mp4', 71 | value: { 72 | finalFormatId: 73 | 'bestvideo[height<=480][ext=mp4]+bestaudio[ext=m4a]/best[height<=480][ext=mp4]' 74 | } 75 | }, 76 | {name: 'audio only', value: {}}, 77 | new inquirer.Separator('--- specify resolution: ---'), 78 | ...getResolutions(formats).map(resolution => ({ 79 | name: resolution + 'p', 80 | value: {height: resolution} 81 | })) 82 | ] 83 | } 84 | ]) 85 | 86 | return answers.q 87 | } 88 | 89 | exports.selectOneVideo = async function(formats) { 90 | const answers = await inquirer.prompt([ 91 | { 92 | type: 'list', 93 | name: 'q', 94 | message: 'Select a video file:', 95 | choices: formats.map(f => ({ 96 | name: exports.createVideoDescription(f), 97 | value: f 98 | })) 99 | } 100 | ]) 101 | return answers.q 102 | } 103 | 104 | async function selectAudio(formats, selectedVideoFormat) { 105 | const choices = [] 106 | 107 | if (selectedVideoFormat && selectedVideoFormat.acodec !== 'none') { 108 | choices.push({ 109 | name: `Use audio included in the video: ${exports.createAudioShortDescription( 110 | selectedVideoFormat 111 | )}`, 112 | value: selectedVideoFormat.format_id 113 | }) 114 | choices.push(new inquirer.Separator()) 115 | } 116 | 117 | choices.push({name: 'best audio', value: 'bestaudio'}) 118 | choices.push({name: 'worst audio', value: 'worstaudio'}) 119 | choices.push(new inquirer.Separator('--- specify: ---')) 120 | choices.push( 121 | ...getAudioFormats(formats).map(f => ({ 122 | name: exports.createAudioDescription(f), 123 | value: f.format_id 124 | })) 125 | ) 126 | 127 | const audioAnswers = await inquirer.prompt([ 128 | { 129 | message: 'Select audio:', 130 | type: 'list', 131 | name: 'q', 132 | pageSize: 10, 133 | choices 134 | } 135 | ]) 136 | return audioAnswers.q 137 | } 138 | 139 | function getResolutions(formats) { 140 | const resolutions = formats.filter(f => Boolean(f.height)).map(f => f.height) 141 | 142 | return [...new Set(resolutions)].sort(f => f.height).reverse() 143 | } 144 | 145 | function getAudioFormats(formats) { 146 | return formats.filter(f => f.acodec && f.acodec !== 'none') 147 | } 148 | 149 | exports.createVideoDescription = function(f) { 150 | return ( 151 | paddingRight(f.ext, 4) + 152 | paddingRight(f.width ? f.width + 'x' + f.height : null, 9) + 153 | paddingRight(f.format_note, 10) + 154 | paddingRight(byteSize(f.filesize, {units: 'iec'}), 8) + 155 | exports.createAudioShortDescription(f, 'audio: ') + 156 | '(' + 157 | f.format_id + 158 | ')' 159 | ) 160 | } 161 | 162 | const paddingRight = function(value, width) { 163 | if (!value) { 164 | value = '' 165 | } 166 | 167 | // Value might be an object. Wrap it so we can call padEnd on it. 168 | value = String(value) 169 | return value.padEnd(width) + ' ' 170 | } 171 | 172 | const paddingLeft = function(value, width, suffix = '') { 173 | if (value) { 174 | value += suffix 175 | } else { 176 | value = '' 177 | } 178 | 179 | // Value might be an object. Wrap it so we can call padEnd on it. 180 | value = String(value) 181 | return value.padStart(width) + ' ' 182 | } 183 | 184 | exports.createAudioDescription = function(f) { 185 | return ( 186 | paddingRight(f.ext, 4) + 187 | paddingRight(f.acodec, 9) + 188 | '@ ' + 189 | paddingLeft(f.abr, 3, 'k') + 190 | paddingRight(f.format_note, 10) + 191 | paddingLeft(byteSize(f.filesize, {units: 'iec'}), 7) + 192 | '(' + 193 | f.format_id + 194 | ')' 195 | ) 196 | } 197 | 198 | exports.createAudioShortDescription = function(f, prefix = '') { 199 | if (f.acodec && f.acodec !== 'none') { 200 | return ( 201 | prefix + paddingRight(f.acodec, 9) + '@ ' + paddingLeft(f.abr, 3, 'k') 202 | ) 203 | } 204 | 205 | return '' 206 | } 207 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "youtube-dl-interactive", 3 | "version": "0.1.0", 4 | "description": "Interactively select the quality and format for youtube-dl", 5 | "main": "./cli.js", 6 | "scripts": { 7 | "test": "ava" 8 | }, 9 | "bin": "./cli.js", 10 | "keywords": [ 11 | "youtube-dl" 12 | ], 13 | "author": "synox", 14 | "license": "MIT", 15 | "dependencies": { 16 | "byte-size": "^5.0.1", 17 | "chalk": "^2.4.2", 18 | "inquirer": "^6.3.1", 19 | "log-symbols": "^2.2.0", 20 | "meow": "^5.0.0", 21 | "ora": "^3.4.0", 22 | "parse-columns": "^2.0.0", 23 | "shelljs": "^0.8.3", 24 | "update-notifier": "^3.0.0" 25 | }, 26 | "repository": { 27 | "type": "git", 28 | "url": "https://github.com/synox/youtube-dl-interactive.git" 29 | }, 30 | "devDependencies": { 31 | "ava": "^1.4.1", 32 | "xo": "^0.24.0" 33 | }, 34 | "xo": { 35 | "semicolon": false, 36 | "prettier": true, 37 | "rules": { 38 | "no-unused-vars": [ 39 | "error", 40 | { 41 | "argsIgnorePattern": "^_" 42 | } 43 | ] 44 | } 45 | }, 46 | "engines": { 47 | "node": ">=8" 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /test/menu-test.js: -------------------------------------------------------------------------------- 1 | import test from 'ava' 2 | import menu from '../menu' 3 | 4 | const {formats} = require('./samples/thankyousong.json') 5 | 6 | test('show video description', async t => { 7 | t.is( 8 | await menu.createVideoDescription(formats[8]), 9 | 'mp4 426x240 240p 2.2 MiB (133)' 10 | ) 11 | }) 12 | 13 | test('show video description with audio', async t => { 14 | t.is( 15 | await menu.createVideoDescription(formats[17]), 16 | 'mp4 640x360 medium 8.5 MiB audio: mp4a.40.2 @ 96k (18)' 17 | ) 18 | }) 19 | 20 | test('show video description when some fields are not defined', async t => { 21 | t.is( 22 | await menu.createVideoDescription({format_id: 'HDTV'}), 23 | ' NaN (HDTV)' 24 | ) 25 | }) 26 | 27 | test('show audio short description ', async t => { 28 | t.is( 29 | await menu.createAudioShortDescription(formats[17], 'audio: '), 30 | 'audio: mp4a.40.2 @ 96k ' 31 | ) 32 | }) 33 | 34 | test('show audio short description when some fields are not defined', async t => { 35 | t.is( 36 | await menu.createAudioShortDescription({acodec: 'mp4a'}), 37 | 'mp4a @ ' 38 | ) 39 | }) 40 | 41 | test('show audio description ', async t => { 42 | t.is( 43 | await menu.createAudioDescription(formats[17]), 44 | 'mp4 mp4a.40.2 @ 96k medium 8.5 MiB (18)' 45 | ) 46 | }) 47 | 48 | test('show audio description when some fields are not defined', async t => { 49 | t.is( 50 | await menu.createAudioDescription({format_id: 22}), 51 | ' @ NaN (22)' 52 | ) 53 | }) 54 | -------------------------------------------------------------------------------- /test/samples/10vor10.json: -------------------------------------------------------------------------------- 1 | { 2 | "display_id": "dbb43c6b-4285-46cc-bbb1-fc0cc92e2938", 3 | "extractor": "SRGSSR", 4 | "protocol": "https", 5 | "description": null, 6 | "upload_date": "20190529", 7 | "requested_subtitles": null, 8 | "formats": [ 9 | { 10 | "protocol": "m3u8_native", 11 | "format": "HTTP-HLS-HD-46 - audio only", 12 | "tbr": 46.0, 13 | "preference": null, 14 | "manifest_url": "https://srfvodhd-vh.akamaihd.net/i/vod/10vor10/2019/05/10vor10_20190529_215000_16196999_v_webcast_h264_,q40,q10,q20,q30,q50,q60,.mp4.csmil/master.m3u8?hdnts=exp=1559203034~acl=/i/vod/*~hmac=b8bb1625dd1d3eb431144663d0a7e24836faa9f7aaa86e695a1a06411db35117", 15 | "format_id": "HTTP-HLS-HD-46", 16 | "http_headers": { 17 | "Accept-Language": "en-us,en;q=0.5", 18 | "Accept-Encoding": "gzip, deflate", 19 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 20 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0", 21 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 22 | "Cookie": "_alid_=8bTWws6RQUzi7AUCjeHi/g==; hdntl=exp=1559289403~acl=%2fz%2fvod%2f*~data=hdntl~hmac=24eb3e287a84d45145ee8184ddb5c7a87b9c3b5a9d868991acacc36aa63c248b" 23 | }, 24 | "url": "https://srfvodhd-vh.akamaihd.net/i/vod/10vor10/2019/05/10vor10_20190529_215000_16196999_v_webcast_h264_,q40,q10,q20,q30,q50,q60,.mp4.csmil/index_1_a.m3u8?null=0", 25 | "vcodec": "none", 26 | "ext": "mp4", 27 | "fps": null, 28 | "acodec": "mp4a.40.2" 29 | }, 30 | { 31 | "protocol": "m3u8_native", 32 | "format": "HTTP-HLS-SD-46 - audio only", 33 | "tbr": 46.0, 34 | "preference": null, 35 | "manifest_url": "https://srfvodhd-vh.akamaihd.net/i/vod/10vor10/2019/05/10vor10_20190529_215000_16196999_v_webcast_h264_,q40,q10,q20,q30,q50,.mp4.csmil/master.m3u8?hdnts=exp=1559203034~acl=/i/vod/*~hmac=b8bb1625dd1d3eb431144663d0a7e24836faa9f7aaa86e695a1a06411db35117", 36 | "format_id": "HTTP-HLS-SD-46", 37 | "http_headers": { 38 | "Accept-Language": "en-us,en;q=0.5", 39 | "Accept-Encoding": "gzip, deflate", 40 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 41 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0", 42 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 43 | "Cookie": "_alid_=8bTWws6RQUzi7AUCjeHi/g==; hdntl=exp=1559289403~acl=%2fz%2fvod%2f*~data=hdntl~hmac=24eb3e287a84d45145ee8184ddb5c7a87b9c3b5a9d868991acacc36aa63c248b" 44 | }, 45 | "url": "https://srfvodhd-vh.akamaihd.net/i/vod/10vor10/2019/05/10vor10_20190529_215000_16196999_v_webcast_h264_,q40,q10,q20,q30,q50,.mp4.csmil/index_1_a.m3u8?null=0", 46 | "vcodec": "none", 47 | "ext": "mp4", 48 | "fps": null, 49 | "acodec": "mp4a.40.2" 50 | }, 51 | { 52 | "http_headers": { 53 | "Accept-Language": "en-us,en;q=0.5", 54 | "Accept-Encoding": "gzip, deflate", 55 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 56 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0", 57 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 58 | "Cookie": "_alid_=8bTWws6RQUzi7AUCjeHi/g==; hdntl=exp=1559289403~acl=%2fz%2fvod%2f*~data=hdntl~hmac=24eb3e287a84d45145ee8184ddb5c7a87b9c3b5a9d868991acacc36aa63c248b" 59 | }, 60 | "protocol": "m3u8_native", 61 | "format": "HTTP-HLS-HD-145 - 320x180", 62 | "url": "https://srfvodhd-vh.akamaihd.net/i/vod/10vor10/2019/05/10vor10_20190529_215000_16196999_v_webcast_h264_,q40,q10,q20,q30,q50,q60,.mp4.csmil/index_1_av.m3u8?null=0", 63 | "vcodec": "avc1.66.30", 64 | "tbr": 145.0, 65 | "height": 180, 66 | "width": 320, 67 | "ext": "mp4", 68 | "preference": null, 69 | "fps": null, 70 | "manifest_url": "https://srfvodhd-vh.akamaihd.net/i/vod/10vor10/2019/05/10vor10_20190529_215000_16196999_v_webcast_h264_,q40,q10,q20,q30,q50,q60,.mp4.csmil/master.m3u8?hdnts=exp=1559203034~acl=/i/vod/*~hmac=b8bb1625dd1d3eb431144663d0a7e24836faa9f7aaa86e695a1a06411db35117", 71 | "format_id": "HTTP-HLS-HD-145", 72 | "acodec": "mp4a.40.2" 73 | }, 74 | { 75 | "http_headers": { 76 | "Accept-Language": "en-us,en;q=0.5", 77 | "Accept-Encoding": "gzip, deflate", 78 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 79 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0", 80 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 81 | "Cookie": "_alid_=8bTWws6RQUzi7AUCjeHi/g==; hdntl=exp=1559289403~acl=%2fz%2fvod%2f*~data=hdntl~hmac=24eb3e287a84d45145ee8184ddb5c7a87b9c3b5a9d868991acacc36aa63c248b" 82 | }, 83 | "protocol": "m3u8_native", 84 | "format": "HTTP-HLS-SD-145 - 320x180", 85 | "url": "https://srfvodhd-vh.akamaihd.net/i/vod/10vor10/2019/05/10vor10_20190529_215000_16196999_v_webcast_h264_,q40,q10,q20,q30,q50,.mp4.csmil/index_1_av.m3u8?null=0", 86 | "vcodec": "avc1.66.30", 87 | "tbr": 145.0, 88 | "height": 180, 89 | "width": 320, 90 | "ext": "mp4", 91 | "preference": null, 92 | "fps": null, 93 | "manifest_url": "https://srfvodhd-vh.akamaihd.net/i/vod/10vor10/2019/05/10vor10_20190529_215000_16196999_v_webcast_h264_,q40,q10,q20,q30,q50,.mp4.csmil/master.m3u8?hdnts=exp=1559203034~acl=/i/vod/*~hmac=b8bb1625dd1d3eb431144663d0a7e24836faa9f7aaa86e695a1a06411db35117", 94 | "format_id": "HTTP-HLS-SD-145", 95 | "acodec": "mp4a.40.2" 96 | }, 97 | { 98 | "http_headers": { 99 | "Accept-Language": "en-us,en;q=0.5", 100 | "Accept-Encoding": "gzip, deflate", 101 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 102 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0", 103 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 104 | "Cookie": "_alid_=8bTWws6RQUzi7AUCjeHi/g==; hdntl=exp=1559289403~acl=%2fz%2fvod%2f*~data=hdntl~hmac=24eb3e287a84d45145ee8184ddb5c7a87b9c3b5a9d868991acacc36aa63c248b" 105 | }, 106 | "protocol": "m3u8_native", 107 | "format": "HTTP-HLS-HD-346 - 480x272", 108 | "url": "https://srfvodhd-vh.akamaihd.net/i/vod/10vor10/2019/05/10vor10_20190529_215000_16196999_v_webcast_h264_,q40,q10,q20,q30,q50,q60,.mp4.csmil/index_2_av.m3u8?null=0", 109 | "vcodec": "avc1.66.30", 110 | "tbr": 346.0, 111 | "height": 272, 112 | "width": 480, 113 | "ext": "mp4", 114 | "preference": null, 115 | "fps": null, 116 | "manifest_url": "https://srfvodhd-vh.akamaihd.net/i/vod/10vor10/2019/05/10vor10_20190529_215000_16196999_v_webcast_h264_,q40,q10,q20,q30,q50,q60,.mp4.csmil/master.m3u8?hdnts=exp=1559203034~acl=/i/vod/*~hmac=b8bb1625dd1d3eb431144663d0a7e24836faa9f7aaa86e695a1a06411db35117", 117 | "format_id": "HTTP-HLS-HD-346", 118 | "acodec": "mp4a.40.2" 119 | }, 120 | { 121 | "http_headers": { 122 | "Accept-Language": "en-us,en;q=0.5", 123 | "Accept-Encoding": "gzip, deflate", 124 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 125 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0", 126 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 127 | "Cookie": "_alid_=8bTWws6RQUzi7AUCjeHi/g==; hdntl=exp=1559289403~acl=%2fz%2fvod%2f*~data=hdntl~hmac=24eb3e287a84d45145ee8184ddb5c7a87b9c3b5a9d868991acacc36aa63c248b" 128 | }, 129 | "protocol": "m3u8_native", 130 | "format": "HTTP-HLS-SD-346 - 480x272", 131 | "url": "https://srfvodhd-vh.akamaihd.net/i/vod/10vor10/2019/05/10vor10_20190529_215000_16196999_v_webcast_h264_,q40,q10,q20,q30,q50,.mp4.csmil/index_2_av.m3u8?null=0", 132 | "vcodec": "avc1.66.30", 133 | "tbr": 346.0, 134 | "height": 272, 135 | "width": 480, 136 | "ext": "mp4", 137 | "preference": null, 138 | "fps": null, 139 | "manifest_url": "https://srfvodhd-vh.akamaihd.net/i/vod/10vor10/2019/05/10vor10_20190529_215000_16196999_v_webcast_h264_,q40,q10,q20,q30,q50,.mp4.csmil/master.m3u8?hdnts=exp=1559203034~acl=/i/vod/*~hmac=b8bb1625dd1d3eb431144663d0a7e24836faa9f7aaa86e695a1a06411db35117", 140 | "format_id": "HTTP-HLS-SD-346", 141 | "acodec": "mp4a.40.2" 142 | }, 143 | { 144 | "http_headers": { 145 | "Accept-Language": "en-us,en;q=0.5", 146 | "Accept-Encoding": "gzip, deflate", 147 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 148 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0", 149 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 150 | "Cookie": "_alid_=8bTWws6RQUzi7AUCjeHi/g==; hdntl=exp=1559289403~acl=%2fz%2fvod%2f*~data=hdntl~hmac=24eb3e287a84d45145ee8184ddb5c7a87b9c3b5a9d868991acacc36aa63c248b" 151 | }, 152 | "protocol": "m3u8_native", 153 | "format": "HTTP-HLS-HD-693 - 512x288", 154 | "url": "https://srfvodhd-vh.akamaihd.net/i/vod/10vor10/2019/05/10vor10_20190529_215000_16196999_v_webcast_h264_,q40,q10,q20,q30,q50,q60,.mp4.csmil/index_3_av.m3u8?null=0", 155 | "vcodec": "avc1.77.30", 156 | "tbr": 693.0, 157 | "height": 288, 158 | "width": 512, 159 | "ext": "mp4", 160 | "preference": null, 161 | "fps": null, 162 | "manifest_url": "https://srfvodhd-vh.akamaihd.net/i/vod/10vor10/2019/05/10vor10_20190529_215000_16196999_v_webcast_h264_,q40,q10,q20,q30,q50,q60,.mp4.csmil/master.m3u8?hdnts=exp=1559203034~acl=/i/vod/*~hmac=b8bb1625dd1d3eb431144663d0a7e24836faa9f7aaa86e695a1a06411db35117", 163 | "format_id": "HTTP-HLS-HD-693", 164 | "acodec": "mp4a.40.2" 165 | }, 166 | { 167 | "http_headers": { 168 | "Accept-Language": "en-us,en;q=0.5", 169 | "Accept-Encoding": "gzip, deflate", 170 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 171 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0", 172 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 173 | "Cookie": "_alid_=8bTWws6RQUzi7AUCjeHi/g==; hdntl=exp=1559289403~acl=%2fz%2fvod%2f*~data=hdntl~hmac=24eb3e287a84d45145ee8184ddb5c7a87b9c3b5a9d868991acacc36aa63c248b" 174 | }, 175 | "protocol": "m3u8_native", 176 | "format": "HTTP-HLS-SD-693 - 512x288", 177 | "url": "https://srfvodhd-vh.akamaihd.net/i/vod/10vor10/2019/05/10vor10_20190529_215000_16196999_v_webcast_h264_,q40,q10,q20,q30,q50,.mp4.csmil/index_3_av.m3u8?null=0", 178 | "vcodec": "avc1.77.30", 179 | "tbr": 693.0, 180 | "height": 288, 181 | "width": 512, 182 | "ext": "mp4", 183 | "preference": null, 184 | "fps": null, 185 | "manifest_url": "https://srfvodhd-vh.akamaihd.net/i/vod/10vor10/2019/05/10vor10_20190529_215000_16196999_v_webcast_h264_,q40,q10,q20,q30,q50,.mp4.csmil/master.m3u8?hdnts=exp=1559203034~acl=/i/vod/*~hmac=b8bb1625dd1d3eb431144663d0a7e24836faa9f7aaa86e695a1a06411db35117", 186 | "format_id": "HTTP-HLS-SD-693", 187 | "acodec": "mp4a.40.2" 188 | }, 189 | { 190 | "http_headers": { 191 | "Accept-Language": "en-us,en;q=0.5", 192 | "Accept-Encoding": "gzip, deflate", 193 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 194 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0", 195 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 196 | "Cookie": "_alid_=8bTWws6RQUzi7AUCjeHi/g==; hdntl=exp=1559289403~acl=%2fz%2fvod%2f*~data=hdntl~hmac=24eb3e287a84d45145ee8184ddb5c7a87b9c3b5a9d868991acacc36aa63c248b" 197 | }, 198 | "protocol": "m3u8_native", 199 | "format": "HTTP-HLS-HD-1325 - 640x360", 200 | "url": "https://srfvodhd-vh.akamaihd.net/i/vod/10vor10/2019/05/10vor10_20190529_215000_16196999_v_webcast_h264_,q40,q10,q20,q30,q50,q60,.mp4.csmil/index_0_av.m3u8?null=0", 201 | "vcodec": "avc1.77.30", 202 | "tbr": 1325.0, 203 | "height": 360, 204 | "width": 640, 205 | "ext": "mp4", 206 | "preference": null, 207 | "fps": null, 208 | "manifest_url": "https://srfvodhd-vh.akamaihd.net/i/vod/10vor10/2019/05/10vor10_20190529_215000_16196999_v_webcast_h264_,q40,q10,q20,q30,q50,q60,.mp4.csmil/master.m3u8?hdnts=exp=1559203034~acl=/i/vod/*~hmac=b8bb1625dd1d3eb431144663d0a7e24836faa9f7aaa86e695a1a06411db35117", 209 | "format_id": "HTTP-HLS-HD-1325", 210 | "acodec": "mp4a.40.2" 211 | }, 212 | { 213 | "http_headers": { 214 | "Accept-Language": "en-us,en;q=0.5", 215 | "Accept-Encoding": "gzip, deflate", 216 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 217 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0", 218 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 219 | "Cookie": "_alid_=8bTWws6RQUzi7AUCjeHi/g==; hdntl=exp=1559289403~acl=%2fz%2fvod%2f*~data=hdntl~hmac=24eb3e287a84d45145ee8184ddb5c7a87b9c3b5a9d868991acacc36aa63c248b" 220 | }, 221 | "protocol": "m3u8_native", 222 | "format": "HTTP-HLS-SD-1325 - 640x360", 223 | "url": "https://srfvodhd-vh.akamaihd.net/i/vod/10vor10/2019/05/10vor10_20190529_215000_16196999_v_webcast_h264_,q40,q10,q20,q30,q50,.mp4.csmil/index_0_av.m3u8?null=0", 224 | "vcodec": "avc1.77.30", 225 | "tbr": 1325.0, 226 | "height": 360, 227 | "width": 640, 228 | "ext": "mp4", 229 | "preference": null, 230 | "fps": null, 231 | "manifest_url": "https://srfvodhd-vh.akamaihd.net/i/vod/10vor10/2019/05/10vor10_20190529_215000_16196999_v_webcast_h264_,q40,q10,q20,q30,q50,.mp4.csmil/master.m3u8?hdnts=exp=1559203034~acl=/i/vod/*~hmac=b8bb1625dd1d3eb431144663d0a7e24836faa9f7aaa86e695a1a06411db35117", 232 | "format_id": "HTTP-HLS-SD-1325", 233 | "acodec": "mp4a.40.2" 234 | }, 235 | { 236 | "http_headers": { 237 | "Accept-Language": "en-us,en;q=0.5", 238 | "Accept-Encoding": "gzip, deflate", 239 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 240 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0", 241 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 242 | "Cookie": "_alid_=8bTWws6RQUzi7AUCjeHi/g==; hdntl=exp=1559289403~acl=%2fz%2fvod%2f*~data=hdntl~hmac=24eb3e287a84d45145ee8184ddb5c7a87b9c3b5a9d868991acacc36aa63c248b" 243 | }, 244 | "protocol": "m3u8_native", 245 | "format": "HTTP-HLS-HD-2125 - 960x544", 246 | "url": "https://srfvodhd-vh.akamaihd.net/i/vod/10vor10/2019/05/10vor10_20190529_215000_16196999_v_webcast_h264_,q40,q10,q20,q30,q50,q60,.mp4.csmil/index_4_av.m3u8?null=0", 247 | "vcodec": "avc1.77.30", 248 | "tbr": 2125.0, 249 | "height": 544, 250 | "width": 960, 251 | "ext": "mp4", 252 | "preference": null, 253 | "fps": null, 254 | "manifest_url": "https://srfvodhd-vh.akamaihd.net/i/vod/10vor10/2019/05/10vor10_20190529_215000_16196999_v_webcast_h264_,q40,q10,q20,q30,q50,q60,.mp4.csmil/master.m3u8?hdnts=exp=1559203034~acl=/i/vod/*~hmac=b8bb1625dd1d3eb431144663d0a7e24836faa9f7aaa86e695a1a06411db35117", 255 | "format_id": "HTTP-HLS-HD-2125", 256 | "acodec": "mp4a.40.2" 257 | }, 258 | { 259 | "http_headers": { 260 | "Accept-Language": "en-us,en;q=0.5", 261 | "Accept-Encoding": "gzip, deflate", 262 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 263 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0", 264 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 265 | "Cookie": "_alid_=8bTWws6RQUzi7AUCjeHi/g==; hdntl=exp=1559289403~acl=%2fz%2fvod%2f*~data=hdntl~hmac=24eb3e287a84d45145ee8184ddb5c7a87b9c3b5a9d868991acacc36aa63c248b" 266 | }, 267 | "protocol": "m3u8_native", 268 | "format": "HTTP-HLS-SD-2125 - 960x544", 269 | "url": "https://srfvodhd-vh.akamaihd.net/i/vod/10vor10/2019/05/10vor10_20190529_215000_16196999_v_webcast_h264_,q40,q10,q20,q30,q50,.mp4.csmil/index_4_av.m3u8?null=0", 270 | "vcodec": "avc1.77.30", 271 | "tbr": 2125.0, 272 | "height": 544, 273 | "width": 960, 274 | "ext": "mp4", 275 | "preference": null, 276 | "fps": null, 277 | "manifest_url": "https://srfvodhd-vh.akamaihd.net/i/vod/10vor10/2019/05/10vor10_20190529_215000_16196999_v_webcast_h264_,q40,q10,q20,q30,q50,.mp4.csmil/master.m3u8?hdnts=exp=1559203034~acl=/i/vod/*~hmac=b8bb1625dd1d3eb431144663d0a7e24836faa9f7aaa86e695a1a06411db35117", 278 | "format_id": "HTTP-HLS-SD-2125", 279 | "acodec": "mp4a.40.2" 280 | }, 281 | { 282 | "http_headers": { 283 | "Accept-Language": "en-us,en;q=0.5", 284 | "Accept-Encoding": "gzip, deflate", 285 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 286 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0", 287 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 288 | "Cookie": "_alid_=8bTWws6RQUzi7AUCjeHi/g==; hdntl=exp=1559289403~acl=%2fz%2fvod%2f*~data=hdntl~hmac=24eb3e287a84d45145ee8184ddb5c7a87b9c3b5a9d868991acacc36aa63c248b" 289 | }, 290 | "protocol": "m3u8_native", 291 | "format": "HTTP-HLS-HD-3625 - 1280x720", 292 | "url": "https://srfvodhd-vh.akamaihd.net/i/vod/10vor10/2019/05/10vor10_20190529_215000_16196999_v_webcast_h264_,q40,q10,q20,q30,q50,q60,.mp4.csmil/index_5_av.m3u8?null=0", 293 | "vcodec": "avc1.77.30", 294 | "tbr": 3625.0, 295 | "height": 720, 296 | "width": 1280, 297 | "ext": "mp4", 298 | "preference": null, 299 | "fps": null, 300 | "manifest_url": "https://srfvodhd-vh.akamaihd.net/i/vod/10vor10/2019/05/10vor10_20190529_215000_16196999_v_webcast_h264_,q40,q10,q20,q30,q50,q60,.mp4.csmil/master.m3u8?hdnts=exp=1559203034~acl=/i/vod/*~hmac=b8bb1625dd1d3eb431144663d0a7e24836faa9f7aaa86e695a1a06411db35117", 301 | "format_id": "HTTP-HLS-HD-3625", 302 | "acodec": "mp4a.40.2" 303 | }, 304 | { 305 | "protocol": "https", 306 | "format": "HTTP-SD - unknown", 307 | "url": "https://podcastsource.sf.tv/nps/247790734/1489.16/10vor10+vom+29.05.2019/podcast/10vor10/2019/05/10vor10_20190529_215000_16196999_v_podcast_h264_q10.mp4?assetId=dbb43c6b-4285-46cc-bbb1-fc0cc92e2938", 308 | "http_headers": { 309 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 310 | "Accept-Language": "en-us,en;q=0.5", 311 | "Accept-Encoding": "gzip, deflate", 312 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 313 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 314 | }, 315 | "ext": "mp4", 316 | "preference": 2, 317 | "format_id": "HTTP-SD" 318 | }, 319 | { 320 | "protocol": "https", 321 | "format": "HTTP-HD - unknown", 322 | "url": "https://podcastsource.sf.tv/nps/675944048/1489.16/10vor10+vom+29.05.2019/podcast/10vor10/2019/05/10vor10_20190529_215000_16196999_v_podcast_h264_q30.mp4?assetId=dbb43c6b-4285-46cc-bbb1-fc0cc92e2938", 323 | "http_headers": { 324 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 325 | "Accept-Language": "en-us,en;q=0.5", 326 | "Accept-Encoding": "gzip, deflate", 327 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 328 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 329 | }, 330 | "ext": "mp4", 331 | "preference": 4, 332 | "format_id": "HTTP-HD" 333 | } 334 | ], 335 | "_filename": "10vor10 vom 29.05.2019-dbb43c6b-4285-46cc-bbb1-fc0cc92e2938.mp4", 336 | "preference": 4, 337 | "format_id": "HTTP-HD", 338 | "playlist_index": null, 339 | "http_headers": { 340 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 341 | "Accept-Language": "en-us,en;q=0.5", 342 | "Accept-Encoding": "gzip, deflate", 343 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 344 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 345 | }, 346 | "playlist": null, 347 | "thumbnails": [ 348 | { 349 | "url": "https://ws.srf.ch/asset/image/audio/61cecb59-0166-409c-8536-3cd42194100b/EPISODE_IMAGE/1559161393.png", 350 | "id": "3c5d57e3-0956-42a4-a023-3f1e0663905c" 351 | } 352 | ], 353 | "title": "10vor10 vom 29.05.2019", 354 | "url": "https://podcastsource.sf.tv/nps/675944048/1489.16/10vor10+vom+29.05.2019/podcast/10vor10/2019/05/10vor10_20190529_215000_16196999_v_podcast_h264_q30.mp4?assetId=dbb43c6b-4285-46cc-bbb1-fc0cc92e2938", 355 | "extractor_key": "SRGSSR", 356 | "format": "HTTP-HD - unknown", 357 | "id": "dbb43c6b-4285-46cc-bbb1-fc0cc92e2938", 358 | "ext": "mp4", 359 | "webpage_url": "srgssr:srf:video:dbb43c6b-4285-46cc-bbb1-fc0cc92e2938", 360 | "timestamp": 1559161091, 361 | "fulltitle": "10vor10 vom 29.05.2019", 362 | "thumbnail": "https://ws.srf.ch/asset/image/audio/61cecb59-0166-409c-8536-3cd42194100b/EPISODE_IMAGE/1559161393.png", 363 | "webpage_url_basename": "srf:video:dbb43c6b-4285-46cc-bbb1-fc0cc92e2938" 364 | } -------------------------------------------------------------------------------- /test/samples/primitive.json: -------------------------------------------------------------------------------- 1 | { 2 | "upload_date": "20170922", 3 | "extractor": "youtube", 4 | "series": null, 5 | "format": "137 - 1920x1080 (1080p)+140 - audio only (DASH audio)", 6 | "vbr": null, 7 | "chapters": null, 8 | "height": 1080, 9 | "like_count": 460087, 10 | "duration": 646, 11 | "fulltitle": "Primitive Technology: Mud Bricks", 12 | "playlist_index": null, 13 | "album": null, 14 | "view_count": 27710622, 15 | "playlist": null, 16 | "title": "Primitive Technology: Mud Bricks", 17 | "_filename": "Primitive Technology - Mud Bricks-D59v74k5flU.mp4", 18 | "creator": null, 19 | "ext": "mp4", 20 | "id": "D59v74k5flU", 21 | "dislike_count": 12031, 22 | "average_rating": null, 23 | "abr": 128, 24 | "uploader_url": "http://www.youtube.com/channel/UCAL3JXZSzSm8AlZyD3nQdBA", 25 | "categories": [ 26 | "People & Blogs" 27 | ], 28 | "fps": 24, 29 | "stretched_ratio": null, 30 | "season_number": null, 31 | "annotations": null, 32 | "webpage_url_basename": "watch", 33 | "acodec": "mp4a.40.2", 34 | "display_id": "D59v74k5flU", 35 | "requested_formats": [ 36 | { 37 | "http_headers": { 38 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 39 | "Accept-Language": "en-us,en;q=0.5", 40 | "Accept-Encoding": "gzip, deflate", 41 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 42 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 43 | }, 44 | "tbr": 4330.838, 45 | "protocol": "https", 46 | "format": "137 - 1920x1080 (1080p)", 47 | "url": "https://r4---sn-2uuxa3vh-q2nl.googlevideo.com/videoplayback?id=o-ABIN6FxSpbLOCduVEMCbksuYAHOxUntuDSYufj-kTGm4&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397&itag=137&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2nl%2Csn-npoeenl7&ms=au%2Crdu&mv=m&pl=26&ei=YiDuXIabG6bKz7sPhumdqAQ&initcwndbps=290000&mime=video%2Fmp4&gir=yes&clen=201296228&dur=646.062&lmt=1554494148790640&mt=1559109614&fvip=5&keepalive=yes&c=WEB&txp=5535432&ip=36.84.63.201&ipbits=0&expire=1559131330&sparams=ip%2Cipbits%2Cexpire%2Cid%2Caitags%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=81879F5BB01A3406ACFFF8AE67035FFD00A2245C.63A480F86EF51BA3D6964EAB5AF03D46BCAD2276&key=yt8&ratebypass=yes", 48 | "vcodec": "avc1.640028", 49 | "format_note": "1080p", 50 | "height": 1080, 51 | "downloader_options": { 52 | "http_chunk_size": 10485760 53 | }, 54 | "width": 1920, 55 | "ext": "mp4", 56 | "filesize": 201296228, 57 | "fps": 24, 58 | "format_id": "137", 59 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 60 | "quality": -1, 61 | "acodec": "none" 62 | }, 63 | { 64 | "http_headers": { 65 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 66 | "Accept-Language": "en-us,en;q=0.5", 67 | "Accept-Encoding": "gzip, deflate", 68 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 69 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 70 | }, 71 | "tbr": 130.648, 72 | "container": "m4a_dash", 73 | "format": "140 - audio only (DASH audio)", 74 | "url": "https://r4---sn-2uuxa3vh-q2nl.googlevideo.com/videoplayback?id=o-ABIN6FxSpbLOCduVEMCbksuYAHOxUntuDSYufj-kTGm4&itag=140&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2nl%2Csn-npoeenl7&ms=au%2Crdu&mv=m&pl=26&ei=YiDuXIabG6bKz7sPhumdqAQ&initcwndbps=290000&mime=audio%2Fmp4&gir=yes&clen=10457427&dur=646.118&lmt=1554492651886230&mt=1559109614&fvip=5&keepalive=yes&c=WEB&txp=5535432&ip=36.84.63.201&ipbits=0&expire=1559131330&sparams=ip%2Cipbits%2Cexpire%2Cid%2Citag%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=77B87CFA2D57E6D143780FCD36960EF475AF372F.A0A0423283D31A8C761D1F809AC99F3C0C89AA38&key=yt8&ratebypass=yes", 75 | "vcodec": "none", 76 | "format_note": "DASH audio", 77 | "abr": 128, 78 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 79 | "downloader_options": { 80 | "http_chunk_size": 10485760 81 | }, 82 | "ext": "m4a", 83 | "filesize": 10457427, 84 | "protocol": "https", 85 | "format_id": "140", 86 | "quality": -1, 87 | "acodec": "mp4a.40.2" 88 | } 89 | ], 90 | "automatic_captions": {}, 91 | "description": "(Turn on captions [CC] in the lower right corner for more information while viewing.)\nI made a brick mold that makes bricks 25 x 12.5 x 7.5 cm from wood. A log was split and mortise and tenon joints were carved using a stone chisel and sharp rocks. The mold was lashed together with cane to prevent it from coming apart when used.\n\nNext, I made a mixture of mud and palm fiber to make the bricks. This was then placed into the mold to be shaped and taken to a drying area. 140 bricks were made.\nWhen dry, the bricks were then assembled into a kiln. 32 roof tiles were then made of mud and fired in the kiln. It only took 3 hours to fire the tiles sufficiently. The mud bricks and tiles were a bit weaker than objects made from my regular clay source because of the silt, sand and gravel content of the soil. Because of this, I will look at refining mud into clay in future projects instead of just using mud.\n\nInterestingly, the kiln got hot enough so that iron oxide containing stones began to melt out of the tiles. This is not metallic iron, but only slag (iron oxide and silica) and the temperature was probably not very high, but only enough to slowly melt or soften the stones when heated for 3 hours.\n\nThe kiln performed as well as the monolithic ones I've built in the past and has a good volume. It can also be taken down and transported to other areas. But the bricks are very brittle and next time I'd use better clay devoid of sand/silt, and use grog instead of temper made of plant fiber which burns out in firing. The mold works satisfactorily. I aim to make better quality bricks for use in furnaces and buildings in future.\nWordpress: https://primitivetechnology.wordpress.com\nPatreon page: https://www.patreon.com/user?u=2945881\nI have no face book page, instagram, twitter etc. Beware of fake pages.", 92 | "tags": [], 93 | "track": null, 94 | "requested_subtitles": null, 95 | "start_time": null, 96 | "uploader": "Primitive Technology", 97 | "format_id": "137+140", 98 | "episode_number": null, 99 | "uploader_id": "UCAL3JXZSzSm8AlZyD3nQdBA", 100 | "subtitles": {}, 101 | "release_year": null, 102 | "thumbnails": [ 103 | { 104 | "url": "https://i.ytimg.com/vi/D59v74k5flU/maxresdefault.jpg", 105 | "id": "0" 106 | } 107 | ], 108 | "license": null, 109 | "artist": null, 110 | "extractor_key": "Youtube", 111 | "release_date": null, 112 | "alt_title": null, 113 | "thumbnail": "https://i.ytimg.com/vi/D59v74k5flU/maxresdefault.jpg", 114 | "channel_id": "UCAL3JXZSzSm8AlZyD3nQdBA", 115 | "is_live": null, 116 | "width": 1920, 117 | "end_time": null, 118 | "webpage_url": "https://www.youtube.com/watch?v=D59v74k5flU", 119 | "formats": [ 120 | { 121 | "http_headers": { 122 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 123 | "Accept-Language": "en-us,en;q=0.5", 124 | "Accept-Encoding": "gzip, deflate", 125 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 126 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 127 | }, 128 | "format_note": "DASH audio", 129 | "protocol": "https", 130 | "format": "249 - audio only (DASH audio)", 131 | "url": "https://r4---sn-2uuxa3vh-q2nl.googlevideo.com/videoplayback?id=o-ABIN6FxSpbLOCduVEMCbksuYAHOxUntuDSYufj-kTGm4&itag=249&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2nl%2Csn-npoeenl7&ms=au%2Crdu&mv=m&pl=26&ei=YiDuXIabG6bKz7sPhumdqAQ&initcwndbps=290000&mime=audio%2Fwebm&gir=yes&clen=3308186&dur=646.081&lmt=1548415482203538&mt=1559109614&fvip=5&keepalive=yes&c=WEB&txp=5511222&ip=36.84.63.201&ipbits=0&expire=1559131330&sparams=ip%2Cipbits%2Cexpire%2Cid%2Citag%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=4424C783F11269ACD9563993777B97700C0F499F.833925BCECD175B7DBA8FCD43215ADB1C097B864&key=yt8&ratebypass=yes", 132 | "vcodec": "none", 133 | "tbr": 50.448, 134 | "abr": 50, 135 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 136 | "downloader_options": { 137 | "http_chunk_size": 10485760 138 | }, 139 | "ext": "webm", 140 | "filesize": 3308186, 141 | "format_id": "249", 142 | "quality": -1, 143 | "acodec": "opus" 144 | }, 145 | { 146 | "http_headers": { 147 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 148 | "Accept-Language": "en-us,en;q=0.5", 149 | "Accept-Encoding": "gzip, deflate", 150 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 151 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 152 | }, 153 | "format_note": "DASH audio", 154 | "protocol": "https", 155 | "format": "250 - audio only (DASH audio)", 156 | "url": "https://r4---sn-2uuxa3vh-q2nl.googlevideo.com/videoplayback?id=o-ABIN6FxSpbLOCduVEMCbksuYAHOxUntuDSYufj-kTGm4&itag=250&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2nl%2Csn-npoeenl7&ms=au%2Crdu&mv=m&pl=26&ei=YiDuXIabG6bKz7sPhumdqAQ&initcwndbps=290000&mime=audio%2Fwebm&gir=yes&clen=4129970&dur=646.081&lmt=1548415481822750&mt=1559109614&fvip=5&keepalive=yes&c=WEB&txp=5511222&ip=36.84.63.201&ipbits=0&expire=1559131330&sparams=ip%2Cipbits%2Cexpire%2Cid%2Citag%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=0B97420242AD295D49C485F4B503C4A69121B412.B647CA4295625F309A002DA0DEAEA38C189522D0&key=yt8&ratebypass=yes", 157 | "vcodec": "none", 158 | "tbr": 62.993, 159 | "abr": 70, 160 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 161 | "downloader_options": { 162 | "http_chunk_size": 10485760 163 | }, 164 | "ext": "webm", 165 | "filesize": 4129970, 166 | "format_id": "250", 167 | "quality": -1, 168 | "acodec": "opus" 169 | }, 170 | { 171 | "http_headers": { 172 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 173 | "Accept-Language": "en-us,en;q=0.5", 174 | "Accept-Encoding": "gzip, deflate", 175 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 176 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 177 | }, 178 | "format_note": "DASH audio", 179 | "protocol": "https", 180 | "format": "171 - audio only (DASH audio)", 181 | "url": "https://r4---sn-2uuxa3vh-q2nl.googlevideo.com/videoplayback?id=o-ABIN6FxSpbLOCduVEMCbksuYAHOxUntuDSYufj-kTGm4&itag=171&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2nl%2Csn-npoeenl7&ms=au%2Crdu&mv=m&pl=26&ei=YiDuXIabG6bKz7sPhumdqAQ&initcwndbps=290000&mime=audio%2Fwebm&gir=yes&clen=7170772&dur=646.064&lmt=1548415483002700&mt=1559109614&fvip=5&keepalive=yes&c=WEB&txp=5511222&ip=36.84.63.201&ipbits=0&expire=1559131330&sparams=ip%2Cipbits%2Cexpire%2Cid%2Citag%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=28CE3676AF275431F3B77E1C38BA696D1E181427.2AE300E2D3177D2FB538BC9522DD447E5959BA7C&key=yt8&ratebypass=yes", 182 | "vcodec": "none", 183 | "tbr": 98.809, 184 | "abr": 128, 185 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 186 | "downloader_options": { 187 | "http_chunk_size": 10485760 188 | }, 189 | "ext": "webm", 190 | "filesize": 7170772, 191 | "format_id": "171", 192 | "quality": -1, 193 | "acodec": "vorbis" 194 | }, 195 | { 196 | "http_headers": { 197 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 198 | "Accept-Language": "en-us,en;q=0.5", 199 | "Accept-Encoding": "gzip, deflate", 200 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 201 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 202 | }, 203 | "format_note": "DASH audio", 204 | "protocol": "https", 205 | "format": "251 - audio only (DASH audio)", 206 | "url": "https://r4---sn-2uuxa3vh-q2nl.googlevideo.com/videoplayback?id=o-ABIN6FxSpbLOCduVEMCbksuYAHOxUntuDSYufj-kTGm4&itag=251&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2nl%2Csn-npoeenl7&ms=au%2Crdu&mv=m&pl=26&ei=YiDuXIabG6bKz7sPhumdqAQ&initcwndbps=290000&mime=audio%2Fwebm&gir=yes&clen=7626588&dur=646.081&lmt=1548415482115797&mt=1559109614&fvip=5&keepalive=yes&c=WEB&txp=5511222&ip=36.84.63.201&ipbits=0&expire=1559131330&sparams=ip%2Cipbits%2Cexpire%2Cid%2Citag%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=26008F34DECCB6EBCC0BF01A93F5248AEDBEE9E8.C348C02F40C00FCEF088D2B37CFD5B3E19C10930&key=yt8&ratebypass=yes", 207 | "vcodec": "none", 208 | "tbr": 114.984, 209 | "abr": 160, 210 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 211 | "downloader_options": { 212 | "http_chunk_size": 10485760 213 | }, 214 | "ext": "webm", 215 | "filesize": 7626588, 216 | "format_id": "251", 217 | "quality": -1, 218 | "acodec": "opus" 219 | }, 220 | { 221 | "http_headers": { 222 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 223 | "Accept-Language": "en-us,en;q=0.5", 224 | "Accept-Encoding": "gzip, deflate", 225 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 226 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 227 | }, 228 | "tbr": 130.648, 229 | "container": "m4a_dash", 230 | "format": "140 - audio only (DASH audio)", 231 | "url": "https://r4---sn-2uuxa3vh-q2nl.googlevideo.com/videoplayback?id=o-ABIN6FxSpbLOCduVEMCbksuYAHOxUntuDSYufj-kTGm4&itag=140&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2nl%2Csn-npoeenl7&ms=au%2Crdu&mv=m&pl=26&ei=YiDuXIabG6bKz7sPhumdqAQ&initcwndbps=290000&mime=audio%2Fmp4&gir=yes&clen=10457427&dur=646.118&lmt=1554492651886230&mt=1559109614&fvip=5&keepalive=yes&c=WEB&txp=5535432&ip=36.84.63.201&ipbits=0&expire=1559131330&sparams=ip%2Cipbits%2Cexpire%2Cid%2Citag%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=77B87CFA2D57E6D143780FCD36960EF475AF372F.A0A0423283D31A8C761D1F809AC99F3C0C89AA38&key=yt8&ratebypass=yes", 232 | "vcodec": "none", 233 | "format_note": "DASH audio", 234 | "abr": 128, 235 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 236 | "downloader_options": { 237 | "http_chunk_size": 10485760 238 | }, 239 | "ext": "m4a", 240 | "filesize": 10457427, 241 | "protocol": "https", 242 | "format_id": "140", 243 | "quality": -1, 244 | "acodec": "mp4a.40.2" 245 | }, 246 | { 247 | "http_headers": { 248 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 249 | "Accept-Language": "en-us,en;q=0.5", 250 | "Accept-Encoding": "gzip, deflate", 251 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 252 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 253 | }, 254 | "format_note": "144p", 255 | "protocol": "https", 256 | "format": "394 - 256x144 (144p)", 257 | "url": "https://r4---sn-2uuxa3vh-q2nl.googlevideo.com/videoplayback?id=o-ABIN6FxSpbLOCduVEMCbksuYAHOxUntuDSYufj-kTGm4&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397&itag=394&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2nl%2Csn-npoeenl7&ms=au%2Crdu&mv=m&pl=26&ei=YiDuXIabG6bKz7sPhumdqAQ&initcwndbps=290000&mime=video%2Fmp4&gir=yes&clen=6560446&dur=646.062&lmt=1548397567057280&mt=1559109614&fvip=5&keepalive=yes&c=WEB&txp=5532432&ip=36.84.63.201&ipbits=0&expire=1559131330&sparams=ip%2Cipbits%2Cexpire%2Cid%2Caitags%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=C61A6297774B426E8B6521FAE1134A5A8429927A.20889FA45D77FE1715935C6D4D7FC098E970244B&key=yt8&ratebypass=yes", 258 | "vcodec": "av01.0.05M.08", 259 | "tbr": 96.637, 260 | "height": 144, 261 | "downloader_options": { 262 | "http_chunk_size": 10485760 263 | }, 264 | "width": 256, 265 | "ext": "mp4", 266 | "filesize": 6560446, 267 | "fps": 24, 268 | "format_id": "394", 269 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 270 | "quality": -1, 271 | "acodec": "none" 272 | }, 273 | { 274 | "format_note": "144p", 275 | "protocol": "https", 276 | "format": "160 - 256x144 (144p)", 277 | "tbr": 110.799, 278 | "height": 144, 279 | "downloader_options": { 280 | "http_chunk_size": 10485760 281 | }, 282 | "format_id": "160", 283 | "quality": -1, 284 | "http_headers": { 285 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 286 | "Accept-Language": "en-us,en;q=0.5", 287 | "Accept-Encoding": "gzip, deflate", 288 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 289 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 290 | }, 291 | "url": "https://r4---sn-2uuxa3vh-q2nl.googlevideo.com/videoplayback?id=o-ABIN6FxSpbLOCduVEMCbksuYAHOxUntuDSYufj-kTGm4&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397&itag=160&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2nl%2Csn-npoeenl7&ms=au%2Crdu&mv=m&pl=26&ei=YiDuXIabG6bKz7sPhumdqAQ&initcwndbps=290000&mime=video%2Fmp4&gir=yes&clen=5835788&dur=646.062&lmt=1554493503338963&mt=1559109614&fvip=5&keepalive=yes&c=WEB&txp=5535432&ip=36.84.63.201&ipbits=0&expire=1559131330&sparams=ip%2Cipbits%2Cexpire%2Cid%2Caitags%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=E184657AEF925EAF12E9DEECDE648264C1137001.97AE5459721BC302DC174712E07E1284489A17F4&key=yt8&ratebypass=yes", 292 | "vcodec": "avc1.4d400c", 293 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 294 | "width": 256, 295 | "ext": "mp4", 296 | "filesize": 5835788, 297 | "fps": 24, 298 | "acodec": "none" 299 | }, 300 | { 301 | "http_headers": { 302 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 303 | "Accept-Language": "en-us,en;q=0.5", 304 | "Accept-Encoding": "gzip, deflate", 305 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 306 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 307 | }, 308 | "tbr": 137.238, 309 | "container": "webm", 310 | "format": "278 - 256x144 (144p)", 311 | "url": "https://r4---sn-2uuxa3vh-q2nl.googlevideo.com/videoplayback?id=o-ABIN6FxSpbLOCduVEMCbksuYAHOxUntuDSYufj-kTGm4&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397&itag=278&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2nl%2Csn-npoeenl7&ms=au%2Crdu&mv=m&pl=26&ei=YiDuXIabG6bKz7sPhumdqAQ&initcwndbps=290000&mime=video%2Fwebm&gir=yes&clen=7896265&dur=646.061&lmt=1548364733954263&mt=1559109614&fvip=5&keepalive=yes&c=WEB&txp=5535432&ip=36.84.63.201&ipbits=0&expire=1559131330&sparams=ip%2Cipbits%2Cexpire%2Cid%2Caitags%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=397C45A0E58A97DE1E37E966F0D4BD3280E81046.9C77ECBC927CBC97AA0ECE8401A3764409FE66C5&key=yt8&ratebypass=yes", 312 | "vcodec": "vp9", 313 | "format_note": "144p", 314 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 315 | "downloader_options": { 316 | "http_chunk_size": 10485760 317 | }, 318 | "width": 256, 319 | "ext": "webm", 320 | "filesize": 7896265, 321 | "fps": 24, 322 | "protocol": "https", 323 | "format_id": "278", 324 | "height": 144, 325 | "quality": -1, 326 | "acodec": "none" 327 | }, 328 | { 329 | "http_headers": { 330 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 331 | "Accept-Language": "en-us,en;q=0.5", 332 | "Accept-Encoding": "gzip, deflate", 333 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 334 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 335 | }, 336 | "format_note": "240p", 337 | "protocol": "https", 338 | "format": "395 - 426x240 (240p)", 339 | "url": "https://r4---sn-2uuxa3vh-q2nl.googlevideo.com/videoplayback?id=o-ABIN6FxSpbLOCduVEMCbksuYAHOxUntuDSYufj-kTGm4&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397&itag=395&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2nl%2Csn-npoeenl7&ms=au%2Crdu&mv=m&pl=26&ei=YiDuXIabG6bKz7sPhumdqAQ&initcwndbps=290000&mime=video%2Fmp4&gir=yes&clen=13915376&dur=646.062&lmt=1548398304650771&mt=1559109614&fvip=5&keepalive=yes&c=WEB&txp=5532432&ip=36.84.63.201&ipbits=0&expire=1559131330&sparams=ip%2Cipbits%2Cexpire%2Cid%2Caitags%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=EBA962EF4E58A26B23BFE222727E6753713A51A6.CE1C7D834ADC3027687BC0A372C0EBDAF8E95EAA&key=yt8&ratebypass=yes", 340 | "vcodec": "av01.0.05M.08", 341 | "tbr": 222.54, 342 | "height": 240, 343 | "downloader_options": { 344 | "http_chunk_size": 10485760 345 | }, 346 | "width": 426, 347 | "ext": "mp4", 348 | "filesize": 13915376, 349 | "fps": 24, 350 | "format_id": "395", 351 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 352 | "quality": -1, 353 | "acodec": "none" 354 | }, 355 | { 356 | "format_note": "240p", 357 | "protocol": "https", 358 | "format": "242 - 426x240 (240p)", 359 | "tbr": 231.424, 360 | "height": 240, 361 | "downloader_options": { 362 | "http_chunk_size": 10485760 363 | }, 364 | "format_id": "242", 365 | "quality": -1, 366 | "http_headers": { 367 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 368 | "Accept-Language": "en-us,en;q=0.5", 369 | "Accept-Encoding": "gzip, deflate", 370 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 371 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 372 | }, 373 | "url": "https://r4---sn-2uuxa3vh-q2nl.googlevideo.com/videoplayback?id=o-ABIN6FxSpbLOCduVEMCbksuYAHOxUntuDSYufj-kTGm4&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397&itag=242&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2nl%2Csn-npoeenl7&ms=au%2Crdu&mv=m&pl=26&ei=YiDuXIabG6bKz7sPhumdqAQ&initcwndbps=290000&mime=video%2Fwebm&gir=yes&clen=12864201&dur=646.061&lmt=1548364729972136&mt=1559109614&fvip=5&keepalive=yes&c=WEB&txp=5535432&ip=36.84.63.201&ipbits=0&expire=1559131330&sparams=ip%2Cipbits%2Cexpire%2Cid%2Caitags%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=E2BADBE2041D9A8BB06C7DB23CC44ABF0D9E416D.AF8ACF33488D604E845294D65AFB640320E2DBD3&key=yt8&ratebypass=yes", 374 | "vcodec": "vp9", 375 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 376 | "width": 426, 377 | "ext": "webm", 378 | "filesize": 12864201, 379 | "fps": 24, 380 | "acodec": "none" 381 | }, 382 | { 383 | "format_note": "240p", 384 | "protocol": "https", 385 | "format": "133 - 426x240 (240p)", 386 | "tbr": 335.145, 387 | "height": 240, 388 | "downloader_options": { 389 | "http_chunk_size": 10485760 390 | }, 391 | "format_id": "133", 392 | "quality": -1, 393 | "http_headers": { 394 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 395 | "Accept-Language": "en-us,en;q=0.5", 396 | "Accept-Encoding": "gzip, deflate", 397 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 398 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 399 | }, 400 | "url": "https://r4---sn-2uuxa3vh-q2nl.googlevideo.com/videoplayback?id=o-ABIN6FxSpbLOCduVEMCbksuYAHOxUntuDSYufj-kTGm4&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397&itag=133&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2nl%2Csn-npoeenl7&ms=au%2Crdu&mv=m&pl=26&ei=YiDuXIabG6bKz7sPhumdqAQ&initcwndbps=290000&mime=video%2Fmp4&gir=yes&clen=11684145&dur=646.062&lmt=1554493522661066&mt=1559109614&fvip=5&keepalive=yes&c=WEB&txp=5535432&ip=36.84.63.201&ipbits=0&expire=1559131330&sparams=ip%2Cipbits%2Cexpire%2Cid%2Caitags%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=27CFEFA3388ACF4E7EF39F68E8D9754671468E1A.7CE3936F3E7E6B16888708720E432D6FF5C29957&key=yt8&ratebypass=yes", 401 | "vcodec": "avc1.4d4015", 402 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 403 | "width": 426, 404 | "ext": "mp4", 405 | "filesize": 11684145, 406 | "fps": 24, 407 | "acodec": "none" 408 | }, 409 | { 410 | "http_headers": { 411 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 412 | "Accept-Language": "en-us,en;q=0.5", 413 | "Accept-Encoding": "gzip, deflate", 414 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 415 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 416 | }, 417 | "format_note": "360p", 418 | "protocol": "https", 419 | "format": "396 - 640x360 (360p)", 420 | "url": "https://r4---sn-2uuxa3vh-q2nl.googlevideo.com/videoplayback?id=o-ABIN6FxSpbLOCduVEMCbksuYAHOxUntuDSYufj-kTGm4&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397&itag=396&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2nl%2Csn-npoeenl7&ms=au%2Crdu&mv=m&pl=26&ei=YiDuXIabG6bKz7sPhumdqAQ&initcwndbps=290000&mime=video%2Fmp4&gir=yes&clen=25489686&dur=646.062&lmt=1548414666417123&mt=1559109614&fvip=5&keepalive=yes&c=WEB&txp=5532432&ip=36.84.63.201&ipbits=0&expire=1559131330&sparams=ip%2Cipbits%2Cexpire%2Cid%2Caitags%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=BAFC0A61F5EF261DC72D9DC2E48044A2D8522DA7.AE4FA207C7950C4A29C71CAC2B56AE169481430F&key=yt8&ratebypass=yes", 421 | "vcodec": "av01.0.05M.08", 422 | "tbr": 418.545, 423 | "height": 360, 424 | "downloader_options": { 425 | "http_chunk_size": 10485760 426 | }, 427 | "width": 640, 428 | "ext": "mp4", 429 | "filesize": 25489686, 430 | "fps": 24, 431 | "format_id": "396", 432 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 433 | "quality": -1, 434 | "acodec": "none" 435 | }, 436 | { 437 | "format_note": "360p", 438 | "protocol": "https", 439 | "format": "243 - 640x360 (360p)", 440 | "tbr": 422.132, 441 | "height": 360, 442 | "downloader_options": { 443 | "http_chunk_size": 10485760 444 | }, 445 | "format_id": "243", 446 | "quality": -1, 447 | "http_headers": { 448 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 449 | "Accept-Language": "en-us,en;q=0.5", 450 | "Accept-Encoding": "gzip, deflate", 451 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 452 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 453 | }, 454 | "url": "https://r4---sn-2uuxa3vh-q2nl.googlevideo.com/videoplayback?id=o-ABIN6FxSpbLOCduVEMCbksuYAHOxUntuDSYufj-kTGm4&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397&itag=243&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2nl%2Csn-npoeenl7&ms=au%2Crdu&mv=m&pl=26&ei=YiDuXIabG6bKz7sPhumdqAQ&initcwndbps=290000&mime=video%2Fwebm&gir=yes&clen=23515369&dur=646.061&lmt=1548364740117009&mt=1559109614&fvip=5&keepalive=yes&c=WEB&txp=5535432&ip=36.84.63.201&ipbits=0&expire=1559131330&sparams=ip%2Cipbits%2Cexpire%2Cid%2Caitags%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=5FC9AC527D15B0D7FB43D247D8C2775BA0A053CF.64E2447BDF36F93A7F38CBD7EE10ABC0C2965D9F&key=yt8&ratebypass=yes", 455 | "vcodec": "vp9", 456 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 457 | "width": 640, 458 | "ext": "webm", 459 | "filesize": 23515369, 460 | "fps": 24, 461 | "acodec": "none" 462 | }, 463 | { 464 | "format_note": "360p", 465 | "protocol": "https", 466 | "format": "134 - 640x360 (360p)", 467 | "tbr": 647.487, 468 | "height": 360, 469 | "downloader_options": { 470 | "http_chunk_size": 10485760 471 | }, 472 | "format_id": "134", 473 | "quality": -1, 474 | "http_headers": { 475 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 476 | "Accept-Language": "en-us,en;q=0.5", 477 | "Accept-Encoding": "gzip, deflate", 478 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 479 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 480 | }, 481 | "url": "https://r4---sn-2uuxa3vh-q2nl.googlevideo.com/videoplayback?id=o-ABIN6FxSpbLOCduVEMCbksuYAHOxUntuDSYufj-kTGm4&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397&itag=134&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2nl%2Csn-npoeenl7&ms=au%2Crdu&mv=m&pl=26&ei=YiDuXIabG6bKz7sPhumdqAQ&initcwndbps=290000&mime=video%2Fmp4&gir=yes&clen=24558572&dur=646.062&lmt=1554493562377486&mt=1559109614&fvip=5&keepalive=yes&c=WEB&txp=5535432&ip=36.84.63.201&ipbits=0&expire=1559131330&sparams=ip%2Cipbits%2Cexpire%2Cid%2Caitags%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=ECAD0BFFE6121C341E525B7ED5F614E90D592239.A0F5F49190D1E26B4A59AC595AD9FFBCAD0D8593&key=yt8&ratebypass=yes", 482 | "vcodec": "avc1.4d401e", 483 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 484 | "width": 640, 485 | "ext": "mp4", 486 | "filesize": 24558572, 487 | "fps": 24, 488 | "acodec": "none" 489 | }, 490 | { 491 | "http_headers": { 492 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 493 | "Accept-Language": "en-us,en;q=0.5", 494 | "Accept-Encoding": "gzip, deflate", 495 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 496 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 497 | }, 498 | "format_note": "480p", 499 | "protocol": "https", 500 | "format": "397 - 854x480 (480p)", 501 | "url": "https://r4---sn-2uuxa3vh-q2nl.googlevideo.com/videoplayback?id=o-ABIN6FxSpbLOCduVEMCbksuYAHOxUntuDSYufj-kTGm4&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397&itag=397&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2nl%2Csn-npoeenl7&ms=au%2Crdu&mv=m&pl=26&ei=YiDuXIabG6bKz7sPhumdqAQ&initcwndbps=290000&mime=video%2Fmp4&gir=yes&clen=44513704&dur=646.062&lmt=1548414032390983&mt=1559109614&fvip=5&keepalive=yes&c=WEB&txp=5532432&ip=36.84.63.201&ipbits=0&expire=1559131330&sparams=ip%2Cipbits%2Cexpire%2Cid%2Caitags%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=C831151F7F4D1068C2055F2F8F3D60BAC473D2DB.A0AC5DBB33BF67C9DE645A10AA41BE460F9B0E54&key=yt8&ratebypass=yes", 502 | "vcodec": "av01.0.05M.08", 503 | "tbr": 737.003, 504 | "height": 480, 505 | "downloader_options": { 506 | "http_chunk_size": 10485760 507 | }, 508 | "width": 854, 509 | "ext": "mp4", 510 | "filesize": 44513704, 511 | "fps": 24, 512 | "format_id": "397", 513 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 514 | "quality": -1, 515 | "acodec": "none" 516 | }, 517 | { 518 | "format_note": "480p", 519 | "protocol": "https", 520 | "format": "244 - 854x480 (480p)", 521 | "tbr": 753.829, 522 | "height": 480, 523 | "downloader_options": { 524 | "http_chunk_size": 10485760 525 | }, 526 | "format_id": "244", 527 | "quality": -1, 528 | "http_headers": { 529 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 530 | "Accept-Language": "en-us,en;q=0.5", 531 | "Accept-Encoding": "gzip, deflate", 532 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 533 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 534 | }, 535 | "url": "https://r4---sn-2uuxa3vh-q2nl.googlevideo.com/videoplayback?id=o-ABIN6FxSpbLOCduVEMCbksuYAHOxUntuDSYufj-kTGm4&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397&itag=244&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2nl%2Csn-npoeenl7&ms=au%2Crdu&mv=m&pl=26&ei=YiDuXIabG6bKz7sPhumdqAQ&initcwndbps=290000&mime=video%2Fwebm&gir=yes&clen=37824458&dur=646.061&lmt=1548364773450652&mt=1559109614&fvip=5&keepalive=yes&c=WEB&txp=5535432&ip=36.84.63.201&ipbits=0&expire=1559131330&sparams=ip%2Cipbits%2Cexpire%2Cid%2Caitags%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=2D6E8492A815C60A3E4A6A9EB429D02416828F29.686174D345AE4296935C802927C69D2D5DF25AFA&key=yt8&ratebypass=yes", 536 | "vcodec": "vp9", 537 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 538 | "width": 854, 539 | "ext": "webm", 540 | "filesize": 37824458, 541 | "fps": 24, 542 | "acodec": "none" 543 | }, 544 | { 545 | "format_note": "480p", 546 | "protocol": "https", 547 | "format": "135 - 854x480 (480p)", 548 | "tbr": 1122.293, 549 | "height": 480, 550 | "downloader_options": { 551 | "http_chunk_size": 10485760 552 | }, 553 | "format_id": "135", 554 | "quality": -1, 555 | "http_headers": { 556 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 557 | "Accept-Language": "en-us,en;q=0.5", 558 | "Accept-Encoding": "gzip, deflate", 559 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 560 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 561 | }, 562 | "url": "https://r4---sn-2uuxa3vh-q2nl.googlevideo.com/videoplayback?id=o-ABIN6FxSpbLOCduVEMCbksuYAHOxUntuDSYufj-kTGm4&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397&itag=135&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2nl%2Csn-npoeenl7&ms=au%2Crdu&mv=m&pl=26&ei=YiDuXIabG6bKz7sPhumdqAQ&initcwndbps=290000&mime=video%2Fmp4&gir=yes&clen=40609812&dur=646.062&lmt=1554493535980372&mt=1559109614&fvip=5&keepalive=yes&c=WEB&txp=5535432&ip=36.84.63.201&ipbits=0&expire=1559131330&sparams=ip%2Cipbits%2Cexpire%2Cid%2Caitags%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=D1C17BB1F2B48193BF0F96CBC5D55A1D3B5451DC.063912363928881BA6BC79A22644A3B7AB11B11B&key=yt8&ratebypass=yes", 563 | "vcodec": "avc1.4d401e", 564 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 565 | "width": 854, 566 | "ext": "mp4", 567 | "filesize": 40609812, 568 | "fps": 24, 569 | "acodec": "none" 570 | }, 571 | { 572 | "format_note": "720p", 573 | "protocol": "https", 574 | "format": "247 - 1280x720 (720p)", 575 | "tbr": 1496.818, 576 | "height": 720, 577 | "downloader_options": { 578 | "http_chunk_size": 10485760 579 | }, 580 | "format_id": "247", 581 | "quality": -1, 582 | "http_headers": { 583 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 584 | "Accept-Language": "en-us,en;q=0.5", 585 | "Accept-Encoding": "gzip, deflate", 586 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 587 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 588 | }, 589 | "url": "https://r4---sn-2uuxa3vh-q2nl.googlevideo.com/videoplayback?id=o-ABIN6FxSpbLOCduVEMCbksuYAHOxUntuDSYufj-kTGm4&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397&itag=247&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2nl%2Csn-npoeenl7&ms=au%2Crdu&mv=m&pl=26&ei=YiDuXIabG6bKz7sPhumdqAQ&initcwndbps=290000&mime=video%2Fwebm&gir=yes&clen=65092030&dur=646.061&lmt=1548364768551584&mt=1559109614&fvip=5&keepalive=yes&c=WEB&txp=5535432&ip=36.84.63.201&ipbits=0&expire=1559131330&sparams=ip%2Cipbits%2Cexpire%2Cid%2Caitags%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=64A39C144B1171296A0F1F926515DBFEF47FE50E.3CB3E05C07FFD40F7710EAE5DF5D385E4D1FAA94&key=yt8&ratebypass=yes", 590 | "vcodec": "vp9", 591 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 592 | "width": 1280, 593 | "ext": "webm", 594 | "filesize": 65092030, 595 | "fps": 24, 596 | "acodec": "none" 597 | }, 598 | { 599 | "format_note": "720p", 600 | "protocol": "https", 601 | "format": "136 - 1280x720 (720p)", 602 | "tbr": 2026.789, 603 | "height": 720, 604 | "downloader_options": { 605 | "http_chunk_size": 10485760 606 | }, 607 | "format_id": "136", 608 | "quality": -1, 609 | "http_headers": { 610 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 611 | "Accept-Language": "en-us,en;q=0.5", 612 | "Accept-Encoding": "gzip, deflate", 613 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 614 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 615 | }, 616 | "url": "https://r4---sn-2uuxa3vh-q2nl.googlevideo.com/videoplayback?id=o-ABIN6FxSpbLOCduVEMCbksuYAHOxUntuDSYufj-kTGm4&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397&itag=136&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2nl%2Csn-npoeenl7&ms=au%2Crdu&mv=m&pl=26&ei=YiDuXIabG6bKz7sPhumdqAQ&initcwndbps=290000&mime=video%2Fmp4&gir=yes&clen=62724485&dur=646.062&lmt=1554493540078170&mt=1559109614&fvip=5&keepalive=yes&c=WEB&txp=5535432&ip=36.84.63.201&ipbits=0&expire=1559131330&sparams=ip%2Cipbits%2Cexpire%2Cid%2Caitags%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=4FA9886989FFB5BCF4897EA4E0521C76218C007F.59E443AAC568B0F6CD68BE0ED179633CF879E306&key=yt8&ratebypass=yes", 617 | "vcodec": "avc1.4d401f", 618 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 619 | "width": 1280, 620 | "ext": "mp4", 621 | "filesize": 62724485, 622 | "fps": 24, 623 | "acodec": "none" 624 | }, 625 | { 626 | "format_note": "1080p", 627 | "protocol": "https", 628 | "format": "248 - 1920x1080 (1080p)", 629 | "tbr": 2693.456, 630 | "height": 1080, 631 | "downloader_options": { 632 | "http_chunk_size": 10485760 633 | }, 634 | "format_id": "248", 635 | "quality": -1, 636 | "http_headers": { 637 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 638 | "Accept-Language": "en-us,en;q=0.5", 639 | "Accept-Encoding": "gzip, deflate", 640 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 641 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 642 | }, 643 | "url": "https://r4---sn-2uuxa3vh-q2nl.googlevideo.com/videoplayback?id=o-ABIN6FxSpbLOCduVEMCbksuYAHOxUntuDSYufj-kTGm4&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397&itag=248&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2nl%2Csn-npoeenl7&ms=au%2Crdu&mv=m&pl=26&ei=YiDuXIabG6bKz7sPhumdqAQ&initcwndbps=290000&mime=video%2Fwebm&gir=yes&clen=177280635&dur=646.061&lmt=1548364903684855&mt=1559109614&fvip=5&keepalive=yes&c=WEB&txp=5535432&ip=36.84.63.201&ipbits=0&expire=1559131330&sparams=ip%2Cipbits%2Cexpire%2Cid%2Caitags%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=D21375583F69E5312285900CF5F6EF96C3515984.D07DE52DD8372EF389CDD07FBC0834FC93F21EA8&key=yt8&ratebypass=yes", 644 | "vcodec": "vp9", 645 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 646 | "width": 1920, 647 | "ext": "webm", 648 | "filesize": 177280635, 649 | "fps": 24, 650 | "acodec": "none" 651 | }, 652 | { 653 | "format_note": "1080p", 654 | "protocol": "https", 655 | "format": "137 - 1920x1080 (1080p)", 656 | "tbr": 4330.838, 657 | "height": 1080, 658 | "downloader_options": { 659 | "http_chunk_size": 10485760 660 | }, 661 | "format_id": "137", 662 | "quality": -1, 663 | "http_headers": { 664 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 665 | "Accept-Language": "en-us,en;q=0.5", 666 | "Accept-Encoding": "gzip, deflate", 667 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 668 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 669 | }, 670 | "url": "https://r4---sn-2uuxa3vh-q2nl.googlevideo.com/videoplayback?id=o-ABIN6FxSpbLOCduVEMCbksuYAHOxUntuDSYufj-kTGm4&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397&itag=137&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2nl%2Csn-npoeenl7&ms=au%2Crdu&mv=m&pl=26&ei=YiDuXIabG6bKz7sPhumdqAQ&initcwndbps=290000&mime=video%2Fmp4&gir=yes&clen=201296228&dur=646.062&lmt=1554494148790640&mt=1559109614&fvip=5&keepalive=yes&c=WEB&txp=5535432&ip=36.84.63.201&ipbits=0&expire=1559131330&sparams=ip%2Cipbits%2Cexpire%2Cid%2Caitags%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=81879F5BB01A3406ACFFF8AE67035FFD00A2245C.63A480F86EF51BA3D6964EAB5AF03D46BCAD2276&key=yt8&ratebypass=yes", 671 | "vcodec": "avc1.640028", 672 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 673 | "width": 1920, 674 | "ext": "mp4", 675 | "filesize": 201296228, 676 | "fps": 24, 677 | "acodec": "none" 678 | }, 679 | { 680 | "http_headers": { 681 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 682 | "Accept-Language": "en-us,en;q=0.5", 683 | "Accept-Encoding": "gzip, deflate", 684 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 685 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 686 | }, 687 | "protocol": "https", 688 | "format": "18 - 640x360 (medium)", 689 | "url": "https://r4---sn-2uuxa3vh-q2nl.googlevideo.com/videoplayback?id=o-ABIN6FxSpbLOCduVEMCbksuYAHOxUntuDSYufj-kTGm4&itag=18&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2nl%2Csn-npoeenl7&ms=au%2Crdu&mv=m&pl=26&ei=YiDuXIabG6bKz7sPhumdqAQ&initcwndbps=290000&mime=video%2Fmp4&gir=yes&clen=50966397&ratebypass=yes&dur=646.118&lmt=1554488012892193&mt=1559109614&fvip=5&c=WEB&txp=5531432&ip=36.84.63.201&ipbits=0&expire=1559131330&sparams=ip%2Cipbits%2Cexpire%2Cid%2Citag%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cratebypass%2Cdur%2Clmt&signature=24416846B182C0575CA7A8FB0319B20114ACB232.B56AC689D75EC1AC1FF0AE22DB64FC7C79087BB8&key=yt8", 690 | "quality": 1, 691 | "vcodec": "avc1.42001E", 692 | "format_note": "medium", 693 | "ext": "mp4", 694 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 695 | "width": 640, 696 | "abr": 96, 697 | "filesize": 50966397, 698 | "format_id": "18", 699 | "height": 360, 700 | "resolution": "640x360", 701 | "acodec": "mp4a.40.2" 702 | }, 703 | { 704 | "http_headers": { 705 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 706 | "Accept-Language": "en-us,en;q=0.5", 707 | "Accept-Encoding": "gzip, deflate", 708 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 709 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 710 | }, 711 | "protocol": "https", 712 | "format": "43 - 640x360 (medium)", 713 | "url": "https://r4---sn-2uuxa3vh-q2nl.googlevideo.com/videoplayback?id=o-ABIN6FxSpbLOCduVEMCbksuYAHOxUntuDSYufj-kTGm4&itag=43&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2nl%2Csn-npoeenl7&ms=au%2Crdu&mv=m&pl=26&ei=YiDuXIabG6bKz7sPhumdqAQ&initcwndbps=290000&mime=video%2Fwebm&gir=yes&clen=65610927&ratebypass=yes&dur=0.000&lmt=1548415552491444&mt=1559109614&fvip=5&c=WEB&txp=5511222&ip=36.84.63.201&ipbits=0&expire=1559131330&sparams=ip%2Cipbits%2Cexpire%2Cid%2Citag%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cratebypass%2Cdur%2Clmt&signature=8D0D3E1FE3003F5C2BF6C4A7940948AC432A56AD.CCD9C1877A4B299825219EC555948CFF7219845D&key=yt8", 714 | "quality": 1, 715 | "vcodec": "vp8.0", 716 | "format_note": "medium", 717 | "ext": "webm", 718 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 719 | "width": 640, 720 | "abr": 128, 721 | "filesize": 65610927, 722 | "format_id": "43", 723 | "height": 360, 724 | "resolution": "640x360", 725 | "acodec": "vorbis" 726 | }, 727 | { 728 | "http_headers": { 729 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 730 | "Accept-Language": "en-us,en;q=0.5", 731 | "Accept-Encoding": "gzip, deflate", 732 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 733 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 734 | }, 735 | "protocol": "https", 736 | "format": "22 - 1280x720 (hd720)", 737 | "url": "https://r4---sn-2uuxa3vh-q2nl.googlevideo.com/videoplayback?id=o-ABIN6FxSpbLOCduVEMCbksuYAHOxUntuDSYufj-kTGm4&itag=22&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2nl%2Csn-npoeenl7&ms=au%2Crdu&mv=m&pl=26&ei=YiDuXIabG6bKz7sPhumdqAQ&initcwndbps=290000&mime=video%2Fmp4&ratebypass=yes&dur=646.118&lmt=1554493641973552&mt=1559109614&fvip=5&c=WEB&txp=5535432&ip=36.84.63.201&ipbits=0&expire=1559131330&sparams=ip%2Cipbits%2Cexpire%2Cid%2Citag%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cratebypass%2Cdur%2Clmt&signature=52DE96709435118F1D73BC578DDA13362F768D10.52CC0A4AB1E1CC2DA4B7BC8EB04D7BE77022EF30&key=yt8", 738 | "quality": 2, 739 | "vcodec": "avc1.64001F", 740 | "format_note": "hd720", 741 | "ext": "mp4", 742 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 743 | "width": 1280, 744 | "abr": 192, 745 | "format_id": "22", 746 | "height": 720, 747 | "resolution": "1280x720", 748 | "acodec": "mp4a.40.2" 749 | } 750 | ], 751 | "channel_url": "http://www.youtube.com/channel/UCAL3JXZSzSm8AlZyD3nQdBA", 752 | "resolution": null, 753 | "vcodec": "avc1.640028", 754 | "age_limit": 0 755 | } -------------------------------------------------------------------------------- /test/samples/thankyousong.json: -------------------------------------------------------------------------------- 1 | { 2 | "upload_date": "20190430", 3 | "extractor": "youtube", 4 | "series": "Nursery Rhymes & Kids Songs by Little Baby Bum - Volume 1", 5 | "format": "248 - 1920x1080 (1080p)+171 - audio only (DASH audio)", 6 | "vbr": null, 7 | "chapters": null, 8 | "height": 1080, 9 | "like_count": 502, 10 | "duration": 148, 11 | "fulltitle": "Thank You Song - How to Say Thank You | BRAND NEW! | Nursery Rhymes | Little Baby Bum", 12 | "playlist_index": null, 13 | "album": null, 14 | "view_count": 178553, 15 | "playlist": null, 16 | "title": "Thank You Song - How to Say Thank You | BRAND NEW! | Nursery Rhymes | Little Baby Bum", 17 | "_filename": "Thank You Song - How to Say Thank You _ BRAND NEW! _ Nursery Rhymes _ Little Baby Bum-HLqIbhzrrls.webm", 18 | "creator": null, 19 | "ext": "webm", 20 | "id": "HLqIbhzrrls", 21 | "dislike_count": 244, 22 | "average_rating": null, 23 | "abr": 128, 24 | "uploader_url": "http://www.youtube.com/user/LittleBabyBum", 25 | "categories": [ 26 | "Education" 27 | ], 28 | "fps": 25, 29 | "requested_subtitles": null, 30 | "season_number": 5, 31 | "annotations": null, 32 | "webpage_url_basename": "watch", 33 | "acodec": "vorbis", 34 | "display_id": "HLqIbhzrrls", 35 | "requested_formats": [ 36 | { 37 | "http_headers": { 38 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 39 | "Accept-Language": "en-us,en;q=0.5", 40 | "Accept-Encoding": "gzip, deflate", 41 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 42 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 43 | }, 44 | "tbr": 2569.835, 45 | "protocol": "https", 46 | "format": "248 - 1920x1080 (1080p)", 47 | "url": "https://r2---sn-2uuxa3vh-q2ne.googlevideo.com/videoplayback?id=o-APYDpdljcFXDsv40sHDsNn92yhq5Ys8SK2hr0b_3wfWU&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278&itag=248&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2ne%2Csn-npoeene7&ms=au%2Crdu&mv=m&pl=20&ei=dhzuXOmXAeCV3LUP9NWb2Ak&initcwndbps=282500&mime=video%2Fwebm&gir=yes&clen=23875092&dur=147.800&lmt=1556634972899560&mt=1559108598&fvip=1&keepalive=yes&c=WEB&txp=5535432&ip=180.252.59.161&ipbits=0&expire=1559130326&sparams=ip%2Cipbits%2Cexpire%2Cid%2Caitags%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=3276CFD8DE856EF46A3B82279FD1A95101CFE00F.072AA30EEC0056CE1060C462E8573EFEAA1B5157&key=yt8&ratebypass=yes", 48 | "vcodec": "vp9", 49 | "format_note": "1080p", 50 | "height": 1080, 51 | "downloader_options": { 52 | "http_chunk_size": 10485760 53 | }, 54 | "width": 1920, 55 | "ext": "webm", 56 | "filesize": 23875092, 57 | "fps": 25, 58 | "format_id": "248", 59 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 60 | "quality": -1, 61 | "acodec": "none" 62 | }, 63 | { 64 | "http_headers": { 65 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 66 | "Accept-Language": "en-us,en;q=0.5", 67 | "Accept-Encoding": "gzip, deflate", 68 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 69 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 70 | }, 71 | "format_note": "DASH audio", 72 | "protocol": "https", 73 | "format": "171 - audio only (DASH audio)", 74 | "url": "https://r2---sn-2uuxa3vh-q2ne.googlevideo.com/videoplayback?id=o-APYDpdljcFXDsv40sHDsNn92yhq5Ys8SK2hr0b_3wfWU&itag=171&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2ne%2Csn-npoeene7&ms=au%2Crdu&mv=m&pl=20&ei=dhzuXOmXAeCV3LUP9NWb2Ak&initcwndbps=282500&mime=audio%2Fwebm&gir=yes&clen=2487615&dur=147.804&lmt=1556634166582109&mt=1559108598&fvip=1&keepalive=yes&c=WEB&txp=5531432&ip=180.252.59.161&ipbits=0&expire=1559130326&sparams=ip%2Cipbits%2Cexpire%2Cid%2Citag%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=7988CFB4E03DC3EECA11AA4C568D46B0CC5EBA41.4D120A29A10AAB6D44A69E974A63DBF28EAAC7A2&key=yt8&ratebypass=yes", 75 | "vcodec": "none", 76 | "tbr": 158.096, 77 | "abr": 128, 78 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 79 | "downloader_options": { 80 | "http_chunk_size": 10485760 81 | }, 82 | "ext": "webm", 83 | "filesize": 2487615, 84 | "format_id": "171", 85 | "quality": -1, 86 | "acodec": "vorbis" 87 | } 88 | ], 89 | "automatic_captions": {}, 90 | "description": "SUBSCRIBE for new videos every week!\u25bahttps://www.youtube.com/user/LittleBabyBum?sub_confirmation=1\n\u25baLittle Baby Bum Spotify: https://littlebabybum.lnk.to/music\n\nBrand New Little Baby Bum Videos | Baby Songs | Nursery Rhymes\nhttps://www.youtube.com/watch?v=Oe2uBAkTGRk&list=PL0VE_cI7-AYQgzay-04fm-Fu5FequvuvE\n\nGo Buster! - Cartoons For Kids : Season 1\nhttps://www.youtube.com/watch?v=3UYJ0MY1l1o&list=PL0VE_cI7-AYSG8Qb0EA5CwjQnLkYpdelM\n\nNursery Rhymes | Songs For Children | Little Baby Bum\nhttps://www.youtube.com/watch?v=S_vVV8Y2tmQ&list=PL177660C8C17D222E\n\nNursery Rhymes for Babies | The Best Songs for Kids\nhttps://www.youtube.com/watch?v=S_vVV8Y2tmQ&list=PL36053D3415FB9CA6\n\nI want to thank you, thank you\nThank you everyday\nI want to thank you, thank you\nI just want to say thank you\n\nThank you to Mummy for always being kind\nShe\u2019s really really nice to me all of the time\nAnd thank you to Ella and Ollie\nFor always being happy to play with me\n\nI want to thank you, thank you\nThank you everyday\nI want to thank you, thank you\nI just want to say thank you\n\nThanks to Chase and Louis for being my best friends\nWhen we\u2019re together the fun never ends\nAnd thanks to Baby Max for making silly faces\nAnd thank you to Buster for driving us to wonderful places\n\nI want to thank you, thank you\nThank you everyday\nI want to thank you, thank you\nI just want to say thank you\n\nAnd sometimes I\u2019m less happy and that\u2019s OK\nCos I know that you\u2019re all here to put a smile back on my face\n\nI want to thank you, thank you\nThank you everyday\nI want to thank you, thank you\nI just want to say thank you\n\n*Spoken to camera/audience*\nAnd thank you, too!\n\n\n\n\n\u00a9 El Bebe Productions Limited - part of LittleBabyBum\n\n#thankyou #thankyousong #saythankyou", 91 | "tags": [ 92 | "Little baby bum", 93 | "wheels on the bus", 94 | "baby bum", 95 | "baby songs", 96 | "baby shark", 97 | "nursery rhymes", 98 | "cocomelon", 99 | "coco melon", 100 | "abckidstv", 101 | "abs kids tv", 102 | "abc song", 103 | "jingle bells", 104 | "five little ducks", 105 | "abc song nursery rhymes", 106 | "kids songs", 107 | "5 little ducks", 108 | "bus", 109 | "baby song", 110 | "baby videos", 111 | "baby rhymes", 112 | "cartoons", 113 | "kids cartoon", 114 | "baby shark dance", 115 | "baby shark challenge", 116 | "baby bun", 117 | "children songs", 118 | "videos for kids", 119 | "cartoons for kids", 120 | "abc", 121 | "ice cream song", 122 | "thank you song", 123 | "thank you", 124 | "thank you song for kids" 125 | ], 126 | "track": null, 127 | "season": "Season 5", 128 | "start_time": null, 129 | "stretched_ratio": null, 130 | "uploader": "Little Baby Bum - Nursery Rhymes & Kids Songs", 131 | "format_id": "248+171", 132 | "episode_number": 3, 133 | "uploader_id": "LittleBabyBum", 134 | "subtitles": {}, 135 | "release_year": null, 136 | "episode": "Episode 3", 137 | "thumbnails": [ 138 | { 139 | "url": "https://i.ytimg.com/vi/HLqIbhzrrls/maxresdefault.jpg", 140 | "id": "0" 141 | } 142 | ], 143 | "license": null, 144 | "artist": null, 145 | "extractor_key": "Youtube", 146 | "release_date": null, 147 | "alt_title": null, 148 | "thumbnail": "https://i.ytimg.com/vi/HLqIbhzrrls/maxresdefault.jpg", 149 | "channel_id": "UCKAqou7V9FAWXpZd9xtOg3Q", 150 | "is_live": null, 151 | "width": 1920, 152 | "end_time": null, 153 | "webpage_url": "https://www.youtube.com/watch?v=HLqIbhzrrls", 154 | "formats": [ 155 | { 156 | "http_headers": { 157 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 158 | "Accept-Language": "en-us,en;q=0.5", 159 | "Accept-Encoding": "gzip, deflate", 160 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 161 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 162 | }, 163 | "format_note": "DASH audio", 164 | "protocol": "https", 165 | "format": "249 - audio only (DASH audio)", 166 | "url": "https://r2---sn-2uuxa3vh-q2ne.googlevideo.com/videoplayback?id=o-APYDpdljcFXDsv40sHDsNn92yhq5Ys8SK2hr0b_3wfWU&itag=249&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2ne%2Csn-npoeene7&ms=au%2Crdu&mv=m&pl=20&ei=dhzuXOmXAeCV3LUP9NWb2Ak&initcwndbps=282500&mime=audio%2Fwebm&gir=yes&clen=998965&dur=147.821&lmt=1556634163176478&mt=1559108598&fvip=1&keepalive=yes&c=WEB&txp=5531432&ip=180.252.59.161&ipbits=0&expire=1559130326&sparams=ip%2Cipbits%2Cexpire%2Cid%2Citag%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=37B09B7277FA26DE860249EA872368AC0D1469C4.B07B5F1C4D4EEF5C3889FA187D499BF36F623BB6&key=yt8&ratebypass=yes", 167 | "vcodec": "none", 168 | "tbr": 62.932, 169 | "abr": 50, 170 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 171 | "downloader_options": { 172 | "http_chunk_size": 10485760 173 | }, 174 | "ext": "webm", 175 | "filesize": 998965, 176 | "format_id": "249", 177 | "quality": -1, 178 | "acodec": "opus" 179 | }, 180 | { 181 | "http_headers": { 182 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 183 | "Accept-Language": "en-us,en;q=0.5", 184 | "Accept-Encoding": "gzip, deflate", 185 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 186 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 187 | }, 188 | "format_note": "DASH audio", 189 | "protocol": "https", 190 | "format": "250 - audio only (DASH audio)", 191 | "url": "https://r2---sn-2uuxa3vh-q2ne.googlevideo.com/videoplayback?id=o-APYDpdljcFXDsv40sHDsNn92yhq5Ys8SK2hr0b_3wfWU&itag=250&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2ne%2Csn-npoeene7&ms=au%2Crdu&mv=m&pl=20&ei=dhzuXOmXAeCV3LUP9NWb2Ak&initcwndbps=282500&mime=audio%2Fwebm&gir=yes&clen=1315021&dur=147.821&lmt=1556634164864006&mt=1559108598&fvip=1&keepalive=yes&c=WEB&txp=5531432&ip=180.252.59.161&ipbits=0&expire=1559130326&sparams=ip%2Cipbits%2Cexpire%2Cid%2Citag%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=25A2C6BC8FFF400A0B64E89D8142BB2540894F98.C7BCBDAECB542AF55921F1B9413F0AD1CF917ECC&key=yt8&ratebypass=yes", 192 | "vcodec": "none", 193 | "tbr": 81.741, 194 | "abr": 70, 195 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 196 | "downloader_options": { 197 | "http_chunk_size": 10485760 198 | }, 199 | "ext": "webm", 200 | "filesize": 1315021, 201 | "format_id": "250", 202 | "quality": -1, 203 | "acodec": "opus" 204 | }, 205 | { 206 | "http_headers": { 207 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 208 | "Accept-Language": "en-us,en;q=0.5", 209 | "Accept-Encoding": "gzip, deflate", 210 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 211 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 212 | }, 213 | "tbr": 130.475, 214 | "container": "m4a_dash", 215 | "format": "140 - audio only (DASH audio)", 216 | "url": "https://r2---sn-2uuxa3vh-q2ne.googlevideo.com/videoplayback?id=o-APYDpdljcFXDsv40sHDsNn92yhq5Ys8SK2hr0b_3wfWU&itag=140&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2ne%2Csn-npoeene7&ms=au%2Crdu&mv=m&pl=20&ei=dhzuXOmXAeCV3LUP9NWb2Ak&initcwndbps=282500&mime=audio%2Fmp4&gir=yes&clen=2393734&dur=147.864&lmt=1556634164871153&mt=1559108598&fvip=1&keepalive=yes&c=WEB&txp=5531432&ip=180.252.59.161&ipbits=0&expire=1559130326&sparams=ip%2Cipbits%2Cexpire%2Cid%2Citag%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=2C692614760676837CAA86D30CF6BD28B983D966.10B6C916E25AA0DFEC9186EA3D735E6EB79C9AE9&key=yt8&ratebypass=yes", 217 | "vcodec": "none", 218 | "format_note": "DASH audio", 219 | "abr": 128, 220 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 221 | "downloader_options": { 222 | "http_chunk_size": 10485760 223 | }, 224 | "ext": "m4a", 225 | "filesize": 2393734, 226 | "protocol": "https", 227 | "format_id": "140", 228 | "quality": -1, 229 | "acodec": "mp4a.40.2" 230 | }, 231 | { 232 | "http_headers": { 233 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 234 | "Accept-Language": "en-us,en;q=0.5", 235 | "Accept-Encoding": "gzip, deflate", 236 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 237 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 238 | }, 239 | "format_note": "DASH audio", 240 | "protocol": "https", 241 | "format": "251 - audio only (DASH audio)", 242 | "url": "https://r2---sn-2uuxa3vh-q2ne.googlevideo.com/videoplayback?id=o-APYDpdljcFXDsv40sHDsNn92yhq5Ys8SK2hr0b_3wfWU&itag=251&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2ne%2Csn-npoeene7&ms=au%2Crdu&mv=m&pl=20&ei=dhzuXOmXAeCV3LUP9NWb2Ak&initcwndbps=282500&mime=audio%2Fwebm&gir=yes&clen=2575504&dur=147.821&lmt=1556634164662381&mt=1559108598&fvip=1&keepalive=yes&c=WEB&txp=5531432&ip=180.252.59.161&ipbits=0&expire=1559130326&sparams=ip%2Cipbits%2Cexpire%2Cid%2Citag%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=D0FF1C1E3653556472CF5E41E1322858407D0225.DC062F8D9F69CDDE321AB0E74156B40C89CF44E8&key=yt8&ratebypass=yes", 243 | "vcodec": "none", 244 | "tbr": 154.261, 245 | "abr": 160, 246 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 247 | "downloader_options": { 248 | "http_chunk_size": 10485760 249 | }, 250 | "ext": "webm", 251 | "filesize": 2575504, 252 | "format_id": "251", 253 | "quality": -1, 254 | "acodec": "opus" 255 | }, 256 | { 257 | "http_headers": { 258 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 259 | "Accept-Language": "en-us,en;q=0.5", 260 | "Accept-Encoding": "gzip, deflate", 261 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 262 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 263 | }, 264 | "format_note": "DASH audio", 265 | "protocol": "https", 266 | "format": "171 - audio only (DASH audio)", 267 | "url": "https://r2---sn-2uuxa3vh-q2ne.googlevideo.com/videoplayback?id=o-APYDpdljcFXDsv40sHDsNn92yhq5Ys8SK2hr0b_3wfWU&itag=171&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2ne%2Csn-npoeene7&ms=au%2Crdu&mv=m&pl=20&ei=dhzuXOmXAeCV3LUP9NWb2Ak&initcwndbps=282500&mime=audio%2Fwebm&gir=yes&clen=2487615&dur=147.804&lmt=1556634166582109&mt=1559108598&fvip=1&keepalive=yes&c=WEB&txp=5531432&ip=180.252.59.161&ipbits=0&expire=1559130326&sparams=ip%2Cipbits%2Cexpire%2Cid%2Citag%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=7988CFB4E03DC3EECA11AA4C568D46B0CC5EBA41.4D120A29A10AAB6D44A69E974A63DBF28EAAC7A2&key=yt8&ratebypass=yes", 268 | "vcodec": "none", 269 | "tbr": 158.096, 270 | "abr": 128, 271 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 272 | "downloader_options": { 273 | "http_chunk_size": 10485760 274 | }, 275 | "ext": "webm", 276 | "filesize": 2487615, 277 | "format_id": "171", 278 | "quality": -1, 279 | "acodec": "vorbis" 280 | }, 281 | { 282 | "format_note": "144p", 283 | "protocol": "https", 284 | "format": "160 - 256x144 (144p)", 285 | "tbr": 109.636, 286 | "height": 144, 287 | "downloader_options": { 288 | "http_chunk_size": 10485760 289 | }, 290 | "format_id": "160", 291 | "quality": -1, 292 | "http_headers": { 293 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 294 | "Accept-Language": "en-us,en;q=0.5", 295 | "Accept-Encoding": "gzip, deflate", 296 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 297 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 298 | }, 299 | "url": "https://r2---sn-2uuxa3vh-q2ne.googlevideo.com/videoplayback?id=o-APYDpdljcFXDsv40sHDsNn92yhq5Ys8SK2hr0b_3wfWU&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278&itag=160&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2ne%2Csn-npoeene7&ms=au%2Crdu&mv=m&pl=20&ei=dhzuXOmXAeCV3LUP9NWb2Ak&initcwndbps=282500&mime=video%2Fmp4&gir=yes&clen=1173746&dur=147.800&lmt=1556634636622974&mt=1559108598&fvip=1&keepalive=yes&c=WEB&txp=5535432&ip=180.252.59.161&ipbits=0&expire=1559130326&sparams=ip%2Cipbits%2Cexpire%2Cid%2Caitags%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=33856093CBAED26CEB1EC3EE3FF2628F7A85F7BC.DC09F54B5D95650C949D830CCABFB93E757B243F&key=yt8&ratebypass=yes", 300 | "vcodec": "avc1.4d400c", 301 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 302 | "width": 256, 303 | "ext": "mp4", 304 | "filesize": 1173746, 305 | "fps": 25, 306 | "acodec": "none" 307 | }, 308 | { 309 | "http_headers": { 310 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 311 | "Accept-Language": "en-us,en;q=0.5", 312 | "Accept-Encoding": "gzip, deflate", 313 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 314 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 315 | }, 316 | "tbr": 123.367, 317 | "container": "webm", 318 | "format": "278 - 256x144 (144p)", 319 | "url": "https://r2---sn-2uuxa3vh-q2ne.googlevideo.com/videoplayback?id=o-APYDpdljcFXDsv40sHDsNn92yhq5Ys8SK2hr0b_3wfWU&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278&itag=278&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2ne%2Csn-npoeene7&ms=au%2Crdu&mv=m&pl=20&ei=dhzuXOmXAeCV3LUP9NWb2Ak&initcwndbps=282500&mime=video%2Fwebm&gir=yes&clen=1683740&dur=147.800&lmt=1556635344116596&mt=1559108598&fvip=1&keepalive=yes&c=WEB&txp=5535432&ip=180.252.59.161&ipbits=0&expire=1559130326&sparams=ip%2Cipbits%2Cexpire%2Cid%2Caitags%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=AEA6123358DABC2075957187B84B5E3A491C51E5.6F38A8652B612500C8FEAA24CDBC592D2CEFAE31&key=yt8&ratebypass=yes", 320 | "vcodec": "vp9", 321 | "format_note": "144p", 322 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 323 | "downloader_options": { 324 | "http_chunk_size": 10485760 325 | }, 326 | "width": 256, 327 | "ext": "webm", 328 | "filesize": 1683740, 329 | "fps": 25, 330 | "protocol": "https", 331 | "format_id": "278", 332 | "height": 144, 333 | "quality": -1, 334 | "acodec": "none" 335 | }, 336 | { 337 | "format_note": "240p", 338 | "protocol": "https", 339 | "format": "242 - 426x240 (240p)", 340 | "tbr": 218.231, 341 | "height": 240, 342 | "downloader_options": { 343 | "http_chunk_size": 10485760 344 | }, 345 | "format_id": "242", 346 | "quality": -1, 347 | "http_headers": { 348 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 349 | "Accept-Language": "en-us,en;q=0.5", 350 | "Accept-Encoding": "gzip, deflate", 351 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 352 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 353 | }, 354 | "url": "https://r2---sn-2uuxa3vh-q2ne.googlevideo.com/videoplayback?id=o-APYDpdljcFXDsv40sHDsNn92yhq5Ys8SK2hr0b_3wfWU&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278&itag=242&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2ne%2Csn-npoeene7&ms=au%2Crdu&mv=m&pl=20&ei=dhzuXOmXAeCV3LUP9NWb2Ak&initcwndbps=282500&mime=video%2Fwebm&gir=yes&clen=2382253&dur=147.800&lmt=1556635344149047&mt=1559108598&fvip=1&keepalive=yes&c=WEB&txp=5535432&ip=180.252.59.161&ipbits=0&expire=1559130326&sparams=ip%2Cipbits%2Cexpire%2Cid%2Caitags%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=9D7AE5FBD6C9E1A72D2B763682C542D6DBF12C68.6FE2C019BD93F6FCD1E3D109C4FC9BA7900C8A05&key=yt8&ratebypass=yes", 355 | "vcodec": "vp9", 356 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 357 | "width": 426, 358 | "ext": "webm", 359 | "filesize": 2382253, 360 | "fps": 25, 361 | "acodec": "none" 362 | }, 363 | { 364 | "format_note": "240p", 365 | "protocol": "https", 366 | "format": "133 - 426x240 (240p)", 367 | "tbr": 260.565, 368 | "height": 240, 369 | "downloader_options": { 370 | "http_chunk_size": 10485760 371 | }, 372 | "format_id": "133", 373 | "quality": -1, 374 | "http_headers": { 375 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 376 | "Accept-Language": "en-us,en;q=0.5", 377 | "Accept-Encoding": "gzip, deflate", 378 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 379 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 380 | }, 381 | "url": "https://r2---sn-2uuxa3vh-q2ne.googlevideo.com/videoplayback?id=o-APYDpdljcFXDsv40sHDsNn92yhq5Ys8SK2hr0b_3wfWU&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278&itag=133&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2ne%2Csn-npoeene7&ms=au%2Crdu&mv=m&pl=20&ei=dhzuXOmXAeCV3LUP9NWb2Ak&initcwndbps=282500&mime=video%2Fmp4&gir=yes&clen=2290058&dur=147.800&lmt=1556634636607051&mt=1559108598&fvip=1&keepalive=yes&c=WEB&txp=5535432&ip=180.252.59.161&ipbits=0&expire=1559130326&sparams=ip%2Cipbits%2Cexpire%2Cid%2Caitags%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=A87FFD3F54E03A3B14455B29D791BE8864CF20CB.CCD3C449A25A5C29919791DF7FC3CF72914E25AA&key=yt8&ratebypass=yes", 382 | "vcodec": "avc1.4d4015", 383 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 384 | "width": 426, 385 | "ext": "mp4", 386 | "filesize": 2290058, 387 | "fps": 25, 388 | "acodec": "none" 389 | }, 390 | { 391 | "format_note": "360p", 392 | "protocol": "https", 393 | "format": "243 - 640x360 (360p)", 394 | "tbr": 405.231, 395 | "height": 360, 396 | "downloader_options": { 397 | "http_chunk_size": 10485760 398 | }, 399 | "format_id": "243", 400 | "quality": -1, 401 | "http_headers": { 402 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 403 | "Accept-Language": "en-us,en;q=0.5", 404 | "Accept-Encoding": "gzip, deflate", 405 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 406 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 407 | }, 408 | "url": "https://r2---sn-2uuxa3vh-q2ne.googlevideo.com/videoplayback?id=o-APYDpdljcFXDsv40sHDsNn92yhq5Ys8SK2hr0b_3wfWU&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278&itag=243&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2ne%2Csn-npoeene7&ms=au%2Crdu&mv=m&pl=20&ei=dhzuXOmXAeCV3LUP9NWb2Ak&initcwndbps=282500&mime=video%2Fwebm&gir=yes&clen=3910644&dur=147.800&lmt=1556635344119811&mt=1559108598&fvip=1&keepalive=yes&c=WEB&txp=5535432&ip=180.252.59.161&ipbits=0&expire=1559130326&sparams=ip%2Cipbits%2Cexpire%2Cid%2Caitags%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=791C07EADF4EA26BAA00DEBD2CED43BDF5C4151B.1D7D3408D6CE815156951161AADFDAA3C8AFC82F&key=yt8&ratebypass=yes", 409 | "vcodec": "vp9", 410 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 411 | "width": 640, 412 | "ext": "webm", 413 | "filesize": 3910644, 414 | "fps": 25, 415 | "acodec": "none" 416 | }, 417 | { 418 | "format_note": "360p", 419 | "protocol": "https", 420 | "format": "134 - 640x360 (360p)", 421 | "tbr": 462.125, 422 | "height": 360, 423 | "downloader_options": { 424 | "http_chunk_size": 10485760 425 | }, 426 | "format_id": "134", 427 | "quality": -1, 428 | "http_headers": { 429 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 430 | "Accept-Language": "en-us,en;q=0.5", 431 | "Accept-Encoding": "gzip, deflate", 432 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 433 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 434 | }, 435 | "url": "https://r2---sn-2uuxa3vh-q2ne.googlevideo.com/videoplayback?id=o-APYDpdljcFXDsv40sHDsNn92yhq5Ys8SK2hr0b_3wfWU&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278&itag=134&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2ne%2Csn-npoeene7&ms=au%2Crdu&mv=m&pl=20&ei=dhzuXOmXAeCV3LUP9NWb2Ak&initcwndbps=282500&mime=video%2Fmp4&gir=yes&clen=4041058&dur=147.800&lmt=1556634636594568&mt=1559108598&fvip=1&keepalive=yes&c=WEB&txp=5535432&ip=180.252.59.161&ipbits=0&expire=1559130326&sparams=ip%2Cipbits%2Cexpire%2Cid%2Caitags%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=409C1737B89E2F4D68BD3042B30530463E3C2179.2369719B1E7C05AE1A905241F5CCB4AA9189463E&key=yt8&ratebypass=yes", 436 | "vcodec": "avc1.4d401e", 437 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 438 | "width": 640, 439 | "ext": "mp4", 440 | "filesize": 4041058, 441 | "fps": 25, 442 | "acodec": "none" 443 | }, 444 | { 445 | "format_note": "480p", 446 | "protocol": "https", 447 | "format": "244 - 854x480 (480p)", 448 | "tbr": 612.161, 449 | "height": 480, 450 | "downloader_options": { 451 | "http_chunk_size": 10485760 452 | }, 453 | "format_id": "244", 454 | "quality": -1, 455 | "http_headers": { 456 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 457 | "Accept-Language": "en-us,en;q=0.5", 458 | "Accept-Encoding": "gzip, deflate", 459 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 460 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 461 | }, 462 | "url": "https://r2---sn-2uuxa3vh-q2ne.googlevideo.com/videoplayback?id=o-APYDpdljcFXDsv40sHDsNn92yhq5Ys8SK2hr0b_3wfWU&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278&itag=244&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2ne%2Csn-npoeene7&ms=au%2Crdu&mv=m&pl=20&ei=dhzuXOmXAeCV3LUP9NWb2Ak&initcwndbps=282500&mime=video%2Fwebm&gir=yes&clen=5523179&dur=147.800&lmt=1556635344132796&mt=1559108598&fvip=1&keepalive=yes&c=WEB&txp=5535432&ip=180.252.59.161&ipbits=0&expire=1559130326&sparams=ip%2Cipbits%2Cexpire%2Cid%2Caitags%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=38D5F1637D80DA445811B97591E99FD2E7BF1875.40D1E531FA4A60EC8B92DE03FFDA04839D90A10C&key=yt8&ratebypass=yes", 463 | "vcodec": "vp9", 464 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 465 | "width": 854, 466 | "ext": "webm", 467 | "filesize": 5523179, 468 | "fps": 25, 469 | "acodec": "none" 470 | }, 471 | { 472 | "format_note": "480p", 473 | "protocol": "https", 474 | "format": "135 - 854x480 (480p)", 475 | "tbr": 653.612, 476 | "height": 480, 477 | "downloader_options": { 478 | "http_chunk_size": 10485760 479 | }, 480 | "format_id": "135", 481 | "quality": -1, 482 | "http_headers": { 483 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 484 | "Accept-Language": "en-us,en;q=0.5", 485 | "Accept-Encoding": "gzip, deflate", 486 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 487 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 488 | }, 489 | "url": "https://r2---sn-2uuxa3vh-q2ne.googlevideo.com/videoplayback?id=o-APYDpdljcFXDsv40sHDsNn92yhq5Ys8SK2hr0b_3wfWU&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278&itag=135&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2ne%2Csn-npoeene7&ms=au%2Crdu&mv=m&pl=20&ei=dhzuXOmXAeCV3LUP9NWb2Ak&initcwndbps=282500&mime=video%2Fmp4&gir=yes&clen=5631465&dur=147.800&lmt=1556634636597327&mt=1559108598&fvip=1&keepalive=yes&c=WEB&txp=5535432&ip=180.252.59.161&ipbits=0&expire=1559130326&sparams=ip%2Cipbits%2Cexpire%2Cid%2Caitags%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=2586F8EC812802B098E3D1852C6267CE89C222A6.BD9D57DB076A8AE08E2E2CFCF33F1E703F1871C5&key=yt8&ratebypass=yes", 490 | "vcodec": "avc1.4d401e", 491 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 492 | "width": 854, 493 | "ext": "mp4", 494 | "filesize": 5631465, 495 | "fps": 25, 496 | "acodec": "none" 497 | }, 498 | { 499 | "format_note": "720p", 500 | "protocol": "https", 501 | "format": "136 - 1280x720 (720p)", 502 | "tbr": 967.68, 503 | "height": 720, 504 | "downloader_options": { 505 | "http_chunk_size": 10485760 506 | }, 507 | "format_id": "136", 508 | "quality": -1, 509 | "http_headers": { 510 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 511 | "Accept-Language": "en-us,en;q=0.5", 512 | "Accept-Encoding": "gzip, deflate", 513 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 514 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 515 | }, 516 | "url": "https://r2---sn-2uuxa3vh-q2ne.googlevideo.com/videoplayback?id=o-APYDpdljcFXDsv40sHDsNn92yhq5Ys8SK2hr0b_3wfWU&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278&itag=136&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2ne%2Csn-npoeene7&ms=au%2Crdu&mv=m&pl=20&ei=dhzuXOmXAeCV3LUP9NWb2Ak&initcwndbps=282500&mime=video%2Fmp4&gir=yes&clen=7724302&dur=147.800&lmt=1556634636603949&mt=1559108598&fvip=1&keepalive=yes&c=WEB&txp=5535432&ip=180.252.59.161&ipbits=0&expire=1559130326&sparams=ip%2Cipbits%2Cexpire%2Cid%2Caitags%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=B5FDA4D66D9EFF612C72AC34A1BE70ADA8EC5E05.83BEFE24DF3C8B22B147E9B9A30BC3CA84EE926F&key=yt8&ratebypass=yes", 517 | "vcodec": "avc1.4d401f", 518 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 519 | "width": 1280, 520 | "ext": "mp4", 521 | "filesize": 7724302, 522 | "fps": 25, 523 | "acodec": "none" 524 | }, 525 | { 526 | "format_note": "720p", 527 | "protocol": "https", 528 | "format": "247 - 1280x720 (720p)", 529 | "tbr": 979.598, 530 | "height": 720, 531 | "downloader_options": { 532 | "http_chunk_size": 10485760 533 | }, 534 | "format_id": "247", 535 | "quality": -1, 536 | "http_headers": { 537 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 538 | "Accept-Language": "en-us,en;q=0.5", 539 | "Accept-Encoding": "gzip, deflate", 540 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 541 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 542 | }, 543 | "url": "https://r2---sn-2uuxa3vh-q2ne.googlevideo.com/videoplayback?id=o-APYDpdljcFXDsv40sHDsNn92yhq5Ys8SK2hr0b_3wfWU&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278&itag=247&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2ne%2Csn-npoeene7&ms=au%2Crdu&mv=m&pl=20&ei=dhzuXOmXAeCV3LUP9NWb2Ak&initcwndbps=282500&mime=video%2Fwebm&gir=yes&clen=8882527&dur=147.800&lmt=1556635344135358&mt=1559108598&fvip=1&keepalive=yes&c=WEB&txp=5535432&ip=180.252.59.161&ipbits=0&expire=1559130326&sparams=ip%2Cipbits%2Cexpire%2Cid%2Caitags%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=971B26FF783781EC8B896972891165F1BC845ADF.7F42D787B197850A23741264F6C1F749133D4A74&key=yt8&ratebypass=yes", 544 | "vcodec": "vp9", 545 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 546 | "width": 1280, 547 | "ext": "webm", 548 | "filesize": 8882527, 549 | "fps": 25, 550 | "acodec": "none" 551 | }, 552 | { 553 | "format_note": "1080p", 554 | "protocol": "https", 555 | "format": "137 - 1920x1080 (1080p)", 556 | "tbr": 2447.837, 557 | "height": 1080, 558 | "downloader_options": { 559 | "http_chunk_size": 10485760 560 | }, 561 | "format_id": "137", 562 | "quality": -1, 563 | "http_headers": { 564 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 565 | "Accept-Language": "en-us,en;q=0.5", 566 | "Accept-Encoding": "gzip, deflate", 567 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 568 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 569 | }, 570 | "url": "https://r2---sn-2uuxa3vh-q2ne.googlevideo.com/videoplayback?id=o-APYDpdljcFXDsv40sHDsNn92yhq5Ys8SK2hr0b_3wfWU&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278&itag=137&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2ne%2Csn-npoeene7&ms=au%2Crdu&mv=m&pl=20&ei=dhzuXOmXAeCV3LUP9NWb2Ak&initcwndbps=282500&mime=video%2Fmp4&gir=yes&clen=22719524&dur=147.800&lmt=1556634600951222&mt=1559108598&fvip=1&keepalive=yes&c=WEB&txp=5535432&ip=180.252.59.161&ipbits=0&expire=1559130326&sparams=ip%2Cipbits%2Cexpire%2Cid%2Caitags%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=C2BC6A3D98BD3402101D0DCA6B287C36EFE13077.C6329494D0EECD7F7D9D8BE6D74CBC79D4613B10&key=yt8&ratebypass=yes", 571 | "vcodec": "avc1.640028", 572 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 573 | "width": 1920, 574 | "ext": "mp4", 575 | "filesize": 22719524, 576 | "fps": 25, 577 | "acodec": "none" 578 | }, 579 | { 580 | "format_note": "1080p", 581 | "protocol": "https", 582 | "format": "248 - 1920x1080 (1080p)", 583 | "tbr": 2569.835, 584 | "height": 1080, 585 | "downloader_options": { 586 | "http_chunk_size": 10485760 587 | }, 588 | "format_id": "248", 589 | "quality": -1, 590 | "http_headers": { 591 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 592 | "Accept-Language": "en-us,en;q=0.5", 593 | "Accept-Encoding": "gzip, deflate", 594 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 595 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 596 | }, 597 | "url": "https://r2---sn-2uuxa3vh-q2ne.googlevideo.com/videoplayback?id=o-APYDpdljcFXDsv40sHDsNn92yhq5Ys8SK2hr0b_3wfWU&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278&itag=248&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2ne%2Csn-npoeene7&ms=au%2Crdu&mv=m&pl=20&ei=dhzuXOmXAeCV3LUP9NWb2Ak&initcwndbps=282500&mime=video%2Fwebm&gir=yes&clen=23875092&dur=147.800&lmt=1556634972899560&mt=1559108598&fvip=1&keepalive=yes&c=WEB&txp=5535432&ip=180.252.59.161&ipbits=0&expire=1559130326&sparams=ip%2Cipbits%2Cexpire%2Cid%2Caitags%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&signature=3276CFD8DE856EF46A3B82279FD1A95101CFE00F.072AA30EEC0056CE1060C462E8573EFEAA1B5157&key=yt8&ratebypass=yes", 598 | "vcodec": "vp9", 599 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 600 | "width": 1920, 601 | "ext": "webm", 602 | "filesize": 23875092, 603 | "fps": 25, 604 | "acodec": "none" 605 | }, 606 | { 607 | "http_headers": { 608 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 609 | "Accept-Language": "en-us,en;q=0.5", 610 | "Accept-Encoding": "gzip, deflate", 611 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 612 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 613 | }, 614 | "protocol": "https", 615 | "format": "18 - 640x360 (medium)", 616 | "url": "https://r2---sn-2uuxa3vh-q2ne.googlevideo.com/videoplayback?id=o-APYDpdljcFXDsv40sHDsNn92yhq5Ys8SK2hr0b_3wfWU&itag=18&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2ne%2Csn-npoeene7&ms=au%2Crdu&mv=m&pl=20&ei=dhzuXOmXAeCV3LUP9NWb2Ak&initcwndbps=282500&mime=video%2Fmp4&gir=yes&clen=8917208&ratebypass=yes&dur=147.864&lmt=1556633877622749&mt=1559108598&fvip=1&c=WEB&txp=5531432&ip=180.252.59.161&ipbits=0&expire=1559130326&sparams=ip%2Cipbits%2Cexpire%2Cid%2Citag%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cratebypass%2Cdur%2Clmt&signature=EF0D2D121E80A3E3F36B0AE199C817349F58239A.557E2FF6B3BC848E0F7E462C04DA9C40C0DFD5F5&key=yt8", 617 | "quality": 1, 618 | "vcodec": "avc1.42001E", 619 | "format_note": "medium", 620 | "ext": "mp4", 621 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 622 | "width": 640, 623 | "abr": 96, 624 | "filesize": 8917208, 625 | "format_id": "18", 626 | "height": 360, 627 | "resolution": "640x360", 628 | "acodec": "mp4a.40.2" 629 | }, 630 | { 631 | "http_headers": { 632 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 633 | "Accept-Language": "en-us,en;q=0.5", 634 | "Accept-Encoding": "gzip, deflate", 635 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 636 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 637 | }, 638 | "protocol": "https", 639 | "format": "43 - 640x360 (medium)", 640 | "url": "https://r2---sn-2uuxa3vh-q2ne.googlevideo.com/videoplayback?id=o-APYDpdljcFXDsv40sHDsNn92yhq5Ys8SK2hr0b_3wfWU&itag=43&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2ne%2Csn-npoeene7&ms=au%2Crdu&mv=m&pl=20&ei=dhzuXOmXAeCV3LUP9NWb2Ak&initcwndbps=282500&mime=video%2Fwebm&gir=yes&clen=13396939&ratebypass=yes&dur=0.000&lmt=1556635551760805&mt=1559108598&fvip=1&c=WEB&txp=5511222&ip=180.252.59.161&ipbits=0&expire=1559130326&sparams=ip%2Cipbits%2Cexpire%2Cid%2Citag%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cgir%2Cclen%2Cratebypass%2Cdur%2Clmt&signature=D278AA365C8FCAF3D10AB66F6C122942C3215D7F.D6BE4FA233FEF4E4538095E7E74F030BBF085419&key=yt8", 641 | "quality": 1, 642 | "vcodec": "vp8.0", 643 | "format_note": "medium", 644 | "ext": "webm", 645 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 646 | "width": 640, 647 | "abr": 128, 648 | "filesize": 13396939, 649 | "format_id": "43", 650 | "height": 360, 651 | "resolution": "640x360", 652 | "acodec": "vorbis" 653 | }, 654 | { 655 | "http_headers": { 656 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", 657 | "Accept-Language": "en-us,en;q=0.5", 658 | "Accept-Encoding": "gzip, deflate", 659 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 660 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0" 661 | }, 662 | "protocol": "https", 663 | "format": "22 - 1280x720 (hd720)", 664 | "url": "https://r2---sn-2uuxa3vh-q2ne.googlevideo.com/videoplayback?id=o-APYDpdljcFXDsv40sHDsNn92yhq5Ys8SK2hr0b_3wfWU&itag=22&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-2uuxa3vh-q2ne%2Csn-npoeene7&ms=au%2Crdu&mv=m&pl=20&ei=dhzuXOmXAeCV3LUP9NWb2Ak&initcwndbps=282500&mime=video%2Fmp4&ratebypass=yes&dur=147.864&lmt=1556634649633421&mt=1559108598&fvip=1&c=WEB&txp=5535432&ip=180.252.59.161&ipbits=0&expire=1559130326&sparams=ip%2Cipbits%2Cexpire%2Cid%2Citag%2Csource%2Crequiressl%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cei%2Cinitcwndbps%2Cmime%2Cratebypass%2Cdur%2Clmt&signature=B04A0AB5EF2CCACFBEB06A3B58BB0D1D1FC37D34.4687BE584D1416520F80120FCE37DD91B6A6791C&key=yt8", 665 | "quality": 2, 666 | "vcodec": "avc1.64001F", 667 | "format_note": "hd720", 668 | "ext": "mp4", 669 | "player_url": "/yts/jsbin/player_ias-vfl1T0cVh/en_US/base.js", 670 | "width": 1280, 671 | "abr": 192, 672 | "format_id": "22", 673 | "height": 720, 674 | "resolution": "1280x720", 675 | "acodec": "mp4a.40.2" 676 | } 677 | ], 678 | "channel_url": "http://www.youtube.com/channel/UCKAqou7V9FAWXpZd9xtOg3Q", 679 | "resolution": null, 680 | "vcodec": "vp9", 681 | "age_limit": 0 682 | } -------------------------------------------------------------------------------- /test/ytdl-api-test.js: -------------------------------------------------------------------------------- 1 | import test from 'ava' 2 | import ytldlApi from '../ytdl-api' 3 | 4 | test.skip('parse youtube info', async t => { 5 | const info = await ytldlApi.getInfo( 6 | 'https://www.youtube.com/watch?v=HLqIbhzrrls' 7 | ) 8 | t.is(info.height, 1080) 9 | }) 10 | 11 | test('supportsSubtitles', async t => { 12 | t.truthy(await ytldlApi.supportsSubtitles('mp4')) 13 | t.truthy(await ytldlApi.supportsSubtitles('webm')) 14 | t.truthy(await ytldlApi.supportsSubtitles('mkv')) 15 | t.falsy(await ytldlApi.supportsSubtitles('mov')) 16 | t.falsy(await ytldlApi.supportsSubtitles(undefined)) 17 | }) 18 | -------------------------------------------------------------------------------- /ytdl-api.js: -------------------------------------------------------------------------------- 1 | const shell = require('shelljs') 2 | 3 | exports.getInfo = async function(url) { 4 | // Dummy for testing: 5 | // return require('./test/samples/thankyousong.json') 6 | 7 | const run = shell.exec(`youtube-dl --simulate --dump-json "${url}"`, { 8 | silent: true 9 | }) 10 | if (run.code !== 0) { 11 | throw new Error( 12 | `youtube-dl stopped with error:\n${run.stdout}\n${run.stderr}` 13 | ) 14 | } 15 | 16 | return JSON.parse(run.stdout) 17 | } 18 | 19 | exports.supportsSubtitles = function(ext) { 20 | return ['mp4', 'webm', 'mkv'].includes(ext) 21 | } 22 | --------------------------------------------------------------------------------