Fix bug pass: async offload, resource leaks, media/parse correctness, deploy hardening
bot.py: - Run all yt-dlp/ffmpeg/ffprobe/file-IO/base64 work off the event loop via asyncio.to_thread, bounded by a Semaphore(2); the loop no longer freezes bot-wide during downloads/encodes. - download_attachments=False; VideoTracker fetches only video attachments lazily instead of the library base64-ing every attachment of every message. - last_video keyed per (group, sender) with group-latest fallback so /speed and /rev stop silently targeting a stranger's video; proactive TTL sweeps free the big base64 blobs and bound recent_urls growth. - _reencode guards 0/NaN ffprobe duration and adds -maxrate/-bufsize; /rev now size-checks + re-encodes + faststart like the other paths. - Twitter URL regex no longer merges space-separated links (keeps i/web/status); dedupe repeated URLs within a message; mark-handled only on success/no-media so a corrective edit can retry; 'unsupported url' surfaced instead of silently dropped. - All sends wrapped (catch SendMessageError); base64 decode guarded; edit/sync attachment envelopes handled; /cookies temp file created 0600. deploy: - Pin signalbot==1.1.0, yt-dlp floor, add missing yt-dlp-ejs. - Pin signal-cli-rest-api by digest + add /v1/health healthcheck. - Restart=always (the library never exits non-zero when wedged). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+4
-3
@@ -1,5 +1,6 @@
|
||||
signalbot
|
||||
yt-dlp
|
||||
signalbot==1.1.0
|
||||
# yt-dlp is kept current for site/extractor changes; bump the floor deliberately.
|
||||
yt-dlp>=2026.3.17
|
||||
# Needed for YouTube: yt-dlp wraps URLs in a JS "n-sig" challenge that a JS
|
||||
# runtime must solve. Requires a system `node` on PATH plus this package.
|
||||
yt-dlp-ejs
|
||||
yt-dlp-ejs>=0.8.0
|
||||
|
||||
Reference in New Issue
Block a user