[rtbf] Minor changes and YouTube videos support

This commit is contained in:
Sergey M․ 2014-04-29 19:41:58 +07:00
parent 98b7d476d9
commit 65e4ad5bfe
2 changed files with 21 additions and 20 deletions

View File

@ -210,7 +210,7 @@ from .ringtv import RingTVIE
from .ro220 import Ro220IE from .ro220 import Ro220IE
from .rottentomatoes import RottenTomatoesIE from .rottentomatoes import RottenTomatoesIE
from .roxwel import RoxwelIE from .roxwel import RoxwelIE
from .rtbf import RTBFVideoIE from .rtbf import RTBFIE
from .rtlnow import RTLnowIE from .rtlnow import RTLnowIE
from .rts import RTSIE from .rts import RTSIE
from .rtve import RTVEALaCartaIE from .rtve import RTVEALaCartaIE

View File

@ -5,10 +5,10 @@ import re
import json import json
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import clean_html
class RTBFVideoIE(InfoExtractor):
_VALID_URL = r'https?://www.rtbf.be/video/(?P<title>[^?]+)\?.*id=(?P<id>[0-9]+)' class RTBFIE(InfoExtractor):
_VALID_URL = r'https?://www.rtbf.be/video/[^\?]+\?id=(?P<id>\d+)'
_TEST = { _TEST = {
'url': 'https://www.rtbf.be/video/detail_les-diables-au-coeur-episode-2?id=1921274', 'url': 'https://www.rtbf.be/video/detail_les-diables-au-coeur-episode-2?id=1921274',
'md5': '799f334ddf2c0a582ba80c44655be570', 'md5': '799f334ddf2c0a582ba80c44655be570',
@ -16,7 +16,10 @@ class RTBFVideoIE(InfoExtractor):
'id': '1921274', 'id': '1921274',
'ext': 'mp4', 'ext': 'mp4',
'title': 'Les Diables au coeur (épisode 2)', 'title': 'Les Diables au coeur (épisode 2)',
'description': 'Football - Diables Rouges',
'duration': 3099, 'duration': 3099,
'timestamp': 1398456336,
'upload_date': '20140425',
} }
} }
@ -24,25 +27,23 @@ class RTBFVideoIE(InfoExtractor):
mobj = re.match(self._VALID_URL, url) mobj = re.match(self._VALID_URL, url)
video_id = mobj.group('id') video_id = mobj.group('id')
# TODO more code goes here, for example ... page = self._download_webpage('https://www.rtbf.be/video/embed?id=%s' % video_id, video_id)
webpage = self._download_webpage(url, video_id)
title = self._html_search_regex(
r'<meta property="og:description" content="([^"]*)"',
webpage, 'title', mobj.group('title'))
iframe_url = self._html_search_regex(r'<iframe [^>]*src="([^"]+)"', data = json.loads(self._html_search_regex(
webpage, 'iframe') r'<div class="js-player-embed" data-video="([^"]+)"', page, 'data video'))['data']
iframe = self._download_webpage(iframe_url, video_id)
data_video_idx = iframe.find('data-video') video_url = data.get('downloadUrl') or data.get('url')
next_data_idx = iframe.find('data-', data_video_idx + 1)
json_data_start = data_video_idx + len('data-video=') + 1 if data['provider'].lower() == 'youtube':
json_data_end = next_data_idx - 2 return self.url_result(video_url, 'Youtube')
video_data = json.loads(clean_html(iframe[json_data_start:json_data_end]))
return { return {
'id': video_id, 'id': video_id,
'title': title, 'url': video_url,
'url': video_data['data']['downloadUrl'], 'title': data['title'],
'duration': video_data['data']['duration'], 'description': data.get('description') or data.get('subtitle'),
'thumbnail': data['thumbnail']['large'],
'duration': data.get('duration') or data.get('realDuration'),
'timestamp': data['created'],
'view_count': data['viewCount'],
} }