aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorgarret1317 <garret@airmail.cc>2024-11-22 21:59:45 +0000
committergarret1317 <garret@airmail.cc>2024-11-22 22:17:33 +0000
commit6661c60ece44309a6a28802d3d55f76d7c332148 (patch)
tree3d9e4541dcf6202e795d5c6c566dbabdc40507d6
parentd84e4dbe4f4b1be71e17072dc2a2f3685b9a2997 (diff)
downloadyt-dlp-rajiko-6661c60ece44309a6a28802d3d55f76d7c332148.tar.gz
yt-dlp-rajiko-6661c60ece44309a6a28802d3d55f76d7c332148.tar.bz2
yt-dlp-rajiko-6661c60ece44309a6a28802d3d55f76d7c332148.zip
Force new token if cached one doesn't have tf30
-rw-r--r--yt_dlp_plugins/extractor/radiko.py18
1 files changed, 11 insertions, 7 deletions
diff --git a/yt_dlp_plugins/extractor/radiko.py b/yt_dlp_plugins/extractor/radiko.py
index dc51dd9..93f0c93 100644
--- a/yt_dlp_plugins/extractor/radiko.py
+++ b/yt_dlp_plugins/extractor/radiko.py
@@ -86,6 +86,8 @@ class _RadikoBaseIE(InfoExtractor):
_DELIVERED_ONDEMAND = ('radiko.jp',)
_DOESNT_WORK_WITH_FFMPEG = ('tf-f-rpaa-radiko.smartstream.ne.jp', 'si-f-radiko.smartstream.ne.jp')
+ _has_tf30 = None
+
def _index_regions(self):
region_data = {}
@@ -180,16 +182,20 @@ class _RadikoBaseIE(InfoExtractor):
"X-Radiko-AuthToken": auth_token,
},
"user": auth2_headers["X-Radiko-User"],
+ "tf30": self._has_tf30,
}
if not region_mismatch:
self.cache.store("rajiko", station_region, auth_data)
return auth_data
- def _auth(self, station_region):
+ def _auth(self, station_region, tf30=False):
cachedata = self.cache.load("rajiko", station_region)
self.write_debug(cachedata)
if cachedata is not None:
+ if tf30 and not cachedata.get("tf30"):
+ return self._negotiate_token(station_region, tf30=True)
+
auth_headers = cachedata.get("token")
response = self._download_webpage("https://radiko.jp/v2/api/auth_check", station_region, "Checking cached token",
headers=auth_headers, expected_status=401)
@@ -231,10 +237,10 @@ class _RadikoBaseIE(InfoExtractor):
self.to_screen(f"{station_id}: Using cached station metadata")
return cachedata.get("meta")
- def _get_station_formats(self, station, timefree, auth_data, start_at=None, end_at=None, tf30_override=False):
+ def _get_station_formats(self, station, timefree, auth_data, start_at=None, end_at=None, tf30=False):
config_device = traverse_obj(self._configuration_arg('device', casesense=True, ie_key="rajiko"), 0)
- if not tf30_override:
+ if not tf30:
device = config_device or "aSmartPhone7a" # the only one that works for timefree with this is the on-demand one
# that's good imo - we just get the one that works, and don't bother with probing the rest as well
else:
@@ -441,8 +447,6 @@ class RadikoTimeFreeIE(_RadikoBaseIE):
},
}]
- _has_tf30 = None
-
def _perform_login(self, username, password):
try:
login_info = self._download_json('https://radiko.jp/ap/member/webapi/member/login', None, note='Logging in',
@@ -543,8 +547,8 @@ class RadikoTimeFreeIE(_RadikoBaseIE):
region = self._get_station_region(station)
station_meta = self._get_station_meta(region, station)
chapters = self._extract_chapters(station, start, end, video_id=meta["id"])
- auth_data = self._auth(region)
- formats = self._get_station_formats(station, True, auth_data, start_at=start, end_at=end, tf30_override=needs_tf30)
+ auth_data = self._auth(region, tf30=needs_tf30)
+ formats = self._get_station_formats(station, True, auth_data, start_at=start, end_at=end, tf30=needs_tf30)
return {
**station_meta,