Fix: Discord RPC hat nie Daten empfangen (runJavaScript-Bug)

Wurzelursache gefunden: page().runJavaScript() liefert bei einem direkt
zurueckgegebenen JS-Objekt in dieser PySide6/QtWebEngine-Version zuverlaessig nur
einen leeren String statt das Objekt (Zahlen/Strings funktionieren, Objekte nicht).
Dadurch schlug 'isinstance(result, dict)' in BrowserTab._on_media_probe_result IMMER
fehl, mediaInfoChanged wurde nie emittiert, MainWindow._on_media_info nie aufgerufen
und der DiscordRPCWorker damit nie mit echten Daten gefuettert (Warteschlange blieb
fuer immer leer, der Worker hat sich nie mal mit Discord verbunden).

Fix: media_probe.py gibt jetzt JSON.stringify(...) zurueck, browser.py parst den
String mit json.loads(). Per isoliertem Test verifiziert (Songtitel erscheint jetzt
korrekt im Fenstertitel, Discord-Update wird erfolgreich gesendet).

Ausserdem: PLAYTUBE_DEBUG=1 Env-Var fuer Debug-Logging in browser.py/discord_rpc.py,
Exceptions in discord_rpc.py werden jetzt sichtbar geloggt statt verschluckt,
neue Discord Client-ID.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
2026-09-11 19:46:32 +02:00
co-authored by Claude Sonnet 5
parent bba099e01c
commit cb1e13b0fc
4 changed files with 43 additions and 9 deletions
+7 -2
View File
@@ -27,7 +27,12 @@ MEDIA_PROBE_JS = r"""
thumbnail = imgY ? imgY.href : null;
}
return {
// WICHTIG: QtWebEngine's runJavaScript()-Bruecke liefert bei einem direkt
// zurueckgegebenen JS-Objekt zuverlaessig nur einen leeren String statt des
// Objekts (Zahlen/Strings funktionieren, Objekte nicht) - deshalb hier als
// JSON-String zurueckgeben und in Python mit json.loads() wieder parsen
// (siehe BrowserTab._on_media_probe_result in browser.py).
return JSON.stringify({
isMusic: isMusic,
title: title,
subtitle: subtitle,
@@ -37,7 +42,7 @@ MEDIA_PROBE_JS = r"""
currentTime: video ? video.currentTime : 0,
duration: (video && isFinite(video.duration)) ? video.duration : 0,
hasVideo: !!video
};
});
})();
"""