# SoulSync requirements # Web application dependencies only # All dependencies pinned for reproducible builds. # Core web framework Flask==3.1.3 Flask-Limiter==4.1.1 # Music service APIs spotipy==2.26.0 PlexAPI==4.18.1 # HTTP and async support requests==2.33.1 aiohttp==3.13.5 # Security and encryption cryptography==48.0.0 # Media metadata handling mutagen==1.47.0 Pillow==12.2.0 # Text processing Unidecode==1.4.0 beautifulsoup4==4.14.3 # System monitoring psutil==7.2.2 # IANA timezone data — required by ``zoneinfo`` on Windows hosts and # minimal Docker base images that ship without the system tz database. # Consumed by ``core/automation/schedule.py`` for daily / weekly / # monthly schedule next-run computation in the user's local timezone. # Loose-pinned because IANA tz data changes a few times a year for # real-world DST policy updates; pinning to one snapshot would freeze # the app's tz knowledge to the build date. tzdata>=2024.1 # Cross-platform IANA timezone detection — returns the server's local # tz as a string ('America/Los_Angeles', not 'PDT'). Consumed by the # automation engine to preserve historic behaviour for daily / weekly # trigger rows that don't carry an explicit ``tz`` field: the old # engine computed delays from naive ``datetime.now()``, which is # implicitly the server's local tz, so falling back to the same tz # keeps existing schedules running at the same wall-clock time. tzlocal>=5.0 # YouTube support -- unpinned; yt-dlp must track upstream releases to stay functional yt-dlp>=2026.3.17 # Lyrics support lrclibapi==0.3.1 # Audio fingerprinting for download verification pyacoustid==1.3.1 # WebSocket client for Hydrabase connection websocket-client==1.9.0 # Tidal download support tidalapi==0.8.11 # WebSocket server for real-time UI updates flask-socketio==5.6.1 gunicorn==26.0.0 simple-websocket==1.1.0