Initial commit: Twitch VOD Manager v3.5.3

- Main application with auto-update functionality
- PyInstaller spec for building standalone EXE
- Inno Setup installer script with silent update support
- Server version.json for update checking

Features:
- Download Twitch VODs
- Auto-update with silent installation
- Settings stored in ProgramData

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
xRangerDE 2026-02-04 12:30:52 +01:00
commit b29e50afa1
5 changed files with 2680 additions and 0 deletions

21
.gitignore vendored Normal file
View File

@ -0,0 +1,21 @@
# Build artifacts
build/
dist/
installer_output/
__pycache__/
*.pyc
# Config with credentials
config.json
# Temp files
*.log
nul
download_queue.json
# IDE
.vscode/
.idea/
# Old exe
Twitch_VOD_Manager.exe

49
Twitch_VOD_Manager.spec Normal file
View File

@ -0,0 +1,49 @@
# -*- mode: python ; coding: utf-8 -*-
from PyInstaller.utils.hooks import collect_all
datas = []
binaries = []
hiddenimports = []
tmp_ret = collect_all('customtkinter')
datas += tmp_ret[0]; binaries += tmp_ret[1]; hiddenimports += tmp_ret[2]
tmp_ret = collect_all('cv2')
datas += tmp_ret[0]; binaries += tmp_ret[1]; hiddenimports += tmp_ret[2]
tmp_ret = collect_all('imageio_ffmpeg')
datas += tmp_ret[0]; binaries += tmp_ret[1]; hiddenimports += tmp_ret[2]
a = Analysis(
['Twitch_VOD_Manager_V_3.5.3.pyw'],
pathex=[],
binaries=binaries,
datas=datas,
hiddenimports=hiddenimports,
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
noarchive=False,
optimize=0,
)
pyz = PYZ(a.pure)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.datas,
[],
name='Twitch_VOD_Manager',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=False,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
)

File diff suppressed because it is too large Load Diff

70
installer.iss Normal file
View File

@ -0,0 +1,70 @@
; Inno Setup Script for Twitch VOD Manager
; Version 3.3.5
#define MyAppName "Twitch VOD Manager"
#define MyAppVersion "3.5.3"
#define MyAppPublisher "Twitch VOD Manager"
#define MyAppExeName "Twitch_VOD_Manager.exe"
[Setup]
AppId={{8A7B9C0D-1E2F-3A4B-5C6D-7E8F9A0B1C2D}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppPublisher={#MyAppPublisher}
DefaultDirName={autopf}\{#MyAppName}
DefaultGroupName={#MyAppName}
DisableProgramGroupPage=yes
OutputDir=installer_output
OutputBaseFilename=Twitch_VOD_Manager_Setup_{#MyAppVersion}
Compression=lzma2/ultra64
SolidCompression=yes
WizardStyle=modern
PrivilegesRequired=admin
[Languages]
Name: "german"; MessagesFile: "compiler:Languages\German.isl"
Name: "english"; MessagesFile: "compiler:Default.isl"
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
[Files]
Source: "dist\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
[Run]
; Bei normaler Installation: Checkbox "Programm starten"
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent runasoriginaluser
[Code]
procedure CurStepChanged(CurStep: TSetupStep);
var
DataDir: String;
TempDir: String;
ResultCode: Integer;
begin
if CurStep = ssPostInstall then
begin
// Erstelle ProgramData Ordner fuer Settings
DataDir := ExpandConstant('{commonappdata}\Twitch_VOD_Manager');
if not DirExists(DataDir) then
CreateDir(DataDir);
// Bei Silent Install: Alte _MEI Ordner loeschen und App starten
if WizardSilent then
begin
Sleep(5000); // 5 Sekunden warten bis alte Prozesse beendet
// Alte PyInstaller _MEI Ordner loeschen
TempDir := ExpandConstant('{tmp}\..');
Exec('cmd.exe', '/c "for /d %i in ("' + TempDir + '\_MEI*") do rd /s /q "%i"" 2>nul', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
Sleep(1000); // Kurz warten nach Cleanup
Exec(ExpandConstant('{app}\{#MyAppExeName}'), '', '', SW_SHOW, ewNoWait, ResultCode);
end;
end;
end;

View File

@ -0,0 +1,5 @@
{
"version": "3.5.3",
"download_url": "http://24-music.de/Twitch_VOD_Manager_Setup.exe",
"changelog": "Silent Update (kein CMD-Fenster)"
}