Try all possible mediaselectors even if one succeeds #1
@ -350,16 +350,29 @@ class BBCCoUkIE(InfoExtractor):
|
||||
|
||||
def _download_media_selector(self, programme_id):
|
||||
last_exception = None
|
||||
formats = []
|
||||
subtitles = None
|
||||
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 (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)
|
||||
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(
|
||||
|
Loading…
x
Reference in New Issue
Block a user