backend/requirements.txt
Rama master · réplica de lectura del repositorio original.
flask==3.1.3
flask-socketio==5.6.1
flask-limiter==4.1.1
Flask-SQLAlchemy==3.1.1
Flask-Migrate==4.1.0
SQLAlchemy==2.0.46
alembic==1.18.4
anthropic==0.125.0
apispec==6.10.1
apispec-webframeworks==1.2.0
flask-swagger-ui==5.34.1
gunicorn==23.0.0
pysubs2==1.7.3
requests==2.33.0
PlexAPI==4.18.3
pydantic==2.10.6
pydantic-settings==2.7.1
python-dotenv==1.2.2
simple-websocket==1.1.0
rarfile==4.2
# Needed by the subcentral catalog provider (providers/hub/bundles), Apache-2.0, no deps.
ua-generator==2.1.6
deepl==1.33.0
openai==3.46.0
google-cloud-translate==3.28.0
apprise==1.13.1
prometheus-client==0.25.0
psutil==6.1.0
APScheduler==3.11.3
beautifulsoup4==4.15.0
bcrypt==4.2.1
cryptography==50.0.2
click==8.5.0
lxml==6.1.3
# defusedxml wraps stdlib + lxml parsers to disable DOCTYPE / entity / DTD
# processing - used by every XML caller that consumes 3rd-party or on-disk
# data (anidb_mapper, anidb_sync, providers/podnapisi, standalone/nfo_parser).
# See PENTEST_FINDINGS.md R4-02.
defusedxml==0.7.1
watchdog==7.1.0
guessit==4.4.0
psycopg2-binary==2.9.10 # Optional: PostgreSQL support
redis==7.1.0 # Optional: Redis caching/queue
rq==2.6.1 # Optional: Redis-based job queue
# Optional — video sync engines (graceful degradation if not installed)
# setuptools used to be pinned <81 so webrtcvad (via ffsubsync) could import
# pkg_resources. webrtcvad-wheels 2.0.14 reads its version through
# importlib.metadata on Python 3.8+, so that shim is no longer needed and the
# pin only kept setuptools on releases with known advisories.
setuptools==84.2.1
ffsubsync==0.5.1
# alass is a standalone binary — see https://github.com/kaegi/alass/releases
# Subliminal transitive deps (vendored Subliminal 2.2.0 lives in
# backend/providers/_vendor/ but still needs these from pip)
chardet==7.7.0 # subtitle_encoding: detect_all() ranking is tested against 7.x
dogpile.cache==1.5.0
# enzyme backs subliminal's "metadata" refiner. Sublarr only calls
# list_subtitles() and never refine(), but stevedore eagerly imports every
# registered entry point, so a missing enzyme logs an ERROR on every start.
enzyme==0.5.2
pysrt==1.1.2
stevedore==5.9.1
# Plan B8 — optional scene detection for the WaveformEditor's scene markers.
# BSD-3-Clause; lazy-imported in services/scene_detector.py so the dep is
# strictly optional at runtime (graceful degradation if not installed).
scenedetect==0.7.2
# Subtitle health analysis — content-based language detection
lingua-language-detector==2.2.0
# C-backed fuzzy string matching for Tier-4 AniDB title-dump resolution
# (replaces a pure-Python difflib.SequenceMatcher loop over ~100k entries)
rapidfuzz==3.14.6
# OCR for image-based subtitle streams (PGS/VobSub) — services/ocr_extractor.py.
# The Dockerfile already installs tesseract-ocr plus the deu/eng language packs;
# without these bindings the binary sits in the image unreachable and every
# PGS extraction fails with "ffmpeg extraction failed".
pytesseract==0.3.13
Pillow==13.0.0
# Spell checking — services/spell_checker.py. Same shape as above: hunspell and
# both dictionaries ship in the image already, only the binding was missing.
pyenchant==3.3.0