aboutsummaryrefslogtreecommitdiffstats
path: root/hypervideo_dl/extractor/rokfin.py
diff options
context:
space:
mode:
Diffstat (limited to 'hypervideo_dl/extractor/rokfin.py')
-rw-r--r--hypervideo_dl/extractor/rokfin.py54
1 files changed, 51 insertions, 3 deletions
diff --git a/hypervideo_dl/extractor/rokfin.py b/hypervideo_dl/extractor/rokfin.py
index ade3cd0..4a4d40b 100644
--- a/hypervideo_dl/extractor/rokfin.py
+++ b/hypervideo_dl/extractor/rokfin.py
@@ -45,6 +45,7 @@ class RokfinIE(InfoExtractor):
'live_status': 'not_live',
'dislike_count': int,
'like_count': int,
+ 'duration': 213,
}
}, {
'url': 'https://rokfin.com/post/223/Julian-Assange-Arrested-Streaming-In-Real-Time',
@@ -72,7 +73,7 @@ class RokfinIE(InfoExtractor):
'title': '"It\'s A Crazy Mess" Regional Director Blows Whistle On Pfizer\'s Vaccine Trial Data',
'thumbnail': r're:https://img\.production\.rokfin\.com/.+',
'description': 'md5:324ce2d3e3b62e659506409e458b9d8e',
- 'channel': 'Ryan Cristián',
+ 'channel': 'TLAVagabond',
'channel_id': 53856,
'channel_url': 'https://rokfin.com/TLAVagabond',
'availability': 'public',
@@ -86,6 +87,47 @@ class RokfinIE(InfoExtractor):
'dislike_count': int,
'like_count': int,
'tags': ['FreeThinkingMedia^'],
+ 'duration': None,
+ }
+ }, {
+ 'url': 'https://rokfin.com/post/126703/Brave-New-World--Aldous-Huxley-DEEPDIVE--Chpts-13--Quite-Frankly--Jay-Dyer',
+ 'info_dict': {
+ 'id': 'post/126703',
+ 'ext': 'mp4',
+ 'title': 'Brave New World - Aldous Huxley DEEPDIVE! (Chpts 1-3) - Quite Frankly & Jay Dyer',
+ 'thumbnail': r're:https://img\.production\.rokfin\.com/.+',
+ 'channel': 'Jay Dyer',
+ 'channel_id': 186881,
+ 'channel_url': 'https://rokfin.com/jaydyer',
+ 'availability': 'premium_only',
+ 'live_status': 'not_live',
+ 'dislike_count': int,
+ 'like_count': int,
+ 'timestamp': 1678213357,
+ 'upload_date': '20230307',
+ 'tags': ['FreeThinkingMedia^', 'OpenMind^'],
+ 'description': 'md5:cb04e32e68326c9b2b251b297bacff35',
+ 'duration': 3100,
+ }
+ }, {
+ 'url': 'https://rokfin.com/stream/31332/The-Grayzone-live-on-Nordstream-blame-game',
+ 'info_dict': {
+ 'id': 'stream/31332',
+ 'ext': 'mp4',
+ 'title': 'The Grayzone live on Nordstream blame game',
+ 'thumbnail': r're:https://image\.v\.rokfin\.com/.+',
+ 'channel': 'Max Blumenthal',
+ 'channel_id': 248902,
+ 'channel_url': 'https://rokfin.com/MaxBlumenthal',
+ 'availability': 'premium_only',
+ 'live_status': 'was_live',
+ 'dislike_count': int,
+ 'like_count': int,
+ 'timestamp': 1678475166,
+ 'release_timestamp': 1678475166.0,
+ 'release_date': '20230310',
+ 'upload_date': '20230310',
+ 'tags': ['FreeThinkingMedia^'],
}
}]
@@ -100,6 +142,12 @@ class RokfinIE(InfoExtractor):
else 'not_live')
video_url = traverse_obj(metadata, 'url', ('content', 'contentUrl'), expected_type=url_or_none)
+ if video_url in (None, 'fake.m3u8'):
+ video_url = format_field(self._search_regex(
+ r'https?://[^/]+/([^/]+)/storyboard.vtt',
+ traverse_obj(metadata, 'timelineUrl', ('content', 'timelineUrl'), expected_type=url_or_none),
+ video_id, default=None), None, 'https://stream.v.rokfin.com/%s.m3u8')
+
formats, subtitles = [{'url': video_url}] if video_url else [], {}
if determine_ext(video_url) == 'm3u8':
formats, subtitles = self._extract_m3u8_formats_and_subtitles(
@@ -197,7 +245,7 @@ class RokfinIE(InfoExtractor):
f'{self._AUTH_BASE}/token', None,
note='getting access credentials', errnote='error getting access credentials',
data=urlencode_postdata({
- 'code': urllib.parse.parse_qs(urllib.parse.urldefrag(urlh.geturl()).fragment).get('code')[0],
+ 'code': urllib.parse.parse_qs(urllib.parse.urldefrag(urlh.url).fragment).get('code')[0],
'client_id': 'web',
'grant_type': 'authorization_code',
'redirect_uri': 'https://rokfin.com/silent-check-sso.html'
@@ -221,7 +269,7 @@ class RokfinIE(InfoExtractor):
json_string, urlh = self._download_webpage_handle(
url_or_request, video_id, headers=headers, query=query, expected_status=401)
- if not auth_token or urlh.code != 401 or refresh_token is None:
+ if not auth_token or urlh.status != 401 or refresh_token is None:
return self._parse_json(json_string, video_id)
self._access_mgmt_tokens = self._download_json(