This commit is contained in:
dirkf 2020-10-23 23:31:20 +07:00 committed by GitHub
commit f55a4f86b5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 19 additions and 2 deletions

View File

@ -350,16 +350,33 @@ class BBCCoUkIE(InfoExtractor):
def _download_media_selector(self, programme_id):
last_exception = None
formats = []
subtitles = None
# as some mediaselectors may be parseable but have
# no formats (eg captions only), try all possible
# mediaselectors
for mediaselector_url in self._MEDIASELECTOR_URLS:
try:
return self._download_media_selector_url(
formatsAndSubtitles = self._download_media_selector_url(
mediaselector_url % programme_id, programme_id)
# formats (a list) should always be set, but just in case
if formatsAndSubtitles[0]:
formats += formatsAndSubtitles[0]
# subtitles subtitles (a dict {(lang,sttl)})
if formatsAndSubtitles[1]:
if subtitles:
# prioritise the first sttl for each lang
formatsAndSubtitles[1].update(subtitles)
subtitles = formatsAndSubtitles[1]
except BBCCoUkIE.MediaSelectionError as e:
if e.id in ('notukerror', 'geolocation', 'selectionunavailable'):
last_exception = e
continue
self._raise_extractor_error(e)
self._raise_extractor_error(last_exception)
# ignore a trapped exception if formats were found
if last_exception and not formats:
self._raise_extractor_error(last_exception)
return formats, subtitles
def _download_media_selector_url(self, url, programme_id=None):
media_selection = self._download_xml(