summary refs log tree commit diff
diff options
context:
space:
mode:
authorJaime Marquínez Ferrándiz <jaime.marquinez.ferrandiz@gmail.com>2013-10-29 20:58:49 +0100
committerJaime Marquínez Ferrándiz <jaime.marquinez.ferrandiz@gmail.com>2013-10-29 20:58:49 +0100
commit21c924f4068692786e0c5435689d10f3d17ef612 (patch)
treea2017b391786aa819ed1349a1a00a8606fa710b9
parente54fd4b23b8110779e8caff805d3078dcf042d0b (diff)
downloadyoutube-dl-21c924f4068692786e0c5435689d10f3d17ef612.tar.gz
youtube-dl-21c924f4068692786e0c5435689d10f3d17ef612.tar.xz
youtube-dl-21c924f4068692786e0c5435689d10f3d17ef612.zip
[arte] Download the 'Originalversion' version if it's the only one available (fixes #1682)
-rw-r--r--youtube_dl/extractor/arte.py17
1 files changed, 12 insertions, 5 deletions
diff --git a/youtube_dl/extractor/arte.py b/youtube_dl/extractor/arte.py
index d39b48951..e10c74c11 100644
--- a/youtube_dl/extractor/arte.py
+++ b/youtube_dl/extractor/arte.py
@@ -158,7 +158,9 @@ class ArteTVPlus7IE(InfoExtractor):
             'thumbnail': player_info.get('programImage') or player_info.get('VTU', {}).get('IUR'),
         }
 
-        formats = player_info['VSR'].values()
+        all_formats = player_info['VSR'].values()
+        # Some formats use the m3u8 protocol
+        all_formats = list(filter(lambda f: f.get('videoFormat') != 'M3U8', all_formats))
         def _match_lang(f):
             if f.get('versionCode') is None:
                 return True
@@ -170,11 +172,16 @@ class ArteTVPlus7IE(InfoExtractor):
             regexes = [r'VO?%s' % l, r'VO?.-ST%s' % l]
             return any(re.match(r, f['versionCode']) for r in regexes)
         # Some formats may not be in the same language as the url
-        formats = filter(_match_lang, formats)
-        # Some formats use the m3u8 protocol
-        formats = filter(lambda f: f.get('videoFormat') != 'M3U8', formats)
-        # We order the formats by quality
+        formats = filter(_match_lang, all_formats)
         formats = list(formats) # in python3 filter returns an iterator
+        if not formats:
+            # Some videos are only available in the 'Originalversion'
+            # they aren't tagged as being in French or German
+            if all(f['versionCode'] == 'VO' for f in all_formats):
+                formats = all_formats
+            else:
+                raise ExtractorError(u'The formats list is empty')
+        # We order the formats by quality
         if re.match(r'[A-Z]Q', formats[0]['quality']) is not None:
             sort_key = lambda f: ['HQ', 'MQ', 'EQ', 'SQ'].index(f['quality'])
         else: