feat: deploy optimisation — retention, CI multi-arch, standalone#3
Merged
Conversation
- 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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.