diff options
author | nyuszika7h <nyuszika7h@gmail.com> | 2021-11-19 15:57:01 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-19 20:27:01 +0530 |
commit | c45b87419f86b5c513a3135ea17e93b3deea6e29 (patch) | |
tree | 64f2f80fcb5e22fdf2ded4310ee44f55e8f315e1 | |
parent | 7333296ff5386efcd13a9db780170350e1924389 (diff) | |
download | hypervideo-pre-c45b87419f86b5c513a3135ea17e93b3deea6e29.tar.lz hypervideo-pre-c45b87419f86b5c513a3135ea17e93b3deea6e29.tar.xz hypervideo-pre-c45b87419f86b5c513a3135ea17e93b3deea6e29.zip |
[bbc] Get all available formats (#1717)
Authored by: nyuszika7h
-rw-r--r-- | yt_dlp/extractor/bbc.py | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/yt_dlp/extractor/bbc.py b/yt_dlp/extractor/bbc.py index 4e2dcd76b..672ed1ffe 100644 --- a/yt_dlp/extractor/bbc.py +++ b/yt_dlp/extractor/bbc.py @@ -451,9 +451,10 @@ class BBCCoUkIE(InfoExtractor): playlist = self._download_json( 'http://www.bbc.co.uk/programmes/%s/playlist.json' % playlist_id, playlist_id, 'Downloading playlist JSON') + formats = [] + subtitles = {} - version = playlist.get('defaultAvailableVersion') - if version: + for version in playlist.get('allAvailableVersions', []): smp_config = version['smpConfig'] title = smp_config['title'] description = smp_config['summary'] @@ -463,8 +464,18 @@ class BBCCoUkIE(InfoExtractor): continue programme_id = item.get('vpid') duration = int_or_none(item.get('duration')) - formats, subtitles = self._download_media_selector(programme_id) - return programme_id, title, description, duration, formats, subtitles + version_formats, version_subtitles = self._download_media_selector(programme_id) + types = version['types'] + for f in version_formats: + f['format_note'] = ', '.join(types) + if any('AudioDescribed' in x for x in types): + f['language_preference'] = -10 + formats += version_formats + for tag, subformats in (version_subtitles or {}).items(): + subtitles.setdefault(tag, []) + subtitles[tag] += subformats + + return programme_id, title, description, duration, formats, subtitles except ExtractorError as ee: if not (isinstance(ee.cause, compat_HTTPError) and ee.cause.code == 404): raise |