mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-11-14 21:23:05 +00:00
[rudovideo] Add rudo.video extractor
This commit is contained in:
parent
9751a457cf
commit
00edf409b2
@ -1643,6 +1643,7 @@ from .rumble import (
|
||||
RumbleIE,
|
||||
RumbleChannelIE,
|
||||
)
|
||||
from .rudovideo import RudoVideoIE
|
||||
from .rutube import (
|
||||
RutubeIE,
|
||||
RutubeChannelIE,
|
||||
|
31
yt_dlp/extractor/rudovideo.py
Normal file
31
yt_dlp/extractor/rudovideo.py
Normal file
@ -0,0 +1,31 @@
|
||||
from .common import InfoExtractor
|
||||
from ..utils import js_to_json, ExtractorError, traverse_obj
|
||||
from urllib.parse import urlencode
|
||||
|
||||
class RudoVideoIE(InfoExtractor):
|
||||
_VALID_URL = r'https?://rudo\.video/live/(?P<id>[^/]+)'
|
||||
|
||||
def _real_extract(self, url):
|
||||
video_id = self._match_id(url)
|
||||
webpage = self._download_webpage(url, video_id)
|
||||
|
||||
if "Streaming is not available in your area." in webpage:
|
||||
self.raise_geo_restricted()
|
||||
|
||||
stream_url = self._search_regex(r'var\s+streamURL\s*=\s*\'([^?\']+)', webpage, "streamUrl")
|
||||
token_array_string = self._search_regex(r'<script>var\s+_\$_[a-zA-Z0-9]+\s*=\s*(\[[^]]+\])', webpage, 'token_array', default=None)
|
||||
if token_array_string:
|
||||
token_array_string = token_array_string.replace("x", "u00")
|
||||
token_array = self._parse_json(token_array_string, video_id)
|
||||
if len(token_array) != 9:
|
||||
raise ExtractorError('Couldnt get access token array', video_id=video_id)
|
||||
access_token_webpage = self._download_webpage(token_array[0], video_id)
|
||||
access_token = self._parse_json(access_token_webpage, video_id)
|
||||
if "data" not in access_token or token_array[3] not in access_token.get("data"):
|
||||
raise ExtractorError('Couldnt get access token', video_id=video_id)
|
||||
query_string = token_array[5] + traverse_obj(access_token, ("data", token_array[3]))
|
||||
stream_url = f'{stream_url}{query_string}'
|
||||
|
||||
return self.url_result(
|
||||
stream_url,
|
||||
display_id=video_id, url_transparent=True)
|
Loading…
Reference in New Issue
Block a user