1
0
mirror of https://github.com/l1ving/youtube-dl synced 2025-03-12 23:07:29 +08:00

[europa] Add new extractor for the European Commission video service.

The test URL for download is

http://ec.europa.eu/avservices/video/player.cfm?ref=I107758

Fixes #6528 and #6538
This commit is contained in:
ngld 2015-08-12 16:59:04 +02:00 committed by Matěj Cepl
parent 06c6efa970
commit 626a1ada0e
2 changed files with 61 additions and 0 deletions

View File

@ -158,6 +158,7 @@ from .eroprofile import EroProfileIE
from .escapist import EscapistIE
from .espn import ESPNIE
from .esri import EsriVideoIE
from .europa import EuropaIE
from .everyonesmixtape import EveryonesMixtapeIE
from .exfm import ExfmIE
from .expotv import ExpoTVIE

View File

@ -0,0 +1,60 @@
# coding: utf-8
from __future__ import unicode_literals
from .common import InfoExtractor
from ..utils import (
compat_urlparse,
xpath_text
)
class EuropaIE(InfoExtractor):
_VALID_URL = r'https?://ec\.europa\.eu/avservices/video/player\.cfm\?(?:[^&]|&(?!ref))*ref=(?P<id>[A-Za-z0-9]+)'
_TEST = {
'url': 'http://ec.europa.eu/avservices/video/player.cfm?ref=I107758',
'md5': '728cca2fd41d5aa7350cec1141fbe620',
'info_dict': {
'id': 'I107758',
'ext': 'mp4',
'title': 'TRADE - Wikileaks on TTIP',
'description': 'NEW LIVE EC Midday press briefing of 11/08/2015',
'thumbnail': 're:^http://defiris\.ec\.streamcloud\.be/findmedia/18/107758/THUMB_[0-9A-Z]+\.jpg$'
}
}
def _real_extract(self, url):
video_id = self._match_id(url)
query = compat_urlparse.parse_qs(compat_urlparse.urlparse(url).query)
lang = query.get('sitelang', ['en'])[0]
playlist = self._download_xml('http://ec.europa.eu/avservices/video/player/playlist.cfm?ID=' + video_id, video_id)
videos = {}
formats = []
for item in playlist.findall('info/title/item'):
videos[xpath_text(item, 'lg')] = {'title': xpath_text(item, 'label').strip()}
for item in playlist.findall('info/description/item'):
videos[xpath_text(item, 'lg')]['description'] = xpath_text(item, 'label').strip()
for item in playlist.findall('files/file'):
lg = xpath_text(item, 'lg')
vid = videos[lg]
vid['format_note'] = xpath_text(item, 'lglabel')
vid['url'] = xpath_text(item, 'url')
if lg == lang:
vid['language_preference'] = 10
formats.append(vid)
formats.reverse()
def_video = videos.get(lang, videos['int'])
return {
'id': video_id,
'title': def_video['title'],
'description': def_video['description'],
'thumbnail': xpath_text(playlist, 'info/thumburl', 'thumburl'),
'formats': formats
}