about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPhilipp Hagemeister <phihag@phihag.de>2014-03-24 21:36:26 +0100
committerPhilipp Hagemeister <phihag@phihag.de>2014-03-24 21:36:26 +0100
commit878d11ec29d63b2c8ca32163f38762d1b12a52c6 (patch)
treedf1ff1c78578b419af1da26718dee6631afde22a
parent515bbe4b5b299bc564c3ee68c09cde100c8aaaca (diff)
downloadyoutube-dl-878d11ec29d63b2c8ca32163f38762d1b12a52c6.tar.gz
youtube-dl-878d11ec29d63b2c8ca32163f38762d1b12a52c6.tar.xz
youtube-dl-878d11ec29d63b2c8ca32163f38762d1b12a52c6.zip
[arte] Add support for multiple formats
-rw-r--r--youtube_dl/extractor/arte.py38
1 files changed, 17 insertions, 21 deletions
diff --git a/youtube_dl/extractor/arte.py b/youtube_dl/extractor/arte.py
index edf627e3c..49fb64077 100644
--- a/youtube_dl/extractor/arte.py
+++ b/youtube_dl/extractor/arte.py
@@ -21,7 +21,7 @@ from ..utils import (
 
 
 class ArteTvIE(InfoExtractor):
-    _VALID_URL = r'(?:http://)?videos\.arte\.tv/(?P<lang>fr|de)/.*-(?P<id>.*?)\.html'
+    _VALID_URL = r'http://videos\.arte\.tv/(?P<lang>fr|de)/.*-(?P<id>.*?)\.html'
     IE_NAME = 'arte.tv'
 
     def _real_extract(self, url):
@@ -31,28 +31,24 @@ class ArteTvIE(InfoExtractor):
             ref_xml_url, video_id, note='Downloading metadata')
         config_node = find_xpath_attr(ref_xml_doc, './/video', 'lang', lang)
         config_xml_url = config_node.attrib['ref']
-        config_xml = self._download_webpage(
+        config = self._download_xml(
             config_xml_url, video_id, note='Downloading configuration')
 
-        video_urls = list(re.finditer(r'<url quality="(?P<quality>.*?)">(?P<url>.*?)</url>', config_xml))
-        def _key(m):
-            quality = m.group('quality')
-            if quality == 'hd':
-                return 2
-            else:
-                return 1
-        # We pick the best quality
-        video_urls = sorted(video_urls, key=_key)
-        video_url = list(video_urls)[-1].group('url')
-        
-        title = self._html_search_regex(r'<name>(.*?)</name>', config_xml, 'title')
-        thumbnail = self._html_search_regex(r'<firstThumbnailUrl>(.*?)</firstThumbnailUrl>',
-                                            config_xml, 'thumbnail')
-        return {'id': video_id,
-                'title': title,
-                'thumbnail': thumbnail,
-                'url': video_url,
-                'ext': 'flv',
+        formats = [{
+            'forma_id': q.attrib['quality'],
+            'url': q.text,
+            'quality': 2 if q.attrib['quality'] == 'hd' else 1,
+        } for q in config.findall('.//quality')]
+        self._sort_formats(formats)
+
+        title = config.find('.//name').text
+        thumbnail = config.find('.//firstThumbnailUrl').text
+        return {
+            'id': video_id,
+            'title': title,
+            'thumbnail': thumbnail,
+            'url': video_url,
+            'ext': 'flv',
         }