Update Python version and improve FFmpeg handling

Bumps PYTHON_VERSION to 3.13.6 in the Windows build workflow. Replaces cx_Freeze CLI FFmpeg include logic with a post-build step that copies FFmpeg binaries directly into the dist folder for improved reliability.
This commit is contained in:
Your Name
2025-08-27 20:21:25 +03:00
parent d435cac3d5
commit f7a40b7c45
+20 -16
View File
@@ -9,7 +9,7 @@ permissions:
contents: write
env:
PYTHON_VERSION: '3.12.10'
PYTHON_VERSION: '3.13.6'
jobs:
build-windows:
@@ -147,19 +147,6 @@ jobs:
if (Test-Path "build\exe.*") { Remove-Item "build\exe.*" -Recurse -Force }
if (Test-Path "build\bdist.*") { Remove-Item "build\bdist.*" -Recurse -Force }
# Prepare optional FFmpeg include arguments
$ffinc1 = ""
$ffinc2 = ""
$ffinc3 = ""
if ($env:FFMPEG_PATH) {
$ffmpegExe = Join-Path $env:FFMPEG_PATH "ffmpeg.exe"
$ffprobeExe = Join-Path $env:FFMPEG_PATH "ffprobe.exe"
$ffplayExe = Join-Path $env:FFMPEG_PATH "ffplay.exe"
if (Test-Path $ffmpegExe) { $ffinc1 = "--include-files `"$ffmpegExe`"" }
if (Test-Path $ffprobeExe) { $ffinc2 = "--include-files `"$ffprobeExe`"" }
if (Test-Path $ffplayExe) { $ffinc3 = "--include-files `"$ffplayExe`"" }
}
# Build executable with FFmpeg using cx_Freeze CLI
cxfreeze main.py `
--target-dir "dist\YTSage-FFmpeg" `
@@ -170,8 +157,25 @@ jobs:
--packages "PySide6.QtCore,PySide6.QtGui,PySide6.QtWidgets,requests,PIL,packaging,markdown,playsound3,loguru,setuptools" `
--excludes "PySide6.QtBluetooth,PySide6.QtNetwork,PySide6.QtOpenGL,PySide6.QtPrintSupport,PySide6.QtSvg,PySide6.QtTest,PySide6.QtXml,PySide6.QtSql,PySide6.QtHelp,PySide6.QtMultimedia,PySide6.QtQml,PySide6.QtQuick,PySide6.QtWebEngineCore,PIL.ImageDraw,PIL.ImageFont,numpy,scipy,wx,pandas,tkinter,yt_dlp,unittest,test,tests" `
--include-files "src" `
--include-files "assets" `
$ffinc1 $ffinc2 $ffinc3
--include-files "assets"
# Copy FFmpeg binaries into dist folder post-build (more reliable than CLI include)
if ($env:FFMPEG_PATH) {
$destDir = "dist\YTSage-FFmpeg"
$ffmpegExe = Join-Path $env:FFMPEG_PATH "ffmpeg.exe"
$ffprobeExe = Join-Path $env:FFMPEG_PATH "ffprobe.exe"
$ffplayExe = Join-Path $env:FFMPEG_PATH "ffplay.exe"
foreach ($file in @($ffmpegExe, $ffprobeExe, $ffplayExe)) {
if (Test-Path $file) {
$name = Split-Path $file -Leaf
Copy-Item $file -Destination (Join-Path $destDir $name) -Force
Write-Host "Copied $name into $destDir"
} else {
Write-Host "Warning: FFmpeg binary not found: $file"
}
}
}
- name: Package and prepare release artifacts (ZIPs)
shell: powershell