4 Commits

13 changed files with 214 additions and 51 deletions
+2
View File
@@ -4,3 +4,5 @@ python-embed/*
logs/*.log logs/*.log
__pycache__/* __pycache__/*
.coverage .coverage
build/*
dist/*
+1 -2
View File
@@ -1,5 +1,4 @@
# PPTX Image Compressor (CaesiumCLT + svg-polish)
# PPTX Image Compressor (CaesiumCLT only)
**Version 1.1.9** **Version 1.1.9**
Dieses Paket enthält: Dieses Paket enthält:
+124
View File
@@ -0,0 +1,124 @@
@echo off
setlocal EnableExtensions
set "SELF_DIR=%~dp0"
pushd "%SELF_DIR%"
set "BUILD_DIR=%SELF_DIR%dist"
set "SPEC_DIR=%SELF_DIR%build"
set "PY_CMD=%SELF_DIR%.venv\Scripts\python.exe"
set "UPX_DIR=%SELF_DIR%buildtools"
set "MINIFY="
if /I "%~1"=="--minify" set "MINIFY=1"
echo [INFO] Build started...
rem =========================
rem Check Python
rem =========================
if not exist "%PY_CMD%" (
echo [ERROR] Python not found
exit /b 1
)
rem =========================
rem Check PyInstaller
rem =========================
"%PY_CMD%" -m pip show pyinstaller >nul 2>&1
if errorlevel 1 (
echo [INFO] Installing PyInstaller...
"%PY_CMD%" -m pip install pyinstaller --quiet
)
rem =========================
rem Clean
rem =========================
if exist "%BUILD_DIR%" rmdir /s /q "%BUILD_DIR%"
if exist "%SPEC_DIR%" rmdir /s /q "%SPEC_DIR%"
rem =========================
rem Optional icon
rem =========================
set "ICON_ARG="
if exist "%SELF_DIR%pptx-image-compress.ico" (
set "ICON_ARG=%SELF_DIR%pptx-image-compress.ico"
)
echo [INFO] Icon param: %ICON_ARG%
rem =========================
rem Build EXE (STABLE)
rem =========================
echo [INFO] Building EXE...
if defined ICON_ARG (
"%PY_CMD%" -m PyInstaller ^
--onefile ^
--console ^
--name pptx-image-compress ^
--distpath "%BUILD_DIR%" ^
--specpath "%SPEC_DIR%" ^
--workpath "%SPEC_DIR%\build" ^
--icon="%ICON_ARG%" ^
--hidden-import svg_polish ^
pptx_image_compress.py
) else (
"%PY_CMD%" -m PyInstaller ^
--onefile ^
--console ^
--name pptx-image-compress ^
--distpath "%BUILD_DIR%" ^
--specpath "%SPEC_DIR%" ^
--workpath "%SPEC_DIR%\build" ^
--hidden-import svg_polish ^
pptx_image_compress.py
)
if errorlevel 1 (
echo [ERROR] Build failed
exit /b 1
)
rem =========================
rem Optional UPX
rem =========================
if defined MINIFY (
if exist "%UPX_DIR%\upx.exe" (
echo [INFO] Running UPX compression...
"%UPX_DIR%\upx.exe" --best --force "%BUILD_DIR%\pptx-image-compress.exe"
) else (
echo [WARN] UPX not found at %UPX_DIR%
)
)
rem =========================
rem Copy templates
rem =========================
copy "%SELF_DIR%templates\run.tpl.bat" "%BUILD_DIR%\run.bat" >nul
copy "%SELF_DIR%templates\dragdrop.tpl.bat" "%BUILD_DIR%\dragdrop.bat" >nul
rem =========================
rem Copy caesiumclt.exe
rem =========================
copy "%SELF_DIR%bin\caesiumclt.exe" "%BUILD_DIR%\caesiumclt.exe"
rem =========================
rem Done
rem =========================
echo(
echo [SUCCESS] Build complete!
echo Output:
echo %BUILD_DIR%\pptx-image-compress.exe
popd
endlocal
Binary file not shown.
-37
View File
@@ -1,11 +1,7 @@
@echo off @echo off
setlocal EnableExtensions EnableDelayedExpansion setlocal EnableExtensions EnableDelayedExpansion
set UPDATE_DIR=%~dp0updates
if not exist "%UPDATE_DIR%" mkdir "%UPDATE_DIR%"
set TMP_OUT=%TEMP%\update_check_%RANDOM%.txt set TMP_OUT=%TEMP%\update_check_%RANDOM%.txt
set TMP_OUT_2=%TEMP%\update_check_%RANDOM%.txt
python check_new_version.py > "%TMP_OUT%" python check_new_version.py > "%TMP_OUT%"
set EXITCODE=%ERRORLEVEL% set EXITCODE=%ERRORLEVEL%
@@ -23,39 +19,6 @@ if %EXITCODE%==0 (
echo. echo.
type "%TMP_OUT%" type "%TMP_OUT%"
choice /c jn /m "Wollen Sie die Updates-Packages herunterladen?"
if errorlevel 2 goto :END
if exist "%TMP_OUT%" (
findstr /b "PYTHON_DOWNLOAD=" "%TMP_OUT%" >nul
if not errorlevel 1 (
for /f "tokens=1,* delims==" %%a in (
'findstr /b "PYTHON_DOWNLOAD=" "%TMP_OUT%"'
) do (
echo Downloading Python update from PYTHON_DOWNLOAD
powershell -NoProfile -Command ^
"Invoke-WebRequest '%%b' -OutFile '%UPDATE_DIR%\python-embed.zip'"
)
)
findstr /b "CAESIUM_DOWNLOAD=" "%TMP_OUT_2%" >nul
if not errorlevel 1 (
for /f "tokens=1,* delims==" %%a in (
'findstr /b "CAESIUM_DOWNLOAD=" "%TMP_OUT_2%"'
) do (
echo Downloading caesiumclt update from CAESIUM_DOWNLOAD
powershell -NoProfile -Command ^
"Invoke-WebRequest '%%b' -OutFile '%UPDATE_DIR%\caesiumclt.zip'"
)
)
)
:END :END
del "%TMP_OUT%" >nul 2>&1 del "%TMP_OUT%" >nul 2>&1
del "%TMP_OUT_2%" >nul 2>&1
endlocal endlocal
+2 -2
View File
@@ -1,6 +1,6 @@
[DEFAULT] [DEFAULT]
python_used_version = 3.14.5 python_used_version = 3.14.6
python_latest_version = 3.14.5 python_latest_version = 3.14.6
caesiumclt_used_version = v1.3.0 caesiumclt_used_version = v1.3.0
caesiumclt_latest_version = v1.3.0 caesiumclt_latest_version = v1.3.0
+4 -3
View File
@@ -2,10 +2,11 @@ import argparse
import configparser import configparser
import json import json
import sys import sys
import os
import urllib.request import urllib.request
from pathlib import Path from pathlib import Path
INI_FILE = Path("latestversion.ini") INI_FILE = Path("check_new_version.ini")
PYTHON_API = "https://endoflife.date/api/v1/products/python" PYTHON_API = "https://endoflife.date/api/v1/products/python"
CAESIUM_API = "https://api.github.com/repos/Lymphatus/caesium-clt/tags" CAESIUM_API = "https://api.github.com/repos/Lymphatus/caesium-clt/tags"
@@ -79,7 +80,6 @@ def check_caesium(cfg, result):
) )
}) })
def main(): def main():
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument("--yes", action="store_true") parser.add_argument("--yes", action="store_true")
@@ -104,9 +104,10 @@ def main():
for u in result["updates"]: for u in result["updates"]:
print( print(
f"{u['tool'].capitalize()}: aktuell genutzt {u['used']}, " f"{u['tool'].capitalize()}: aktuell genutzt {u['used']}, "
f"neu {u['latest']}, download?" f"neu {u['latest']}"
) )
print(f"{u['tool'].upper()}_DOWNLOAD={u['url']}") print(f"{u['tool'].upper()}_DOWNLOAD={u['url']}")
print(f"{u['tool'].upper()}_LATEST_VERSION={u['latest']}")
if not u["maintained"]: if not u["maintained"]:
print( print(
+30 -5
View File
@@ -12,7 +12,7 @@ set "SELF_DIR=%~dp0"
set "SCRIPT=%SELF_DIR%pptx_image_compress.py" set "SCRIPT=%SELF_DIR%pptx_image_compress.py"
rem ---- Python Embeddable config ---- rem ---- Python Embeddable config ----
set "PY_EMBED_VERSION=3.14.5" set "PY_EMBED_VERSION=3.14.6"
set "PY_EMBED_ZIP=python-%PY_EMBED_VERSION%-embed-amd64.zip" set "PY_EMBED_ZIP=python-%PY_EMBED_VERSION%-embed-amd64.zip"
set "PY_EMBED_URL=https://www.python.org/ftp/python/%PY_EMBED_VERSION%/%PY_EMBED_ZIP%" set "PY_EMBED_URL=https://www.python.org/ftp/python/%PY_EMBED_VERSION%/%PY_EMBED_ZIP%"
set "PY_DIR=%SELF_DIR%python-embed" set "PY_DIR=%SELF_DIR%python-embed"
@@ -110,6 +110,14 @@ if errorlevel 1 (
) )
set "PY_CMD=%PY_EXE%" set "PY_CMD=%PY_EXE%"
rem ---- Fix embedded Python isolation for the installation of pip ----
set "PTH_FILE=%PY_DIR%\python314._pth"
if exist "%PTH_FILE%" (
echo [INFO] Enabling site-packages in embedded Python...
powershell -Command ^
"(Get-Content '%PTH_FILE%') -replace '^#?\s*import site','import site' | Set-Content '%PTH_FILE%'"
)
:have_python :have_python
if not defined PY_CMD ( if not defined PY_CMD (
echo [ERROR] Konnte Python nicht ermitteln. Abbruch. echo [ERROR] Konnte Python nicht ermitteln. Abbruch.
@@ -122,8 +130,17 @@ if not exist "%SCRIPT%" (
exit /b 6 exit /b 6
) )
set "RUN_ARGS=%*" set "ALL_ARGS=%*"
if "%~1"=="" set "RUN_ARGS=-h" set "RUN_ARGS=%ALL_ARGS%"
set "DEBUG_MODE=0"
if "%~1"=="--debug" (
set "DEBUG_MODE=1"
set "RUN_ARGS=!ALL_ARGS:~8!"
if "!RUN_ARGS:~0,1!"==" " set "RUN_ARGS=!RUN_ARGS:~1!"
)
if "!RUN_ARGS!"=="" set "RUN_ARGS=-h"
echo [INFO] Pruefe und installiere Python-Abhaengigkeit: svg-polish ... echo [INFO] Pruefe und installiere Python-Abhaengigkeit: svg-polish ...
set "PIP_OK=0" set "PIP_OK=0"
@@ -165,14 +182,22 @@ if "%PIP_OK%"=="0" (
if "%PIP_OK%"=="1" ( if "%PIP_OK%"=="1" (
if defined USE_PY_LAUNCHER ( if defined USE_PY_LAUNCHER (
"%PY_CMD%" -3 -m pip install --disable-pip-version-check --quiet svg-polish "%PY_CMD%" -3 -m pip install --disable-pip-version-check --quiet --no-warn-script-location svg-polish
) else ( ) else (
"%PY_CMD%" -m pip install --disable-pip-version-check --quiet svg-polish "%PY_CMD%" -m pip install --disable-pip-version-check --quiet --no-warn-script-location svg-polish
) )
if errorlevel 1 ( if errorlevel 1 (
echo [WARN] 'svg-polish' konnte nicht installiert werden. SVG-Dateien werden nicht komprimiert. echo [WARN] 'svg-polish' konnte nicht installiert werden. SVG-Dateien werden nicht komprimiert.
) else ( ) else (
echo [OK] 'svg-polish' ist verfuegbar. echo [OK] 'svg-polish' ist verfuegbar.
if %DEBUG_MODE%==1 (
echo [DEBUG] pip list:
if defined USE_PY_LAUNCHER (
"%PY_CMD%" -3 -m pip list
) else (
"%PY_CMD%" -m pip list
)
)
) )
) else ( ) else (
echo [WARN] pip konnte nicht eingerichtet werden. SVG-Dateien werden nicht komprimiert. echo [WARN] pip konnte nicht eingerichtet werden. SVG-Dateien werden nicht komprimiert.
Binary file not shown.

After

Width:  |  Height:  |  Size: 800 KiB

+3
View File
@@ -0,0 +1,3 @@
svg-polish==1.0.0
pytest==9.0.3
pytest-cov==7.1.0
+1
View File
@@ -0,0 +1 @@
svg-polish==1.0.0
+36
View File
@@ -0,0 +1,36 @@
@echo off
setlocal EnableExtensions EnableDelayedExpansion
if "%~1"=="" goto help
set "INPUT=%~1"
set "EXT=%~x1"
if /I not "%EXT%"==".pptx" (
echo [ERROR] Only .pptx supported
pause
exit /b 1
)
set "OUT=%~dp1%~n1_compressed.pptx"
echo [INFO] Compressing %~n1
"%~dp0pptx-image-compress.exe" -i "%INPUT%" -o "%OUT%"
set RC=%ERRORLEVEL%
if %RC% neq 0 (
echo [ERROR] Failed (%RC%)
) else (
echo [SUCCESS] Done
echo Output: "%OUT%"
)
pause
exit /b %RC%
:help
echo.
echo Drag ^& Drop a .pptx file onto this script
echo.
pause
+9
View File
@@ -0,0 +1,9 @@
@echo off
setlocal EnableExtensions
if "%~1"=="" (
"%~dp0pptx-image-compress.exe" -h
) else (
"%~dp0pptx-image-compress.exe" %*
)
``