Skip to content

feat: deploy optimisation — retention, CI multi-arch, standalone#3

Merged
OverStyleFR merged 22 commits into
mainfrom
develop
Jun 19, 2026
Merged

feat: deploy optimisation — retention, CI multi-arch, standalone#3
OverStyleFR merged 22 commits into
mainfrom
develop

Conversation

@OverStyleFR

Copy link
Copy Markdown
Owner

No description provided.

- Unify URL deduplication: both systems now use SHA-256
- Remove dead code from cache.py (BOT_VERSION, AUTHORIZED_USER, get_cached_file_path)
- Remove unused create_folders() from file_manager.py
- Wire add_to_cache() into download.py and music.py so the cache is actually populated
- Cache now tracks video and audio (#audio suffix) entries
- Add callback parameter called on each progress interval
- Reduce default progress_interval from 20% to 10%
- Add progress_msg_id parameter to upload_file for editing progress message
- Use ProgressFile wrapper for Telegram direct uploads with 10% updates
- Adapt curl upload callback to use provided progress_msg_id
- Delete progress message after successful send
- Send '⏳ Téléchargement en cours...' message before download
- Edit to '📤 Envoi en cours... X%' during upload via progress_msg_id
- Add set_retention() call in already-downloaded path
- Handle missing physical file despite hash present (retry download)
- Add progress message flow: download → conversion → upload with X%
- Call set_retention(audio_file) after ffmpeg conversion
- Call set_retention(video_file) in already-downloaded path
- Handle missing video file despite hash present (retry download)
- Pass progress_msg_id to upload_file
- Initialize f=None before try block to avoid NameError in finally
- Add setuptools<71 pin in Dockerfile to prevent pkg_resources error
- stats.py: move get_ttl import to top, use SMALL_FILE_THRESHOLD constant, remove dead cache_misses and unused hashlib import
- start.py: remove unused ParseMode import
- config.py: default VERSION to V9.2 (was V.8-7)
- token_loader.py: default VERSION to V9.2 (was V.8-7)
…deletion

- Fix cache.py load_cache() to mutate dict in-place instead of reassigning,
  so stats.py sees the populated cache
- Add explicit reply_to_message_id to progress messages
- Replace progress message deletion with final status edit ('✅ Terminé !')
  to avoid 'Message deleted' artifact on Matrix bridge
- For curl uploads, edit progress message with download link directly
- Cache is now session-only (no disk persistence, resets on restart)
- Track cache hits and bytes_saved per entry (hit_count in entry list)
- stats.py uses cache_stats() for cleaner stats with 'Hits cache: X (Y Mo économisés)'
- download/music show '📦 Utilisation du cache...' when serving from cache
- Upload adds '📦 Envoyé depuis le cache' caption when from_cache=True
- Progress messages are deleted at end (clean UX on Telegram)
- Replace check_and_clean_if_needed with clear_downloads on startup
- Preserves hashes.txt for deduplication across restarts
- Removes unused imports (os, check_and_clean_if_needed)
- Supprime egg-socialvideodownload.json (deprecated, .env remplace token.txt)
- Ajoute .dockerignore (exclut ffmpeg/ statique, .kilo/, *.md, etc.)
- Dockerfile : base slim-bookworm, supprime setuptools<71, supprime wheels apres install, conserve setuptools systeme (pkg_resources)
- Ajoute docker-compose.yml (volumes .env, downloads, logs)
- Ajoute setup.sh (venv + pip install + copie .env.example)
- CI/CD : job validate (import main), version detection depuis config.py, QEMU + Buildx, multi-arch amd64/arm64
- config.py : FFMPEG_PATH fallback vers 'ffmpeg' (PATH) si le chemin configure n'existe pas
- disk_manager.py : retention via mtime, suppression de _remove_from_hashes() (bug: filename vs hash)
- retention.py : ajoute is_file_expired()
- main.py : scheduled_cleanup() utilise cleanup_by_retention()
imghdr a ete supprime de la stdlib en Python 3.13. Le module
python-telegram-bot v13.7 l'importe encore. Le shim imghdr.py
etait gitignored donc absent du CI (Python 3.14).
PTB v13.7 vendored urllib3 but its vendored six.moves
est incompatible avec Python 3.14. Le fallback import urllib3
echouait car urllib3 n'etait pas declare dans requirements.
PTB v13.7 utilise urllib3.contrib.appengine qui a ete supprime
en urllib3 2.x. Pin urllib3>=1.26,<2 pour conserver la compat.
Le CI validate utilisait Python 3.x (3.14) trop recent pour
cette ancienne lib. Pin a 3.11, la cible du projet.
v3 utilisait Node.js 20 (deprecated). v4 utilise Node.js 24.
Warning: 'docker/setup-buildx-action@v3, docker/setup-qemu-action@v3
target Node.js 20 but are forced to run on Node.js 24'.
AGENTS.md reflete desormais :
- architecture modulaire (commands/, utils/)
- retention via mtime et cleanup_by_retention()
- FFMPEG_PATH fallback vers PATH
- urllib3<2 et imghdr.py pour PTB compat
- CI validate + multi-arch + Python 3.11
- setup.sh, docker-compose.yml, .dockerignore
- VERSION dans config.py (plus BOT_VERSION dans main.py)
- egg-socialvideodownload.json supprime

.env.example : VERSION V9.2 (sync avec config.py)
config.py : VERSION = os.getenv('VERSION', 'unknown') — plus de
fallback hardcode. .env est la source de verite.
CI : lit VERSION depuis .env.example (commite) pour les tags Docker.
AGENTS.md : documente .env comme source de verite pour la version.
Resolved conflicts:
- Dockerfile: garde stage ffmpeg linuxserver/ffmpeg (develop)
  + ENV PYTHONDONTWRITEBYTECODE + PYTHONUNBUFFERED + mkdir (main)
- config.py: override=True + FFMPEG_PATH fallback + VERSION=unknown
- main.py: garde retention cleanup, ajoute override=True
- .dockerignore, deploy.yml, docker-compose.yml, token_loader: garde develop
- requirements.txt: garde develop (sans setuptools<71)
- logger.py: ajoute OSError try/except de main
- AGENTS.md: garde develop (complet)
Files added from main: README.md, DOCS.md, entrypoint.sh, start.sh, Dockerfile.compose
@OverStyleFR OverStyleFR self-assigned this Jun 19, 2026
@OverStyleFR OverStyleFR merged commit d1da80a into main Jun 19, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant