From 380027be4ea64056e613dc61173602799fef23b7 Mon Sep 17 00:00:00 2001 From: subrat-lima Date: Thu, 12 Sep 2024 13:51:02 +0530 Subject: [PATCH] [ie/afl] added AFLVideoIE extractor --- yt_dlp/extractor/_extractors.py | 1 + yt_dlp/extractor/afl.py | 54 +++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 yt_dlp/extractor/afl.py diff --git a/yt_dlp/extractor/_extractors.py b/yt_dlp/extractor/_extractors.py index e7b162512f..9e9f4b6018 100644 --- a/yt_dlp/extractor/_extractors.py +++ b/yt_dlp/extractor/_extractors.py @@ -75,6 +75,7 @@ HistoryTopicIE, ) from .aeonco import AeonCoIE +from .afl import AFLVideoIE from .afreecatv import ( AfreecaTVCatchStoryIE, AfreecaTVIE, diff --git a/yt_dlp/extractor/afl.py b/yt_dlp/extractor/afl.py new file mode 100644 index 0000000000..44b2ee2907 --- /dev/null +++ b/yt_dlp/extractor/afl.py @@ -0,0 +1,54 @@ + +from .brightcove import BrightcoveNewIE +from .common import InfoExtractor +from ..utils import ( + extract_attributes, + get_element_by_class, + smuggle_url, + str_or_none, + traverse_obj, +) + + +class AFLVideoIE(InfoExtractor): + IE_NAME = 'afl:video' + _VALID_URL = r'https?://(?:www\.)?afl\.com.au/(?:aflw/)?video/(?P\d+)' + _TESTS = [{ + 'url': 'https://www.afl.com.au/aflw/video/1217670/the-w-show-aflws-line-in-the-sand-moment-bonnies-bold-bid', + 'md5': '7000431c2bd3f96eddb5f63273aea83e', + 'info_dict': { + 'id': '6361825702112', + 'ext': 'mp4', + 'description': 'md5:d1fee2ae8e3ecf486c1f0f7aa19e724b', + 'upload_date': '20240911', + 'duration': 1523.28, + 'tags': 'count:0', + 'thumbnail': r're:^https?://.*\.jpg$', + 'title': "The W Show: AFLW's 'line in the sand' moment, Bonnie's bold bid", + 'uploader_id': '6057984922001', + 'timestamp': 1726038522, + }, + }, { + 'url': 'https://www.afl.com.au/video/1217264/bulldogs-season-review-gold-plated-list-going-to-waste-duos-frightening-future?videoId=1217264&modal=true&type=video&publishFrom=1725998400001', + 'only_matching': True, + }, { + 'url': 'https://www.afl.com.au/video/1210885/wafl-showreel-ef-hamish-davis-highlights?videoId=1210885&modal=true&type=video&publishFrom=1725171238001', + 'only_matching': True, + }] + + def _real_extract(self, url): + display_id = self._match_id(url) + webpage = self._download_webpage(url, display_id) + element = get_element_by_class('inline-player__player-container', webpage) + attrs = traverse_obj(extract_attributes(element), { + 'account_id': ('data-account', {str_or_none}), + 'player_id': ('data-player', {lambda x: f'{x}_default'}, {str_or_none}), + 'video_id': ('data-video-id', {str_or_none}), + }) + account_id = attrs.get('account_id') + player_id = attrs.get('player_id') + video_id = attrs.get('video_id') + + video_url = f'https://players.brightcove.net/{account_id}/{player_id}/index.html?videoId={video_id}' + video_url = smuggle_url(video_url, {'referrer': url}) + return self.url_result(video_url, BrightcoveNewIE)