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,61 @@
|
||||
# Baut Playtube.exe mit PyInstaller und sorgt dafuer, dass auch der QtWebEngine-
|
||||
# Hilfsprozess (der eigentlich den Ton ausgibt) den Namen "Playtube" traegt, damit er
|
||||
# im Taskmanager und - so weit von der jeweiligen Windows-Version respektiert - im
|
||||
# Lautstaerkemixer nicht als "QtWebEngineProcess" auftaucht.
|
||||
#
|
||||
# Aufruf (im Projekt-Root, mit aktivierter venv):
|
||||
# powershell -ExecutionPolicy Bypass -File packaging\build.ps1
|
||||
#
|
||||
# Optional: rcedit (https://github.com/electron/rcedit) im PATH oder unter
|
||||
# packaging\rcedit.exe ablegen, dann werden Icon + Versionsinfo des umbenannten
|
||||
# Hilfsprozesses ebenfalls auf "Playtube" gesetzt (sonst bleibt intern "QtWebEngineProcess"
|
||||
# stehen, nur der Dateiname aendert sich - Windows zeigt dann meist trotzdem den
|
||||
# Dateinamen "PlaytubeHelper" an).
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
$root = Split-Path -Parent $PSScriptRoot
|
||||
Set-Location $root
|
||||
|
||||
Write-Host "==> Baue Playtube.exe mit PyInstaller ..." -ForegroundColor Cyan
|
||||
pyinstaller packaging\playtube.spec --noconfirm --distpath dist --workpath build
|
||||
if ($LASTEXITCODE -ne 0) { throw "PyInstaller-Build fehlgeschlagen." }
|
||||
|
||||
$distDir = Join-Path $root "dist\Playtube"
|
||||
$internalDir = Join-Path $distDir "_internal"
|
||||
$searchRoot = if (Test-Path $internalDir) { $internalDir } else { $distDir }
|
||||
|
||||
$engineProcess = Get-ChildItem -Path $searchRoot -Recurse -Filter "QtWebEngineProcess.exe" -ErrorAction SilentlyContinue | Select-Object -First 1
|
||||
if (-not $engineProcess) {
|
||||
Write-Warning "QtWebEngineProcess.exe wurde im Build nicht gefunden - Audio-/Taskmanager-Branding des Hilfsprozesses wird uebersprungen."
|
||||
} else {
|
||||
$helperPath = Join-Path $engineProcess.Directory.FullName "PlaytubeHelper.exe"
|
||||
Copy-Item $engineProcess.FullName $helperPath -Force
|
||||
Write-Host "==> Hilfsprozess kopiert nach $helperPath" -ForegroundColor Cyan
|
||||
|
||||
$rcedit = Get-Command rcedit -ErrorAction SilentlyContinue
|
||||
$rceditLocal = Join-Path $PSScriptRoot "rcedit.exe"
|
||||
if ($rcedit) {
|
||||
$rceditExe = $rcedit.Source
|
||||
} elseif (Test-Path $rceditLocal) {
|
||||
$rceditExe = $rceditLocal
|
||||
} else {
|
||||
$rceditExe = $null
|
||||
}
|
||||
|
||||
if ($rceditExe) {
|
||||
Write-Host "==> Patche Icon/Versionsinfo des Hilfsprozesses mit rcedit ..." -ForegroundColor Cyan
|
||||
& $rceditExe $helperPath --set-icon "$root\assets\icon.ico"
|
||||
& $rceditExe $helperPath --set-version-string "FileDescription" "Playtube"
|
||||
& $rceditExe $helperPath --set-version-string "ProductName" "Playtube"
|
||||
& $rceditExe $helperPath --set-version-string "CompanyName" "Playtube"
|
||||
& $rceditExe $helperPath --set-version-string "OriginalFilename" "PlaytubeHelper.exe"
|
||||
} else {
|
||||
Write-Host "Hinweis: rcedit nicht gefunden - Hilfsprozess heisst jetzt 'PlaytubeHelper.exe'," -ForegroundColor Yellow
|
||||
Write-Host "seine interne Versionsinfo/Icon bleibt aber 'QtWebEngineProcess'. Fuer volles" -ForegroundColor Yellow
|
||||
Write-Host "Branding: rcedit von https://github.com/electron/rcedit/releases laden und" -ForegroundColor Yellow
|
||||
Write-Host "als packaging\rcedit.exe ablegen, dann dieses Skript erneut ausfuehren." -ForegroundColor Yellow
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "Fertig! Die App liegt unter dist\Playtube\Playtube.exe" -ForegroundColor Green
|
||||
Reference in New Issue
Block a user