From 8805fd0326aff58332c626107625e80a597b6e45 Mon Sep 17 00:00:00 2001
From: garret <garret@airmail.cc>
Date: Fri, 1 Nov 2024 09:10:15 +0000
Subject: more right-thinking way of handling timefree 30

still hardcoded to not work though
---
 yt_dlp_plugins/extractor/radiko.py      | 12 ++++++++----
 yt_dlp_plugins/extractor/radiko_time.py | 13 ++++---------
 2 files changed, 12 insertions(+), 13 deletions(-)

(limited to 'yt_dlp_plugins')

diff --git a/yt_dlp_plugins/extractor/radiko.py b/yt_dlp_plugins/extractor/radiko.py
index d12f203..6b8a4c3 100644
--- a/yt_dlp_plugins/extractor/radiko.py
+++ b/yt_dlp_plugins/extractor/radiko.py
@@ -492,9 +492,13 @@ class RadikoTimeFreeIE(_RadikoBaseIE):
 		start = times[0]
 		end = times[1]
 		now = datetime.datetime.now(tz=rtime.JST)
+		expiry_free, expiry_tf30 = end.expiry()
+		have_tf30 = False
 
-		if end.expiry(False) < now:
+		if expiry_tf30 < now:
 			self.raise_no_formats("Programme is no longer available.", video_id=meta["id"], expected=True)
+		elif not have_tf30 and expiry_free < now:
+			self.raise_login_required("Programme is only available with a Timefree 30 subscription")
 		elif start > now:
 			self.raise_no_formats("Programme has not aired yet.", video_id=meta["id"], expected=True)
 			live_status = "is_upcoming"
@@ -701,9 +705,9 @@ class RadikoPersonIE(InfoExtractor):
 
 		now = rtime.RadikoTime.now(tz=rtime.JST)
 
-		min_start = rtime.earliest_available(False)
-		# we set the earliest time as the earliest we can get,
-		# so, the start of the broadcast day 1 week ago
+		min_start = now - datetime.timedelta(days=30).broadcast_day_start()
+		# we set the earliest time as the earliest we can get (or at least, that it's possible to get),
+		# so, the start of the broadcast day 30 days ago
 		# that way we can get everything we can actually download, including stuff that aired at eg "26:00"
 
 		person_api_url = update_url_query("https://api.radiko.jp/program/api/v1/programs", {
diff --git a/yt_dlp_plugins/extractor/radiko_time.py b/yt_dlp_plugins/extractor/radiko_time.py
index b383098..d2084aa 100755
--- a/yt_dlp_plugins/extractor/radiko_time.py
+++ b/yt_dlp_plugins/extractor/radiko_time.py
@@ -36,16 +36,11 @@ class RadikoTime(datetime.datetime):
 		dt = datetime.datetime(date.year, date.month, date.day, 5, 0, 0, tzinfo=JST)
 		return dt
 
-	def expiry(self, tf30):
-		available_days = 30 if tf30 else 7
-		return self.broadcast_day_end() + datetime.timedelta(days=available_days)
-		# IF SOMETHING CHANGES HERE YOU NEED TO UPDATE ↓↓earliest_available↓↓ AS WELL!
+	def expiry(self):
+		free = self.broadcast_day_end() + datetime.timedelta(days=7)
+		tf30 = self.broadcast_day_end() + datetime.timedelta(days=30)
 
-
-def earliest_available(tf30):
-	available_days = 30 if tf30 else 7
-	return (RadikoTime.now(tz=JST) - datetime.timedelta(days=available_days)).broadcast_day_start()
-	# IF SOMETHING CHANGES HERE YOU NEED TO UPDATE ↑↑expiry↑↑ AS WELL!
+		return free, tf30
 
 
 class RadikoSiteTime(RadikoTime):
-- 
cgit v1.2.3-70-g09d2