From 0c5629046d56088898dc655f198219631feafcf5 Mon Sep 17 00:00:00 2001 From: bashonly Date: Mon, 24 Mar 2025 18:42:14 -0500 Subject: [PATCH] extract old archive id, add brightcove test Authored by: bashonly --- yt_dlp/extractor/tver.py | 44 +++++++++++++++++++++++++++++++++------- 1 file changed, 37 insertions(+), 7 deletions(-) diff --git a/yt_dlp/extractor/tver.py b/yt_dlp/extractor/tver.py index 915071e36a..a3adfa0f52 100644 --- a/yt_dlp/extractor/tver.py +++ b/yt_dlp/extractor/tver.py @@ -3,6 +3,7 @@ from ..utils import ( ExtractorError, int_or_none, join_nonempty, + make_archive_id, smuggle_url, str_or_none, strip_or_none, @@ -16,6 +17,7 @@ class TVerIE(StreaksBaseIE): _GEO_COUNTRIES = ['JP'] _GEO_BYPASS = False _TESTS = [{ + # via Streaks backend 'url': 'https://tver.jp/episodes/epc1hdugbk', 'info_dict': { 'id': 'epc1hdugbk', @@ -38,7 +40,31 @@ class TVerIE(StreaksBaseIE): 'live_status': 'not_live', 'release_timestamp': 1651453200, 'release_date': '20220502', + '_old_archive_ids': ['brightcovenew ref:baeebeac-a2a6-4dbf-9eb3-c40d59b40068'], }, + }, { + # via Brightcove backend (deprecated) + 'url': 'https://tver.jp/episodes/epc1hdugbk', + 'info_dict': { + 'id': 'ref:baeebeac-a2a6-4dbf-9eb3-c40d59b40068', + 'ext': 'mp4', + 'title': '神回だけ見せます! #2 壮烈!車大騎馬戦(木曜スペシャル)', + 'alt_title': '神回だけ見せます! #2 壮烈!車大騎馬戦(木曜スペシャル) 日テレ', + 'description': 'md5:2726f742d5e3886edeaf72fb6d740fef', + 'uploader_id': '4394098882001', + 'channel': '日テレ', + 'duration': 1158.101, + 'thumbnail': 'https://statics.tver.jp/images/content/thumbnail/episode/xlarge/epc1hdugbk.jpg?v=16', + 'tags': [], + 'series': '神回だけ見せます!', + 'episode': '#2 壮烈!車大騎馬戦(木曜スペシャル)', + 'episode_number': 2, + 'timestamp': 1651388531, + 'upload_date': '20220501', + 'release_timestamp': 1651453200, + 'release_date': '20220502', + }, + 'params': {'extractor_args': {'tver': {'backend': ['brightcove']}}}, }, { 'url': 'https://tver.jp/corner/f0103888', 'only_matching': True, @@ -171,18 +197,21 @@ class TVerIE(StreaksBaseIE): }), } - if backend == 'brightcove': - p_id = video_info['video']['accountID'] - r_id = traverse_obj(video_info, ( - 'video', ('videoRefID', 'videoID'), {str}, any, {require('reference ID')})) - if not r_id.isdecimal(): - r_id = f'ref:{r_id}' + brightcove_id = traverse_obj(video_info, ('video', ('videoRefID', 'videoID'), {str}, any)) + if brightcove_id and not brightcove_id.isdecimal(): + brightcove_id = f'ref:{brightcove_id}' + # Deprecated Brightcove extraction accessible only by extractor-arg; errors are expected + if backend == 'brightcove': + if not brightcove_id: + raise ExtractorError('Unable to extract brightcove reference ID', expected=True) + account_id = traverse_obj(video_info, ( + 'video', 'accountID', {str}, {require('brightcove account ID', expected=True)})) return { **metadata, '_type': 'url_transparent', 'url': smuggle_url( - self.BRIGHTCOVE_URL_TEMPLATE % (p_id, r_id), + self.BRIGHTCOVE_URL_TEMPLATE % (account_id, brightcove_id), {'geo_countries': ['JP']}), 'ie_key': 'BrightcoveNew', } @@ -198,4 +227,5 @@ class TVerIE(StreaksBaseIE): }), **metadata, 'id': video_id, + '_old_archive_ids': [make_archive_id('BrightcoveNew', brightcove_id)] if brightcove_id else None, }