Implement demo fallback for missing Jellyfin credentials in mac_cocoa.py
Co-authored-by: Copilot <[email protected]>
This commit is contained in:
1 parent
46470ced11
commit
62c69cc5d9
1 file changed
+28
-5
+28
-5
@@ -142,14 +142,38 @@ class AppDelegate(NSObject):
|
||||
previous = get_previous_sunday()
|
||||
latest_dt = datetime.fromisoformat(latest.replace("Z", "+00:00"))
|
||||
previous_dt = datetime.fromisoformat(previous.replace("Z", "+00:00"))
|
||||
user_id = os.environ.get("JELLYFIN_USER_ID")
|
||||
if not user_id:
|
||||
raise RuntimeError("JELLYFIN_USER_ID not set in environment")
|
||||
|
||||
host = os.environ.get("JELLYFIN_HOST")
|
||||
key = os.environ.get("JELLYFIN_API_KEY")
|
||||
user_id = os.environ.get("JELLYFIN_USER_ID")
|
||||
total_episodes = int(os.environ.get("TOTAL_EPISODES", 1155))
|
||||
|
||||
# If credentials are missing, provide a demo report so UI can be validated without Jellyfin
|
||||
if not (host and key and user_id):
|
||||
demo_ep = min(total_episodes, 1000)
|
||||
prev_ep = max(0, demo_ep - 3)
|
||||
watched_this_week = demo_ep - prev_ep
|
||||
week_start, week_end, _ = current_week()
|
||||
date_range = format_date_range(week_start, week_end)
|
||||
report_text = (
|
||||
f"ONE PIECE PROGRESS (DEMO MODE) ({date_range})\n"
|
||||
f"Episode {demo_ep}/{total_episodes}\n"
|
||||
f"Around {watched_this_week} episodes watched this week!"
|
||||
)
|
||||
payload = {"report": report_text, "debug": "Demo mode: Jellyfin credentials not set."}
|
||||
self.performSelectorOnMainThread_withObject_waitUntilDone_("updateUI:", payload, False)
|
||||
return
|
||||
|
||||
# Try real Jellyfin calls; on failure show error (with debug logs)
|
||||
try:
|
||||
ep_info = jellyfin.find_last_one_piece_episode(latest_dt, user_id)
|
||||
prev_ep_info = jellyfin.find_last_one_piece_before_previous_sunday(previous_dt, user_id)
|
||||
except Exception as e:
|
||||
payload = {"error": "Failed to contact Jellyfin: " + str(e), "debug": jellyfin.get_debug_logs()}
|
||||
self.performSelectorOnMainThread_withObject_waitUntilDone_("showError:", payload, False)
|
||||
return
|
||||
|
||||
previous_episode = prev_ep_info["episode_number"]
|
||||
total_episodes = int(os.environ.get("TOTAL_EPISODES", 1155))
|
||||
watched_this_week = ep_info["episode_number"] - previous_episode
|
||||
week_start, week_end, _ = current_week()
|
||||
date_range = format_date_range(week_start, week_end)
|
||||
@@ -162,7 +186,6 @@ class AppDelegate(NSObject):
|
||||
|
||||
debug_output = jellyfin.get_debug_logs()
|
||||
payload = {"report": report_text, "debug": debug_output}
|
||||
# Update UI on main thread
|
||||
self.performSelectorOnMainThread_withObject_waitUntilDone_("updateUI:", payload, False)
|
||||
except Exception as e:
|
||||
payload = {"error": str(e), "debug": jellyfin.get_debug_logs()}
|
||||
|
||||
Reference in new issue
Block a user