[bbc] Add support for bbcthree (closes #16612)
This commit is contained in:
parent
eb6793ba97
commit
6d155707e6
1 changed files with 42 additions and 0 deletions
|
@ -12,6 +12,7 @@ from ..utils import (
|
||||||
float_or_none,
|
float_or_none,
|
||||||
get_element_by_class,
|
get_element_by_class,
|
||||||
int_or_none,
|
int_or_none,
|
||||||
|
js_to_json,
|
||||||
parse_duration,
|
parse_duration,
|
||||||
parse_iso8601,
|
parse_iso8601,
|
||||||
try_get,
|
try_get,
|
||||||
|
@ -772,6 +773,17 @@ class BBCIE(BBCCoUkIE):
|
||||||
# single video article embedded with data-media-vpid
|
# single video article embedded with data-media-vpid
|
||||||
'url': 'http://www.bbc.co.uk/sport/rowing/35908187',
|
'url': 'http://www.bbc.co.uk/sport/rowing/35908187',
|
||||||
'only_matching': True,
|
'only_matching': True,
|
||||||
|
}, {
|
||||||
|
'url': 'https://www.bbc.co.uk/bbcthree/clip/73d0bbd0-abc3-4cea-b3c0-cdae21905eb1',
|
||||||
|
'info_dict': {
|
||||||
|
'id': 'p06556y7',
|
||||||
|
'ext': 'mp4',
|
||||||
|
'title': 'Transfers: Cristiano Ronaldo to Man Utd, Arsenal to spend?',
|
||||||
|
'description': 'md5:4b7dfd063d5a789a1512e99662be3ddd',
|
||||||
|
},
|
||||||
|
'params': {
|
||||||
|
'skip_download': True,
|
||||||
|
}
|
||||||
}]
|
}]
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
@ -994,6 +1006,36 @@ class BBCIE(BBCCoUkIE):
|
||||||
'subtitles': subtitles,
|
'subtitles': subtitles,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bbc3_config = self._parse_json(
|
||||||
|
self._search_regex(
|
||||||
|
r'(?s)bbcthreeConfig\s*=\s*({.+?})\s*;\s*<', webpage,
|
||||||
|
'bbcthree config', default='{}'),
|
||||||
|
playlist_id, transform_source=js_to_json, fatal=False)
|
||||||
|
if bbc3_config:
|
||||||
|
bbc3_playlist = try_get(
|
||||||
|
bbc3_config, lambda x: x['payload']['content']['bbcMedia']['playlist'],
|
||||||
|
dict)
|
||||||
|
if bbc3_playlist:
|
||||||
|
playlist_title = bbc3_playlist.get('title') or playlist_title
|
||||||
|
thumbnail = bbc3_playlist.get('holdingImageURL')
|
||||||
|
entries = []
|
||||||
|
for bbc3_item in bbc3_playlist['items']:
|
||||||
|
programme_id = bbc3_item.get('versionID')
|
||||||
|
if not programme_id:
|
||||||
|
continue
|
||||||
|
formats, subtitles = self._download_media_selector(programme_id)
|
||||||
|
self._sort_formats(formats)
|
||||||
|
entries.append({
|
||||||
|
'id': programme_id,
|
||||||
|
'title': playlist_title,
|
||||||
|
'thumbnail': thumbnail,
|
||||||
|
'timestamp': timestamp,
|
||||||
|
'formats': formats,
|
||||||
|
'subtitles': subtitles,
|
||||||
|
})
|
||||||
|
return self.playlist_result(
|
||||||
|
entries, playlist_id, playlist_title, playlist_description)
|
||||||
|
|
||||||
def extract_all(pattern):
|
def extract_all(pattern):
|
||||||
return list(filter(None, map(
|
return list(filter(None, map(
|
||||||
lambda s: self._parse_json(s, playlist_id, fatal=False),
|
lambda s: self._parse_json(s, playlist_id, fatal=False),
|
||||||
|
|
Loading…
Reference in a new issue