From 7695f5a0a758477608c68492fc00144cdad1c3bc Mon Sep 17 00:00:00 2001 From: HobbyistDev <105957301+HobbyistDev@users.noreply.github.com> Date: Mon, 15 Aug 2022 05:09:05 +0900 Subject: [extractor/moview] Add extractor (#4607) Authored by: HobbyistDev --- yt_dlp/extractor/jixie.py | 51 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 yt_dlp/extractor/jixie.py (limited to 'yt_dlp/extractor/jixie.py') diff --git a/yt_dlp/extractor/jixie.py b/yt_dlp/extractor/jixie.py new file mode 100644 index 000000000..3bb685e01 --- /dev/null +++ b/yt_dlp/extractor/jixie.py @@ -0,0 +1,51 @@ +from .common import InfoExtractor +from ..utils import ( + clean_html, + float_or_none, + traverse_obj, + try_call, +) + +# more info about jixie: +# [1] https://jixie.atlassian.net/servicedesk/customer/portal/2/article/1339654214?src=-1456335525, +# [2] https://scripts.jixie.media/jxvideo.3.1.min.js + + +class JixieBaseIE(InfoExtractor): + def _extract_data_from_jixie_id(self, display_id, video_id, webpage): + json_data = self._download_json( + 'https://apidam.jixie.io/api/public/stream', display_id, + query={'metadata': 'full', 'video_id': video_id})['data'] + + formats, subtitles = [], {} + for stream in json_data['streams']: + if stream.get('type') == 'HLS': + fmt, sub = self._extract_m3u8_formats_and_subtitles(stream.get('url'), display_id, ext='mp4') + if json_data.get('drm'): + for f in fmt: + f['has_drm'] = True + formats.extend(fmt) + self._merge_subtitles(sub, target=subtitles) + else: + formats.append({ + 'url': stream.get('url'), + 'width': stream.get('width'), + 'height': stream.get('height'), + 'ext': 'mp4', + }) + + self._sort_formats(formats) + return { + 'id': video_id, + 'display_id': display_id, + 'formats': formats, + 'subtitles': subtitles, + 'title': json_data.get('title') or self._html_search_meta(['og:title', 'twitter:title'], webpage), + 'description': (clean_html(traverse_obj(json_data, ('metadata', 'description'))) + or self._html_search_meta(['description', 'og:description', 'twitter:description'], webpage)), + 'thumbnails': traverse_obj(json_data, ('metadata', 'thumbnails')), + 'duration': float_or_none(traverse_obj(json_data, ('metadata', 'duration'))), + 'tags': try_call(lambda: (json_data['metadata']['keywords'] or None).split(',')), + 'categories': try_call(lambda: (json_data['metadata']['categories'] or None).split(',')), + 'uploader_id': json_data.get('owner_id'), + } -- cgit v1.2.3 From 1e4fca9a87b0ff6b7316261a2f081493af3885b2 Mon Sep 17 00:00:00 2001 From: pukkandan Date: Mon, 15 Aug 2022 03:15:05 +0530 Subject: [cleanup] Misc --- yt_dlp/extractor/jixie.py | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) (limited to 'yt_dlp/extractor/jixie.py') diff --git a/yt_dlp/extractor/jixie.py b/yt_dlp/extractor/jixie.py index 3bb685e01..7480af050 100644 --- a/yt_dlp/extractor/jixie.py +++ b/yt_dlp/extractor/jixie.py @@ -1,17 +1,14 @@ from .common import InfoExtractor -from ..utils import ( - clean_html, - float_or_none, - traverse_obj, - try_call, -) - -# more info about jixie: -# [1] https://jixie.atlassian.net/servicedesk/customer/portal/2/article/1339654214?src=-1456335525, -# [2] https://scripts.jixie.media/jxvideo.3.1.min.js +from ..utils import clean_html, float_or_none, traverse_obj, try_call class JixieBaseIE(InfoExtractor): + """ + API Reference: + https://jixie.atlassian.net/servicedesk/customer/portal/2/article/1339654214?src=-1456335525, + https://scripts.jixie.media/jxvideo.3.1.min.js + """ + def _extract_data_from_jixie_id(self, display_id, video_id, webpage): json_data = self._download_json( 'https://apidam.jixie.io/api/public/stream', display_id, -- cgit v1.2.3 From 9f14daf22b4080ae1531a772ee7574959af4e2fa Mon Sep 17 00:00:00 2001 From: pukkandan Date: Thu, 17 Nov 2022 10:40:03 +0530 Subject: [extractor] Deprecate `_sort_formats` --- yt_dlp/extractor/jixie.py | 1 - 1 file changed, 1 deletion(-) (limited to 'yt_dlp/extractor/jixie.py') diff --git a/yt_dlp/extractor/jixie.py b/yt_dlp/extractor/jixie.py index 7480af050..4830e61c1 100644 --- a/yt_dlp/extractor/jixie.py +++ b/yt_dlp/extractor/jixie.py @@ -31,7 +31,6 @@ class JixieBaseIE(InfoExtractor): 'ext': 'mp4', }) - self._sort_formats(formats) return { 'id': video_id, 'display_id': display_id, -- cgit v1.2.3