From 94cd0f84d0375075c2ca6d0ca942a058f2d059e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8A=B1=E5=AD=90?= <23428990+0x1f595@users.noreply.github.com> Date: Thu, 19 Aug 2021 20:30:56 -0600 Subject: [PATCH] [iwara] Add Iwara Playlist support --- youtube_dl/extractor/extractors.py | 5 +++- youtube_dl/extractor/iwara.py | 39 ++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/youtube_dl/extractor/extractors.py b/youtube_dl/extractor/extractors.py index 6e8fc3961..0ea3b7c9e 100644 --- a/youtube_dl/extractor/extractors.py +++ b/youtube_dl/extractor/extractors.py @@ -521,7 +521,10 @@ from .ivi import ( IviCompilationIE ) from .ivideon import IvideonIE -from .iwara import IwaraIE +from .iwara import ( + IwaraIE, + IwaraPlaylistIE, +) from .izlesene import IzleseneIE from .jamendo import ( JamendoIE, diff --git a/youtube_dl/extractor/iwara.py b/youtube_dl/extractor/iwara.py index 907d5fc8b..6a4cdb8a7 100644 --- a/youtube_dl/extractor/iwara.py +++ b/youtube_dl/extractor/iwara.py @@ -97,3 +97,42 @@ class IwaraIE(InfoExtractor): 'age_limit': age_limit, 'formats': formats, } + +class IwaraPlaylistIE(InfoExtractor): + IE_NAME = 'iwara:playlist' + _VALID_URL = r'https?://(?:www\.|ecchi\.)?iwara\.tv/playlist/(?P[a-zA-Z0-9-]+)' + _TEST = { + 'url': 'https://ecchi.iwara.tv/playlist/best-enf', + 'info_dict': { + 'title': 'Best enf', + 'uploader_id': 'Jared98112', + 'id': 'best-enf', + }, + 'playlist_mincount': 50, + } + + def _real_extract(self, url): + playlist_id = self._match_id(url) + + webpage, urlh = self._download_webpage_handle(url, playlist_id) + + hostname = compat_urllib_parse_urlparse(urlh.geturl()).hostname + age_limit = 18 if hostname.split('.')[0] == 'ecchi' else 0 + + title = self._html_search_regex(r'

]*?>(.*?)

', webpage, 'title') + uploader_id = self._html_search_regex( + r'
\s*

(.*?)

', + webpage, + 'uploader_id') + urls = re.findall( + r'

\s*', + webpage) + entries = [self.url_result(u) for u in urls] + + return { + '_type': 'playlist', + 'id': playlist_id, + 'uploader_id': uploader_id, + 'title': title, + 'entries': entries, + }