projects
/
youtube-dl
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[nowness] fix video extraction and add support serie and playlist extraction (fixes...
[youtube-dl]
/
youtube_dl
/
extractor
/
rtbf.py
diff --git
a/youtube_dl/extractor/rtbf.py
b/youtube_dl/extractor/rtbf.py
index 205f8a167601f9f7c6a20ccf721439a7b070516f..e4215d546219bb95fe79abfb184da149148962db 100644
(file)
--- a/
youtube_dl/extractor/rtbf.py
+++ b/
youtube_dl/extractor/rtbf.py
@@
-1,10
+1,11
@@
# coding: utf-8
from __future__ import unicode_literals
# coding: utf-8
from __future__ import unicode_literals
-import re
-import json
-
from .common import InfoExtractor
from .common import InfoExtractor
+from ..utils import (
+ int_or_none,
+ unescapeHTML,
+)
class RTBFIE(InfoExtractor):
class RTBFIE(InfoExtractor):
@@
-16,34
+17,47
@@
class RTBFIE(InfoExtractor):
'id': '1921274',
'ext': 'mp4',
'title': 'Les Diables au coeur (épisode 2)',
'id': '1921274',
'ext': 'mp4',
'title': 'Les Diables au coeur (épisode 2)',
- 'description': 'Football - Diables Rouges',
'duration': 3099,
'duration': 3099,
- 'timestamp': 1398456336,
- 'upload_date': '20140425',
}
}
}
}
- def _real_extract(self, url):
- mobj = re.match(self._VALID_URL, url)
- video_id = mobj.group('id')
+ _QUALITIES = [
+ ('mobile', 'mobile'),
+ ('web', 'SD'),
+ ('url', 'MD'),
+ ('high', 'HD'),
+ ]
- page = self._download_webpage('https://www.rtbf.be/video/embed?id=%s' % video_id, video_id)
+ def _real_extract(self, url):
+ video_id = self._match_id(url)
-
data = json.loads(self._html_search_regex
(
- r'<div class="js-player-embed" data-video="([^"]+)"', page, 'data video'))['data']
+
webpage = self._download_webpage
(
+ 'http://www.rtbf.be/video/embed?id=%s' % video_id, video_id)
- video_url = data.get('downloadUrl') or data.get('url')
+ data = self._parse_json(
+ unescapeHTML(self._search_regex(
+ r'data-video="([^"]+)"', webpage, 'data video')),
+ video_id)
- if data['provider'].lower() == 'youtube':
+ if data.get('provider').lower() == 'youtube':
+ video_url = data.get('downloadUrl') or data.get('url')
return self.url_result(video_url, 'Youtube')
return self.url_result(video_url, 'Youtube')
+ formats = []
+ for key, format_id in self._QUALITIES:
+ format_url = data['sources'].get(key)
+ if format_url:
+ formats.append({
+ 'format_id': format_id,
+ 'url': format_url,
+ })
return {
'id': video_id,
return {
'id': video_id,
- '
url': video_url
,
+ '
formats': formats
,
'title': data['title'],
'description': data.get('description') or data.get('subtitle'),
'title': data['title'],
'description': data.get('description') or data.get('subtitle'),
- 'thumbnail': data
['thumbnail']['large']
,
+ 'thumbnail': data
.get('thumbnail')
,
'duration': data.get('duration') or data.get('realDuration'),
'duration': data.get('duration') or data.get('realDuration'),
- 'timestamp':
data['created']
,
- 'view_count':
data['viewCount']
,
+ 'timestamp':
int_or_none(data.get('created'))
,
+ 'view_count':
int_or_none(data.get('viewCount'))
,
}
}