- 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',
- }
-
- def _extract_liveweb(self, url, name, lang):
- """Extract form http://liveweb.arte.tv/"""
- webpage = self._download_webpage(url, name)
- video_id = self._search_regex(r'eventId=(\d+?)("|&)', webpage, u'event id')
- config_doc = self._download_xml('http://download.liveweb.arte.tv/o21/liveweb/events/event-%s.xml' % video_id,
- video_id, u'Downloading information')
- event_doc = config_doc.find('event')
- url_node = event_doc.find('video').find('urlHd')
- if url_node is None:
- url_node = event_doc.find('urlSd')
-
- return {'id': video_id,
- 'title': event_doc.find('name%s' % lang.capitalize()).text,
- 'url': url_node.text.replace('MP4', 'mp4'),
- 'ext': 'flv',
- 'thumbnail': self._og_search_thumbnail(webpage),
- }
-
-
-class ArteTVPlus7IE(InfoExtractor):
- IE_NAME = u'arte.tv:+7'
- _VALID_URL = r'https?://www\.arte.tv/guide/(?P<lang>fr|de)/(?:(?:sendungen|emissions)/)?(?P<id>.*?)/(?P<name>.*?)(\?.*)?'
-
- @classmethod
- def _extract_url_info(cls, url):
- mobj = re.match(cls._VALID_URL, url)
- lang = mobj.group('lang')
- # This is not a real id, it can be for example AJT for the news
- # http://www.arte.tv/guide/fr/emissions/AJT/arte-journal
- video_id = mobj.group('id')
- return video_id, lang
-
- def _real_extract(self, url):
- video_id, lang = self._extract_url_info(url)
- webpage = self._download_webpage(url, video_id)
- return self._extract_from_webpage(webpage, video_id, lang)
-
- def _extract_from_webpage(self, webpage, video_id, lang):
- json_url = self._html_search_regex(r'arte_vp_url="(.*?)"', webpage, 'json url')
- return self._extract_from_json_url(json_url, video_id, lang)
-
- def _extract_from_json_url(self, json_url, video_id, lang):
- json_info = self._download_webpage(json_url, video_id, 'Downloading info json')
- self.report_extraction(video_id)
- info = json.loads(json_info)