Self-review nits on PR #384: - requirements.txt: 5-line comment for one pin → 1 line. Rationale lives in commit body and #367; no need to repeat in-tree. - helper.js: dropped `page: 'settings'` from the yt-dlp WHATS_NEW entry. Settings page has no yt-dlp UI; the link would have navigated users somewhere irrelevant. 553 tests pass.
48 lines
853 B
Text
48 lines
853 B
Text
# SoulSync requirements
|
|
# Web application dependencies only
|
|
|
|
# Core web framework
|
|
Flask>=3.0.0
|
|
Flask-Limiter>=3.5.0
|
|
|
|
# Music service APIs
|
|
spotipy>=2.23.0
|
|
PlexAPI>=4.17.0
|
|
|
|
# HTTP and async support
|
|
requests>=2.31.0
|
|
aiohttp>=3.9.0
|
|
|
|
# Security and encryption
|
|
cryptography>=41.0.0
|
|
|
|
# Media metadata handling
|
|
mutagen>=1.47.0
|
|
Pillow>=10.0.0
|
|
|
|
# Text processing
|
|
unidecode>=1.3.8
|
|
beautifulsoup4>=4.12.0
|
|
|
|
# System monitoring
|
|
psutil>=6.0.0
|
|
|
|
# YouTube support — pinned for reproducible builds; bump per release. See #367.
|
|
yt-dlp==2026.3.17
|
|
|
|
# Lyrics support
|
|
lrclibapi>=0.3.1
|
|
|
|
# Audio fingerprinting for download verification
|
|
pyacoustid>=1.3.0
|
|
|
|
# WebSocket client for Hydrabase connection
|
|
websocket-client>=1.7.0
|
|
|
|
# Tidal download support
|
|
tidalapi>=0.7.6
|
|
|
|
# WebSocket server for real-time UI updates
|
|
flask-socketio>=5.3.0
|
|
gunicorn>=25.3.0
|
|
simple-websocket>=1.1.0
|