diff options
author | Lesmiscore (Naoya Ozaki) <nao20010128@gmail.com> | 2022-01-19 22:45:35 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-19 19:15:35 +0530 |
commit | ba1c671d2e6e9694cc286e2f64a9edb70939d32a (patch) | |
tree | a67dbe673132252177d275b8be8ed9c01d01100b | |
parent | b143e83ec9eacece56e57d396c03bd91c99d11ff (diff) | |
download | hypervideo-pre-ba1c671d2e6e9694cc286e2f64a9edb70939d32a.tar.lz hypervideo-pre-ba1c671d2e6e9694cc286e2f64a9edb70939d32a.tar.xz hypervideo-pre-ba1c671d2e6e9694cc286e2f64a9edb70939d32a.zip |
[mixch] Add `MixchArchiveIE` (#2373)
Closes #2363
Authored by: Lesmiscore
-rw-r--r-- | yt_dlp/extractor/extractors.py | 5 | ||||
-rw-r--r-- | yt_dlp/extractor/mixch.py | 32 |
2 files changed, 35 insertions, 2 deletions
diff --git a/yt_dlp/extractor/extractors.py b/yt_dlp/extractor/extractors.py index 1bfe2e22f..2190b9c9f 100644 --- a/yt_dlp/extractor/extractors.py +++ b/yt_dlp/extractor/extractors.py @@ -829,7 +829,10 @@ from .mirrativ import ( ) from .mit import TechTVMITIE, OCWMITIE from .mitele import MiTeleIE -from .mixch import MixchIE +from .mixch import ( + MixchIE, + MixchArchiveIE, +) from .mixcloud import ( MixcloudIE, MixcloudUserIE, diff --git a/yt_dlp/extractor/mixch.py b/yt_dlp/extractor/mixch.py index a99ddd172..31f450dfa 100644 --- a/yt_dlp/extractor/mixch.py +++ b/yt_dlp/extractor/mixch.py @@ -11,7 +11,7 @@ class MixchIE(InfoExtractor): IE_NAME = 'mixch' _VALID_URL = r'https?://(?:www\.)?mixch\.tv/u/(?P<id>\d+)' - TESTS = [{ + _TESTS = [{ 'url': 'https://mixch.tv/u/16236849/live', 'skip': 'don\'t know if this live persists', 'info_dict': { @@ -53,3 +53,33 @@ class MixchIE(InfoExtractor): }], 'is_live': True, } + + +class MixchArchiveIE(InfoExtractor): + IE_NAME = 'mixch:archive' + _VALID_URL = r'https?://(?:www\.)?mixch\.tv/archive/(?P<id>\d+)' + + _TESTS = [{ + 'url': 'https://mixch.tv/archive/421', + 'skip': 'paid video, no DRM. expires at Jan 23', + 'info_dict': { + 'id': '421', + 'title': '96NEKO SHOW TIME', + } + }] + + def _real_extract(self, url): + video_id = self._match_id(url) + webpage = self._download_webpage(url, video_id) + + html5_videos = self._parse_html5_media_entries( + url, webpage.replace('video-js', 'video'), video_id, 'hls') + if not html5_videos: + self.raise_login_required(method='cookies') + infodict = html5_videos[0] + infodict.update({ + 'id': video_id, + 'title': self._html_search_regex(r'class="archive-title">(.+?)</', webpage, 'title') + }) + + return infodict |