From 3ddff796add2377b0b8b099971343c7851cac172 Mon Sep 17 00:00:00 2001 From: fojadrachi Date: Fri, 11 Sep 2026 20:24:19 +0200 Subject: [PATCH] Entwicklungsmodus nutzt eigenen APPDATA-Ordner (PlaytubeDev statt Playtube) Verhindert, dass ein lokaler Test-/Dev-Build (python main.py) sich Login-Profil und Discord-Konfiguration mit einer installierten/gepackten Playtube.exe teilt - genau das hatte zuletzt zur falschen Discord-Client-ID in der echten Installation gefuehrt. Co-Authored-By: Claude Sonnet 5 --- README.md | 7 +++++-- playtube/config.py | 13 +++++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 09f4fd2..c7a6c97 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,9 @@ Erweiterung) mit: - **Zwei Tabs** – YouTube und YouTube Music laufen parallel, Musik spielt im Hintergrund weiter wenn du zu Videos wechselst. -- **Login/Premium** – eigenes, persistentes Profil (`%APPDATA%\Playtube`), einmal bei +- **Login/Premium** – eigenes, persistentes Profil (`%APPDATA%\Playtube`, im + Entwicklungsmodus `%APPDATA%\PlaytubeDev` – bewusst getrennt, damit sich lokale + Test-Builds nie mit einer installierten Version in die Quere kommen), einmal bei Google anmelden reicht fuer beide Dienste. - **Discord Rich Presence** – zeigt Titel, Kanal/Interpret, Fortschrittsbalken und einen Link-Button in deinem Discord-Profil, sobald etwas laeuft. @@ -133,7 +135,8 @@ QtWebEngine benoetigt unter Linux ein paar System-Bibliotheken (auf Debian/Ubunt das eingebettete Chromium (QtWebEngine) nicht als unsicheres WebView erkennt. Sollte die Meldung dennoch erscheinen: alle Playtube-Fenster/-Prozesse schliessen und neu starten (die Header greifen erst ab dem naechsten Prozessstart), notfalls einmal den - Profilordner `%APPDATA%\Playtube\webprofile` loeschen und neu anmelden. + Profilordner `%APPDATA%\Playtube\webprofile` (bzw. `PlaytubeDev` im + Entwicklungsmodus) loeschen und neu anmelden. - 4K/Premium-Videoqualitaet kann eingeschraenkt sein, da die Open-Source-Variante von QtWebEngine kein Widevine-DRM mitbringt (Standard-Qualitaeten funktionieren normal). - Icon/Branding-Bilder liegen unter `assets/` und wurden mit `tools/generate_icon.py` diff --git a/playtube/config.py b/playtube/config.py index 77d5465..bffbf69 100644 --- a/playtube/config.py +++ b/playtube/config.py @@ -10,6 +10,13 @@ from typing import Any APP_NAME = "Playtube" APP_AUMID = "Playtube.DesktopClient" # Windows AppUserModelID +# Der Entwicklungsmodus (python main.py) benutzt einen eigenen APPDATA-Ordner +# ("PlaytubeDev" statt "Playtube"), damit Login-Profil und Config sich NIE mit einer +# gepackten/installierten Playtube.exe ueberschneiden (frueher fuehrte das dazu, dass +# ein lokaler Test-Build und die echte Installation sich dieselbe config.json bzw. +# denselben Browser-Profil-Lock geteilt haben). +_DATA_DIR_NAME = APP_NAME if getattr(sys, "frozen", False) else f"{APP_NAME}Dev" + DEFAULT_CONFIG: dict[str, Any] = { "app_name": APP_NAME, "discord": { @@ -32,9 +39,11 @@ DEFAULT_CONFIG: dict[str, Any] = { def _app_data_dir() -> Path: - """Ordner fuer persistente Daten (Login-Profil, Config) - auch im gepackten .exe stabil.""" + """Ordner fuer persistente Daten (Login-Profil, Config) - auch im gepackten .exe + stabil. Entwicklungsmodus und gepackte .exe nutzen bewusst unterschiedliche + Ordner (siehe _DATA_DIR_NAME).""" base = os.environ.get("APPDATA") or str(Path.home()) - d = Path(base) / APP_NAME + d = Path(base) / _DATA_DIR_NAME d.mkdir(parents=True, exist_ok=True) return d