Playtube: eigenstaendiger YouTube/YouTube-Music-Player mit Discord RPC und Auto-Update
- PySide6/QtWebEngine mit persistentem Login-Profil (YouTube + YouTube Music Tabs) - Google-Login-Fix per Sec-CH-UA-Headern + Chrome-JS-Shim - Discord Rich Presence (eigener Thread, Titel/Fortschritt/Buttons) - Eigenes Branding (Taskmanager/Taskleiste) per AppUserModelID + PyInstaller-Packaging - Auto-Update ueber GitHub Releases (fojadrachi/Playtube) Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
"""Branding-Helfer: eigener Prozessname/Icon im Taskmanager, in der Taskleiste und
|
||||
(so weit von Windows respektiert) im Lautstaerkemixer.
|
||||
|
||||
Wichtig: Diese Funktionen muessen VOR dem Import von QtWebEngineWidgets/QtWebEngineCore
|
||||
aufgerufen werden, weil QtWebEngine seinen Sub-Prozess (QtWebEngineProcess.exe) beim
|
||||
Import-Zeitpunkt vorbereitet.
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
from .config import APP_AUMID
|
||||
|
||||
|
||||
def set_app_user_model_id() -> None:
|
||||
"""Setzt die Windows AppUserModelID fuer diesen Prozess.
|
||||
|
||||
Das sorgt dafuer, dass Windows die App in Taskleiste/Alt-Tab/Benachrichtigungen
|
||||
als eigenstaendige Anwendung fuehrt (eigenes Icon, eigene Gruppierung) statt als
|
||||
generisches "Python".
|
||||
"""
|
||||
if sys.platform != "win32":
|
||||
return
|
||||
try:
|
||||
import ctypes
|
||||
|
||||
ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(APP_AUMID)
|
||||
except Exception:
|
||||
# Auf aelteren Windows-Versionen oder ohne shell32 einfach ignorieren.
|
||||
pass
|
||||
|
||||
|
||||
def configure_webengine_process_path() -> None:
|
||||
"""Wenn ein umbenannter QtWebEngineProcess (siehe packaging/build.ps1) neben der
|
||||
.exe liegt, wird QtWebEngine angewiesen diesen zu benutzen statt des Standard-
|
||||
"QtWebEngineProcess.exe". Dadurch zeigt auch der Sub-Prozess, der tatsaechlich den
|
||||
Ton wiedergibt, im Taskmanager/Lautstaerkemixer den Playtube-Namen statt
|
||||
"QtWebEngineProcess".
|
||||
|
||||
Nur relevant fuer gepackte (PyInstaller-)Builds. Im Entwicklungsmodus (python
|
||||
main.py) wird der Standardprozess von PySide6 benutzt - das ist voellig normal
|
||||
und hat keinen Einfluss auf die Funktion der App.
|
||||
"""
|
||||
if sys.platform != "win32" or not getattr(sys, "frozen", False):
|
||||
return
|
||||
|
||||
exe_dir = Path(sys.executable).resolve().parent
|
||||
candidates = [
|
||||
exe_dir / "PlaytubeHelper.exe",
|
||||
exe_dir / "_internal" / "PlaytubeHelper.exe",
|
||||
]
|
||||
for candidate in candidates:
|
||||
if candidate.exists():
|
||||
os.environ["QTWEBENGINEPROCESS_PATH"] = str(candidate)
|
||||
return
|
||||
Reference in New Issue
Block a user