├── .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-interactive https://www.youtube.com/watch?v=CjLHuhOTnaI Title: Can You Trust Apple? Facebook? Google? ? What do you want? (Use arrow keys) ❯ best video + best audio worst video + worst audio <480p mp4 audio only --- specify resolution: --- 1080p 720p 480p 360p 240p (Move up and down to reveal more choices) ? What do you want? best video + best audio ❯ worst video + worst audio ❯ 1080p ❯ 720p 144p ? What do you want? 720p ? Select a video file: (Use arrow keys) ❯ webm 1280x720 720p 34.7 MiB (247) mp4 1280x720 720p60 22.6 MiB (298) webm 1280x720 720p60 32.5 MiB (302) mp4 1280x720 720p 33.6 MiB (136) mp4 1280x720 hd720 NaN audio: mp4a.40.2 @ 192k (22) ? Select a video file: webm 1280x720 720p 34.7 MiB (247) ❯ webm 1280x720 720p60 32.5 MiB (302) ❯ mp4 1280x720 720p 33.6 MiB (136) ❯ mp4 1280x720 hd720 NaN audio: mp4a.40.2 @ 192k (22) ? Select a video file: mp4 1280x720 hd720 NaN audio: mp4a.40.2 @ 192 k (22) ? Select audio: (Use arrow keys) ❯ Use audio included in the video: mp4a.40.2 @ 192k ────────────── best audio worst audio --- specify: --- webm opus @ 50k DASH audio 3.9 MiB (249) webm opus @ 70k DASH audio 5.1 MiB (250) webm vorbis @ 128k DASH audio 8.2 MiB (171) m4a mp4a.40.2 @ 128k DASH audio 10.0 MiB (140) webm opus @ 160k DASH audio 9.9 MiB (251) ? Select audio: best audio ✔ OK. Running: youtube-dl -f '22+bestaudio' "https://www.youtube.com/watch?v=C jLHuhOTnaI" [youtube] CjLHuhOTnaI: Downloading webpage ⠋ Loading metadata ❯ <480p mp4 ❯ audio only ❯ mp4 1280x720 720p60 22.6 MiB (298) ? Select audio: Use audio included in the video: mp4a.40.2 @ 192k ❯ best audio [youtube] CjLHuhOTnaI: Downloading video info webpage
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------