[youtube] fix the order of DASH formats
[youtube-dl] / youtube_dl / extractor / youtube.py
index 1cd2d40f18bc9af648f5cb299695864e6d6269fb..c539b6891ce03f2c7288bd40eaef5bda458eaef9 100644 (file)
@@ -155,19 +155,22 @@ 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',
-                          '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
+                          # 3D
+                          '85', '84', '102', '83', '101', '82', '100',
+                          # Dash video
+                          '138', '137', '248', '136', '247', '135', '246',
+                          '245', '244', '134', '243', '133', '242', '160',
+                          # Dash audio
+                          '141', '172', '140', '171', '139',
                           ]
     _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
+                                      # Dash video
+                                      '138', '248', '137', '247', '136', '246', '245',
+                                      '244', '135', '243', '134', '242', '133', '160',
+                                      # Dash audio
+                                      '172', '141', '171', '140', '139',
                                       ]
     _video_extensions = {
         '13': '3gp',
@@ -333,7 +336,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
                 u"upload_date": u"20120506",
                 u"title": u"Icona Pop - I Love It (feat. Charli XCX) [OFFICIAL VIDEO]",
                 u"description": u"md5:b085c9804f5ab69f4adea963a2dceb3c",
-                u"uploader": u"IconaPop",
+                u"uploader": u"Icona Pop",
                 u"uploader_id": u"IconaPop"
             }
         },
@@ -778,11 +781,16 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
                 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.get('adaptive_fmts', u''))
-            if m_s is not None and 'adaptive_fmts' in args:
-                video_info['url_encoded_fmt_stream_map'][0] += ','+args['adaptive_fmts']
+            if m_s is not None:
+                if 'url_encoded_fmt_stream_map' in video_info:
+                    video_info['url_encoded_fmt_stream_map'][0] += ',' + args['adaptive_fmts']
+                else:
+                    video_info['url_encoded_fmt_stream_map'] = [args['adaptive_fmts']]
             elif 'adaptive_fmts' in video_info:
-                video_info['url_encoded_fmt_stream_map'][0] += ','+video_info['adaptive_fmts'][0]
-
+                if 'url_encoded_fmt_stream_map' in video_info:
+                    video_info['url_encoded_fmt_stream_map'][0] += ',' + video_info['adaptive_fmts'][0]
+                else:
+                    video_info['url_encoded_fmt_stream_map'] = video_info['adaptive_fmts']
         except ValueError:
             pass