summary refs log tree commit diff
diff options
context:
space:
mode:
authorSergey M․ <dstftw@gmail.com>2014-10-20 20:27:59 +0700
committerSergey M․ <dstftw@gmail.com>2014-10-20 20:27:59 +0700
commitd24a2b20b4908b01f9b5bfa88cd293c189fe6475 (patch)
tree8d96fb7eba0d9891fad2a71cb7bd71917a31f484
parentcc98a3f09651423f4405933265c6dcf2ae51011f (diff)
downloadyoutube-dl-d24a2b20b4908b01f9b5bfa88cd293c189fe6475.tar.gz
youtube-dl-d24a2b20b4908b01f9b5bfa88cd293c189fe6475.tar.xz
youtube-dl-d24a2b20b4908b01f9b5bfa88cd293c189fe6475.zip
[arte.tv:+7] Use original format ids to avoid duplicates
-rw-r--r--youtube_dl/extractor/arte.py30
1 files changed, 11 insertions, 19 deletions
diff --git a/youtube_dl/extractor/arte.py b/youtube_dl/extractor/arte.py
index 3a34d1ecc..a42ebff8e 100644
--- a/youtube_dl/extractor/arte.py
+++ b/youtube_dl/extractor/arte.py
@@ -12,6 +12,7 @@ from ..utils import (
     get_element_by_id,
     compat_str,
     get_element_by_attribute,
+    int_or_none,
 )
 
 # There are different sources of video in arte.tv, the extraction process 
@@ -98,7 +99,11 @@ class ArteTVPlus7IE(InfoExtractor):
             'thumbnail': player_info.get('programImage') or player_info.get('VTU', {}).get('IUR'),
         }
 
-        all_formats = player_info['VSR'].values()
+        all_formats = []
+        for format_id, format_dict in player_info['VSR'].items():
+            fmt = dict(format_dict)
+            fmt['format_id'] = format_id
+            all_formats.append(fmt)
         # Some formats use the m3u8 protocol
         all_formats = list(filter(lambda f: f.get('videoFormat') != 'M3U8', all_formats))
         def _match_lang(f):
@@ -149,25 +154,12 @@ class ArteTVPlus7IE(InfoExtractor):
                 )
         formats = sorted(formats, key=sort_key)
         def _format(format_info):
-            quality = ''
-            height = format_info.get('height')
-            if height is not None:
-                quality = compat_str(height)
-            bitrate = format_info.get('bitrate')
-            if bitrate is not None:
-                quality += '-%d' % bitrate
-            if format_info.get('versionCode') is not None:
-                format_id = '%s-%s' % (quality, format_info['versionCode'])
-            else:
-                format_id = quality
-            media_type = format_info.get('mediaType')
-            if media_type is not None:
-                format_id += '-%s' % media_type
             info = {
-                'format_id': format_id,
-                'format_note': format_info.get('versionLibelle'),
-                'width': format_info.get('width'),
-                'height': height,
+                'format_id': format_info['format_id'],
+                'format_note': '%s, %s' % (format_info.get('versionCode'), format_info.get('versionLibelle')),
+                'width': int_or_none(format_info.get('width')),
+                'height': int_or_none(format_info.get('height')),
+                'tbr': int_or_none(format_info.get('bitrate')),
             }
             if format_info['mediaType'] == 'rtmp':
                 info['url'] = format_info['streamer']