From 6f2665836359f87780523832b3d62ddafcd833d7 Mon Sep 17 00:00:00 2001 From: Mozi <29089388+pzhlkj6612@users.noreply.github.com> Date: Fri, 6 Sep 2024 16:56:57 +0000 Subject: [PATCH 1/4] [ie/ShowupTv] Add extractor --- yt_dlp/extractor/_extractors.py | 1 + yt_dlp/extractor/showuptv.py | 54 +++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 yt_dlp/extractor/showuptv.py diff --git a/yt_dlp/extractor/_extractors.py b/yt_dlp/extractor/_extractors.py index e7b162512..0a780c704 100644 --- a/yt_dlp/extractor/_extractors.py +++ b/yt_dlp/extractor/_extractors.py @@ -1842,6 +1842,7 @@ from .sharevideos import ShareVideosEmbedIE from .shemaroome import ShemarooMeIE from .showroomlive import ShowRoomLiveIE +from .showuptv import ShowupTvIE from .sibnet import SibnetEmbedIE from .simplecast import ( SimplecastEpisodeIE, diff --git a/yt_dlp/extractor/showuptv.py b/yt_dlp/extractor/showuptv.py new file mode 100644 index 000000000..a84370577 --- /dev/null +++ b/yt_dlp/extractor/showuptv.py @@ -0,0 +1,54 @@ +from .common import InfoExtractor + + +class ShowupTvIE(InfoExtractor): + IE_NAME = 'showup.tv' + _VALID_URL = r'https?://(?:www\.)?showup\.tv/(?P[\w-]+)(?:$|[#?])' + + _TESTS = [{ + 'url': 'https://showup.tv/Kayla', + 'info_dict': { + 'id': '6c6c81226012516a8121da51c135cf54', + 'ext': 'flv', + 'live_status': 'is_live', + 'url': r're:^rtmp://[\w-]+?\.showup\.tv/webrtc/[a-z0-9]{32}_aac$', + 'title': r're:Kayla - Darmowe sex kamerki, chat na żywo. Seks pokazy online - live show webcams \d{4}-\d{2}-\d{1,2} \d{1,2}:\d{1,2}', + 'uploader_id': 'Kayla', + 'uploader_url': 'https://showup.tv/profile/Kayla', + }, + 'params': { + # rtmp download + 'skip_download': True, + }, + 'skip': 'Room is offline', + }, { + 'url': 'https://showup.tv/_Sensej', + 'only_matching': True, + }, { + 'url': 'https://showup.tv/Lina-hill', + 'only_matching': True, + }] + + def _real_initialize(self): + self._set_cookie('showup.tv', 'accept_rules', 'true') + + def _extract_player_args(self, variable, html): + return self._html_search_regex( + rf'player\.{variable}\s*=\s*(["\'])(?P(?:(?!\1).)+)\1', html, variable, group='value') + + def _real_extract(self, url): + uploader_id = self._match_id(url) + webpage = self._download_webpage(url, uploader_id) + + stream_id = self._extract_player_args('streamID', webpage) + server_url = self._extract_player_args('transcoderAddr', webpage) + + return { + 'id': stream_id, + 'title': self._html_extract_title(webpage), + 'uploader_id': uploader_id, + 'uploader_url': f'https://showup.tv/profile/{uploader_id}', + 'url': f'rtmp://{server_url}/webrtc/{stream_id}_aac', + 'ext': 'flv', + 'is_live': True, + } From 1738e5fd8854b9dc00f914de6449506c5a9bf415 Mon Sep 17 00:00:00 2001 From: Mozi <29089388+pzhlkj6612@users.noreply.github.com> Date: Tue, 14 Jan 2025 07:10:56 +0000 Subject: [PATCH 2/4] _extract_player_var --- yt_dlp/extractor/showuptv.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yt_dlp/extractor/showuptv.py b/yt_dlp/extractor/showuptv.py index a84370577..1f5b69e76 100644 --- a/yt_dlp/extractor/showuptv.py +++ b/yt_dlp/extractor/showuptv.py @@ -32,7 +32,7 @@ class ShowupTvIE(InfoExtractor): def _real_initialize(self): self._set_cookie('showup.tv', 'accept_rules', 'true') - def _extract_player_args(self, variable, html): + def _extract_player_var(self, variable, html): return self._html_search_regex( rf'player\.{variable}\s*=\s*(["\'])(?P(?:(?!\1).)+)\1', html, variable, group='value') @@ -40,8 +40,8 @@ def _real_extract(self, url): uploader_id = self._match_id(url) webpage = self._download_webpage(url, uploader_id) - stream_id = self._extract_player_args('streamID', webpage) - server_url = self._extract_player_args('transcoderAddr', webpage) + stream_id = self._extract_player_var('streamID', webpage) + server_url = self._extract_player_var('transcoderAddr', webpage) return { 'id': stream_id, From 251ed26068428ec25a92e26af41a7974a682067f Mon Sep 17 00:00:00 2001 From: Mozi <29089388+pzhlkj6612@users.noreply.github.com> Date: Tue, 14 Jan 2025 07:40:57 +0000 Subject: [PATCH 3/4] check online status; fix test --- yt_dlp/extractor/showuptv.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/yt_dlp/extractor/showuptv.py b/yt_dlp/extractor/showuptv.py index 1f5b69e76..90c2df0d1 100644 --- a/yt_dlp/extractor/showuptv.py +++ b/yt_dlp/extractor/showuptv.py @@ -1,4 +1,5 @@ from .common import InfoExtractor +from ..utils import UserNotLive class ShowupTvIE(InfoExtractor): @@ -6,21 +7,20 @@ class ShowupTvIE(InfoExtractor): _VALID_URL = r'https?://(?:www\.)?showup\.tv/(?P[\w-]+)(?:$|[#?])' _TESTS = [{ - 'url': 'https://showup.tv/Kayla', + 'url': 'https://showup.tv/malamisia', 'info_dict': { - 'id': '6c6c81226012516a8121da51c135cf54', + 'id': 'c4dfef41fe4f5e9838028f2f8f160086', 'ext': 'flv', 'live_status': 'is_live', 'url': r're:^rtmp://[\w-]+?\.showup\.tv/webrtc/[a-z0-9]{32}_aac$', - 'title': r're:Kayla - Darmowe sex kamerki, chat na żywo. Seks pokazy online - live show webcams \d{4}-\d{2}-\d{1,2} \d{1,2}:\d{1,2}', - 'uploader_id': 'Kayla', - 'uploader_url': 'https://showup.tv/profile/Kayla', + 'title': r're:malamisia - Darmowe sex kamerki, chat na żywo. Seks pokazy online - live show webcams \d{4}-\d{2}-\d{1,2} \d{1,2}:\d{1,2}', + 'uploader_id': 'malamisia', + 'uploader_url': 'https://showup.tv/profile/malamisia', }, 'params': { # rtmp download 'skip_download': True, }, - 'skip': 'Room is offline', }, { 'url': 'https://showup.tv/_Sensej', 'only_matching': True, @@ -34,21 +34,22 @@ def _real_initialize(self): def _extract_player_var(self, variable, html): return self._html_search_regex( - rf'player\.{variable}\s*=\s*(["\'])(?P(?:(?!\1).)+)\1', html, variable, group='value') + rf'player\.{variable}\s*=\s*(["\'])(?P(?:(?!\1).)+)\1', html, variable, group='value', default=None) def _real_extract(self, url): uploader_id = self._match_id(url) webpage = self._download_webpage(url, uploader_id) stream_id = self._extract_player_var('streamID', webpage) - server_url = self._extract_player_var('transcoderAddr', webpage) + if not stream_id: + raise UserNotLive(video_id=uploader_id) return { 'id': stream_id, 'title': self._html_extract_title(webpage), 'uploader_id': uploader_id, 'uploader_url': f'https://showup.tv/profile/{uploader_id}', - 'url': f'rtmp://{server_url}/webrtc/{stream_id}_aac', + 'url': f'rtmp://{self._extract_player_var('transcoderAddr', webpage)}/webrtc/{stream_id}_aac', 'ext': 'flv', 'is_live': True, } From f2ef15539a3505107adbbd8d6682f89475f66f9d Mon Sep 17 00:00:00 2001 From: Mozi <29089388+pzhlkj6612@users.noreply.github.com> Date: Tue, 14 Jan 2025 07:43:42 +0000 Subject: [PATCH 4/4] fix quotes --- yt_dlp/extractor/showuptv.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yt_dlp/extractor/showuptv.py b/yt_dlp/extractor/showuptv.py index 90c2df0d1..af2b66570 100644 --- a/yt_dlp/extractor/showuptv.py +++ b/yt_dlp/extractor/showuptv.py @@ -49,7 +49,7 @@ def _real_extract(self, url): 'title': self._html_extract_title(webpage), 'uploader_id': uploader_id, 'uploader_url': f'https://showup.tv/profile/{uploader_id}', - 'url': f'rtmp://{self._extract_player_var('transcoderAddr', webpage)}/webrtc/{stream_id}_aac', + 'url': f'rtmp://{self._extract_player_var("transcoderAddr", webpage)}/webrtc/{stream_id}_aac', 'ext': 'flv', 'is_live': True, }