projects
/
youtube-dl
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
90d3989
)
Add YouTube DASH formats to YouTubeIE
author
Allan Zhou
<allanzp@gmail.com>
Tue, 20 Aug 2013 01:22:25 +0000
(18:22 -0700)
committer
Allan Zhou
<allanzp@gmail.com>
Tue, 20 Aug 2013 01:22:25 +0000
(18:22 -0700)
youtube_dl/extractor/youtube.py
patch
|
blob
|
history
diff --git
a/youtube_dl/extractor/youtube.py
b/youtube_dl/extractor/youtube.py
index 843a973ca720d778ba1b2f6f41761e126237549d..248105d7f21af0a8eb34261ee4ea54591f81c439 100644
(file)
--- a/
youtube_dl/extractor/youtube.py
+++ b/
youtube_dl/extractor/youtube.py
@@
-155,11
+155,19
@@
class YoutubeIE(YoutubeBaseInfoExtractor):
# Listed in order of quality
_available_formats = ['38', '37', '46', '22', '45', '35', '44', '34', '18', '43', '6', '5', '17', '13',
'95', '94', '93', '92', '132', '151',
# Listed in order of quality
_available_formats = ['38', '37', '46', '22', '45', '35', '44', '34', '18', '43', '6', '5', '17', '13',
'95', '94', '93', '92', '132', '151',
- '85', '84', '102', '83', '101', '82', '100',
+ '85', '84', '102', '83', '101', '82', '100', # 3D
+ '138', '137', '136', '135', '134', '133', '160', # Dash video mp4
+ '141', '140', '139', # Dash auido mp4
+ '248', '247', '246', '245', '244', '243', '242', # Dash video webm
+ '172', '171', # Dash audio webm
]
_available_formats_prefer_free = ['38', '46', '37', '45', '22', '44', '35', '43', '34', '18', '6', '5', '17', '13',
'95', '94', '93', '92', '132', '151',
'85', '102', '84', '101', '83', '100', '82',
]
_available_formats_prefer_free = ['38', '46', '37', '45', '22', '44', '35', '43', '34', '18', '6', '5', '17', '13',
'95', '94', '93', '92', '132', '151',
'85', '102', '84', '101', '83', '100', '82',
+ '248', '247', '246', '245', '244', '243', '242', # Dash video webm
+ '172', '171', # Dash audio webm
+ '138', '137', '136', '135', '134', '133', '160', # Dash video mp4
+ '141', '140', '139', # Dash auido mp4
]
_video_extensions = {
'13': '3gp',
]
_video_extensions = {
'13': '3gp',
@@
-181,7
+189,7
@@
class YoutubeIE(YoutubeBaseInfoExtractor):
'100': 'webm',
'101': 'webm',
'102': 'webm',
'100': 'webm',
'101': 'webm',
'102': 'webm',
-
+
# videos that use m3u8
'92': 'mp4',
'93': 'mp4',
# videos that use m3u8
'92': 'mp4',
'93': 'mp4',
@@
-190,6
+198,29
@@
class YoutubeIE(YoutubeBaseInfoExtractor):
'96': 'mp4',
'132': 'mp4',
'151': 'mp4',
'96': 'mp4',
'132': 'mp4',
'151': 'mp4',
+
+ # Dash mp4
+ '133': 'mp4',
+ '134': 'mp4',
+ '135': 'mp4',
+ '136': 'mp4',
+ '137': 'mp4',
+ '138': 'mp4',
+ '139': 'mp4',
+ '140': 'mp4',
+ '141': 'mp4',
+ '160': 'mp4',
+
+ # Dash webm
+ '171': 'webm',
+ '172': 'webm',
+ '242': 'webm',
+ '243': 'webm',
+ '244': 'webm',
+ '245': 'webm',
+ '246': 'webm',
+ '247': 'webm',
+ '248': 'webm',
}
_video_dimensions = {
'5': '240x400',
}
_video_dimensions = {
'5': '240x400',
@@
-217,11
+248,58
@@
class YoutubeIE(YoutubeBaseInfoExtractor):
'96': '1080p',
'100': '360p',
'101': '480p',
'96': '1080p',
'100': '360p',
'101': '480p',
- '102': '720p',
+ '102': '720p',
'132': '240p',
'151': '72p',
'132': '240p',
'151': '72p',
+ '133': '240p',
+ '134': '360p',
+ '135': '480p',
+ '136': '720p',
+ '137': '1080p',
+ '138': '>1080p',
+ '139': '48k',
+ '140': '128k',
+ '141': '256k',
+ '160': '192p',
+ '171': '128k',
+ '172': '256k',
+ '242': '240p',
+ '243': '360p',
+ '244': '480p',
+ '245': '480p',
+ '246': '480p',
+ '247': '720p',
+ '248': '1080p',
+ }
+ _special_itags = {
+ '82': '3D',
+ '83': '3D',
+ '84': '3D',
+ '85': '3D',
+ '100': '3D',
+ '101': '3D',
+ '102': '3D',
+ '133': 'DASH Video',
+ '134': 'DASH Video',
+ '135': 'DASH Video',
+ '136': 'DASH Video',
+ '137': 'DASH Video',
+ '138': 'DASH Video',
+ '139': 'DASH Audio',
+ '140': 'DASH Audio',
+ '141': 'DASH Audio',
+ '160': 'DASH Video',
+ '171': 'DASH Audio',
+ '172': 'DASH Audio',
+ '242': 'DASH Video',
+ '243': 'DASH Video',
+ '244': 'DASH Video',
+ '245': 'DASH Video',
+ '246': 'DASH Video',
+ '247': 'DASH Video',
+ '248': 'DASH Video',
}
}
- _3d_itags = ['85', '84', '102', '83', '101', '82', '100']
+
IE_NAME = u'youtube'
_TESTS = [
{
IE_NAME = u'youtube'
_TESTS = [
{
@@
-472,7
+550,7
@@
class YoutubeIE(YoutubeBaseInfoExtractor):
for x in formats:
print('%s\t:\t%s\t[%s]%s' %(x, self._video_extensions.get(x, 'flv'),
self._video_dimensions.get(x, '???'),
for x in formats:
print('%s\t:\t%s\t[%s]%s' %(x, self._video_extensions.get(x, 'flv'),
self._video_dimensions.get(x, '???'),
- ' (
3D)' if x in self._3d
_itags else ''))
+ ' (
'+self._special_itags[x]+')' if x in self._special
_itags else ''))
def _extract_id(self, url):
mobj = re.match(self._VALID_URL, url, re.VERBOSE)
def _extract_id(self, url):
mobj = re.match(self._VALID_URL, url, re.VERBOSE)
@@
-699,6
+777,12
@@
class YoutubeIE(YoutubeBaseInfoExtractor):
if m_s is not None:
self.to_screen(u'%s: Encrypted signatures detected.' % video_id)
video_info['url_encoded_fmt_stream_map'] = [args['url_encoded_fmt_stream_map']]
if m_s is not None:
self.to_screen(u'%s: Encrypted signatures detected.' % video_id)
video_info['url_encoded_fmt_stream_map'] = [args['url_encoded_fmt_stream_map']]
+ m_s = re.search(r'[&,]s=', args['adaptive_fmts'])
+ if m_s is not None:
+ video_info['url_encoded_fmt_stream_map'][0] += ','+args['adaptive_fmts']
+ else:
+ video_info['url_encoded_fmt_stream_map'][0] += ','+video_info['adaptive_fmts'][0]
+
except ValueError:
pass
except ValueError:
pass
@@
-758,7
+842,7
@@
class YoutubeIE(YoutubeBaseInfoExtractor):
video_format = '{0} - {1}{2}'.format(format_param if format_param else video_extension,
self._video_dimensions.get(format_param, '???'),
video_format = '{0} - {1}{2}'.format(format_param if format_param else video_extension,
self._video_dimensions.get(format_param, '???'),
- ' (
3D)' if format_param in self._3d
_itags else '')
+ ' (
'+self._special_itags[format_param]+')' if format_param in self._special
_itags else '')
results.append({
'id': video_id,
results.append({
'id': video_id,