From 35f20be70c727c2adab8cf7e2e6ee5beb8ac1f29 Mon Sep 17 00:00:00 2001 From: Mort Yao Date: Thu, 7 Mar 2019 13:39:45 +0100 Subject: [PATCH] [youtube] format stream_types (Non-DASH YouTube media encoding options) --- src/you_get/extractors/youtube.py | 66 +++++++++++++++++++++++-------- 1 file changed, 49 insertions(+), 17 deletions(-) diff --git a/src/you_get/extractors/youtube.py b/src/you_get/extractors/youtube.py index f33947c4..552367dc 100644 --- a/src/you_get/extractors/youtube.py +++ b/src/you_get/extractors/youtube.py @@ -8,32 +8,64 @@ from xml.dom.minidom import parseString class YouTube(VideoExtractor): name = "YouTube" - # YouTube media encoding options, in descending quality order. + # Non-DASH YouTube media encoding options, in descending quality order. # http://en.wikipedia.org/wiki/YouTube#Quality_and_codecs. Retrieved July 17, 2014. stream_types = [ - {'itag': '38', 'container': 'MP4', 'video_resolution': '3072p', 'video_encoding': 'H.264', 'video_profile': 'High', 'video_bitrate': '3.5-5', 'audio_encoding': 'AAC', 'audio_bitrate': '192'}, + {'itag': '38', 'container': 'MP4', 'video_resolution': '3072p', + 'video_encoding': 'H.264', 'video_profile': 'High', 'video_bitrate': '3.5-5', + 'audio_encoding': 'AAC', 'audio_bitrate': '192'}, #{'itag': '85', 'container': 'MP4', 'video_resolution': '1080p', 'video_encoding': 'H.264', 'video_profile': '3D', 'video_bitrate': '3-4', 'audio_encoding': 'AAC', 'audio_bitrate': '192'}, - {'itag': '46', 'container': 'WebM', 'video_resolution': '1080p', 'video_encoding': 'VP8', 'video_profile': '', 'video_bitrate': '', 'audio_encoding': 'Vorbis', 'audio_bitrate': '192'}, - {'itag': '37', 'container': 'MP4', 'video_resolution': '1080p', 'video_encoding': 'H.264', 'video_profile': 'High', 'video_bitrate': '3-4.3', 'audio_encoding': 'AAC', 'audio_bitrate': '192'}, + {'itag': '46', 'container': 'WebM', 'video_resolution': '1080p', + 'video_encoding': 'VP8', 'video_profile': '', 'video_bitrate': '', + 'audio_encoding': 'Vorbis', 'audio_bitrate': '192'}, + {'itag': '37', 'container': 'MP4', 'video_resolution': '1080p', + 'video_encoding': 'H.264', 'video_profile': 'High', 'video_bitrate': '3-4.3', + 'audio_encoding': 'AAC', 'audio_bitrate': '192'}, #{'itag': '102', 'container': 'WebM', 'video_resolution': '720p', 'video_encoding': 'VP8', 'video_profile': '3D', 'video_bitrate': '', 'audio_encoding': 'Vorbis', 'audio_bitrate': '192'}, - {'itag': '45', 'container': 'WebM', 'video_resolution': '720p', 'video_encoding': 'VP8', 'video_profile': '', 'video_bitrate': '2', 'audio_encoding': 'Vorbis', 'audio_bitrate': '192'}, + {'itag': '45', 'container': 'WebM', 'video_resolution': '720p', + 'video_encoding': 'VP8', 'video_profile': '', 'video_bitrate': '2', + 'audio_encoding': 'Vorbis', 'audio_bitrate': '192'}, #{'itag': '84', 'container': 'MP4', 'video_resolution': '720p', 'video_encoding': 'H.264', 'video_profile': '3D', 'video_bitrate': '2-3', 'audio_encoding': 'AAC', 'audio_bitrate': '192'}, - {'itag': '22', 'container': 'MP4', 'video_resolution': '720p', 'video_encoding': 'H.264', 'video_profile': 'High', 'video_bitrate': '2-3', 'audio_encoding': 'AAC', 'audio_bitrate': '192'}, - {'itag': '120', 'container': 'FLV', 'video_resolution': '720p', 'video_encoding': 'H.264', 'video_profile': 'Main@L3.1', 'video_bitrate': '2', 'audio_encoding': 'AAC', 'audio_bitrate': '128'}, # Live streaming only - {'itag': '44', 'container': 'WebM', 'video_resolution': '480p', 'video_encoding': 'VP8', 'video_profile': '', 'video_bitrate': '1', 'audio_encoding': 'Vorbis', 'audio_bitrate': '128'}, - {'itag': '35', 'container': 'FLV', 'video_resolution': '480p', 'video_encoding': 'H.264', 'video_profile': 'Main', 'video_bitrate': '0.8-1', 'audio_encoding': 'AAC', 'audio_bitrate': '128'}, + {'itag': '22', 'container': 'MP4', 'video_resolution': '720p', + 'video_encoding': 'H.264', 'video_profile': 'High', 'video_bitrate': '2-3', + 'audio_encoding': 'AAC', 'audio_bitrate': '192'}, + {'itag': '120', 'container': 'FLV', 'video_resolution': '720p', + 'video_encoding': 'H.264', 'video_profile': 'Main@L3.1', 'video_bitrate': '2', + 'audio_encoding': 'AAC', 'audio_bitrate': '128'}, # Live streaming only + {'itag': '44', 'container': 'WebM', 'video_resolution': '480p', + 'video_encoding': 'VP8', 'video_profile': '', 'video_bitrate': '1', + 'audio_encoding': 'Vorbis', 'audio_bitrate': '128'}, + {'itag': '35', 'container': 'FLV', 'video_resolution': '480p', + 'video_encoding': 'H.264', 'video_profile': 'Main', 'video_bitrate': '0.8-1', + 'audio_encoding': 'AAC', 'audio_bitrate': '128'}, #{'itag': '101', 'container': 'WebM', 'video_resolution': '360p', 'video_encoding': 'VP8', 'video_profile': '3D', 'video_bitrate': '', 'audio_encoding': 'Vorbis', 'audio_bitrate': '192'}, #{'itag': '100', 'container': 'WebM', 'video_resolution': '360p', 'video_encoding': 'VP8', 'video_profile': '3D', 'video_bitrate': '', 'audio_encoding': 'Vorbis', 'audio_bitrate': '128'}, - {'itag': '43', 'container': 'WebM', 'video_resolution': '360p', 'video_encoding': 'VP8', 'video_profile': '', 'video_bitrate': '0.5', 'audio_encoding': 'Vorbis', 'audio_bitrate': '128'}, - {'itag': '34', 'container': 'FLV', 'video_resolution': '360p', 'video_encoding': 'H.264', 'video_profile': 'Main', 'video_bitrate': '0.5', 'audio_encoding': 'AAC', 'audio_bitrate': '128'}, + {'itag': '43', 'container': 'WebM', 'video_resolution': '360p', + 'video_encoding': 'VP8', 'video_profile': '', 'video_bitrate': '0.5', + 'audio_encoding': 'Vorbis', 'audio_bitrate': '128'}, + {'itag': '34', 'container': 'FLV', 'video_resolution': '360p', + 'video_encoding': 'H.264', 'video_profile': 'Main', 'video_bitrate': '0.5', + 'audio_encoding': 'AAC', 'audio_bitrate': '128'}, #{'itag': '82', 'container': 'MP4', 'video_resolution': '360p', 'video_encoding': 'H.264', 'video_profile': '3D', 'video_bitrate': '0.5', 'audio_encoding': 'AAC', 'audio_bitrate': '96'}, - {'itag': '18', 'container': 'MP4', 'video_resolution': '270p/360p', 'video_encoding': 'H.264', 'video_profile': 'Baseline', 'video_bitrate': '0.5', 'audio_encoding': 'AAC', 'audio_bitrate': '96'}, - {'itag': '6', 'container': 'FLV', 'video_resolution': '270p', 'video_encoding': 'Sorenson H.263', 'video_profile': '', 'video_bitrate': '0.8', 'audio_encoding': 'MP3', 'audio_bitrate': '64'}, + {'itag': '18', 'container': 'MP4', 'video_resolution': '360p', + 'video_encoding': 'H.264', 'video_profile': 'Baseline', 'video_bitrate': '0.5', + 'audio_encoding': 'AAC', 'audio_bitrate': '96'}, + {'itag': '6', 'container': 'FLV', 'video_resolution': '270p', + 'video_encoding': 'Sorenson H.263', 'video_profile': '', 'video_bitrate': '0.8', + 'audio_encoding': 'MP3', 'audio_bitrate': '64'}, #{'itag': '83', 'container': 'MP4', 'video_resolution': '240p', 'video_encoding': 'H.264', 'video_profile': '3D', 'video_bitrate': '0.5', 'audio_encoding': 'AAC', 'audio_bitrate': '96'}, - {'itag': '13', 'container': '3GP', 'video_resolution': '', 'video_encoding': 'MPEG-4 Visual', 'video_profile': '', 'video_bitrate': '0.5', 'audio_encoding': 'AAC', 'audio_bitrate': ''}, - {'itag': '5', 'container': 'FLV', 'video_resolution': '240p', 'video_encoding': 'Sorenson H.263', 'video_profile': '', 'video_bitrate': '0.25', 'audio_encoding': 'MP3', 'audio_bitrate': '64'}, - {'itag': '36', 'container': '3GP', 'video_resolution': '240p', 'video_encoding': 'MPEG-4 Visual', 'video_profile': 'Simple', 'video_bitrate': '0.175', 'audio_encoding': 'AAC', 'audio_bitrate': '36'}, - {'itag': '17', 'container': '3GP', 'video_resolution': '144p', 'video_encoding': 'MPEG-4 Visual', 'video_profile': 'Simple', 'video_bitrate': '0.05', 'audio_encoding': 'AAC', 'audio_bitrate': '24'}, + {'itag': '13', 'container': '3GP', 'video_resolution': '', + 'video_encoding': 'MPEG-4 Visual', 'video_profile': '', 'video_bitrate': '0.5', + 'audio_encoding': 'AAC', 'audio_bitrate': ''}, + {'itag': '5', 'container': 'FLV', 'video_resolution': '240p', + 'video_encoding': 'Sorenson H.263', 'video_profile': '', 'video_bitrate': '0.25', + 'audio_encoding': 'MP3', 'audio_bitrate': '64'}, + {'itag': '36', 'container': '3GP', 'video_resolution': '240p', + 'video_encoding': 'MPEG-4 Visual', 'video_profile': 'Simple', 'video_bitrate': '0.175', + 'audio_encoding': 'AAC', 'audio_bitrate': '32'}, + {'itag': '17', 'container': '3GP', 'video_resolution': '144p', + 'video_encoding': 'MPEG-4 Visual', 'video_profile': 'Simple', 'video_bitrate': '0.05', + 'audio_encoding': 'AAC', 'audio_bitrate': '24'}, ] def decipher(js, s):