diff --git a/README.md b/README.md index a3ab2e91..771a0bac 100644 --- a/README.md +++ b/README.md @@ -84,6 +84,7 @@ SoulSync bridges streaming services to your music library with automated discove - Hi-Res FLAC downsampling to 16-bit/44.1kHz CD quality - Blasphemy Mode — delete original FLAC after conversion - Synchronized lyrics (LRC) via LRClib +- ReplayGain analysis — optional track-level loudness tagging via ffmpeg, runs before lossy copy so both files get tagged - Picard-style album consistency — pre-flight MusicBrainz release lookup ensures all tracks get the same release ID ### Listening Stats & Scrobbling @@ -117,8 +118,13 @@ SoulSync bridges streaming services to your music library with automated discove - Spotify auth still enables playlists, followed artists, and enrichment - MusicBrainz enrichment with Picard-style album consistency +**Hydrabase** (optional P2P metadata network) — replaces iTunes as the metadata source when connected. Federated lookup with community-matched results, falls back automatically if disconnected. Dev-mode feature, enable in Settings → Connections. + +**Genre Whitelist** — filter junk genre tags (artist names, radio show names, playlist names) from all 10 enrichment sources. 272 curated default genres, fully customizable. Off by default for backward compatibility. + **Post-Processing Tag Embedding** - Granular per-service tag toggles (18+ MusicBrainz tags, Spotify/iTunes/Deezer IDs, AudioDB mood/style, Tidal/Qobuz ISRCs, Last.fm tags, Genius URLs) +- Multi-artist tagging options: configurable separator (comma/semicolon/slash), multi-value ARTISTS tag for Navidrome/Jellyfin multi-artist linking, optional "move featured artists to title" mode - Album art embedding, cover.jpg download - Spotify rate limit protection across all API calls @@ -134,12 +140,13 @@ SoulSync bridges streaming services to your music library with automated discove ### Automation **Automation Engine** — Visual drag-and-drop builder for custom workflows -- **Triggers**: Schedule, Daily/Weekly Time, Track Downloaded, Batch Complete, Playlist Changed, Discovery Complete, Signal Received, and 10+ more -- **Actions**: Process Wishlist, Scan Watchlist, Refresh Mirrored, Discover Playlist, Sync Playlist, Scan Library, Database Update, Quality Scan, Full Cleanup, and more -- **Then Actions**: Fire Signal (chain automations), Discord, Telegram, Pushbullet notifications -- **Playlist Pipeline**: Single automation for full playlist lifecycle — refresh → discover → sync → download missing. No signal wiring needed. -- **Pipelines**: Pre-built one-click pipeline deployments (New Music, Nightly Operations, etc.) -- **Signal Chains**: playlist_id forwarded from events to action handlers for proper chain execution +- **Triggers**: Schedule, Daily/Weekly Time, Track Downloaded, Batch Complete, Playlist Changed, Discovery Complete, Signal Received, Library Scan Complete, Watchlist Match, Wishlist Item Added, and more +- **Actions**: Process Wishlist, Scan Watchlist, Refresh Mirrored, Discover Playlist, Sync Playlist, Scan Library, Database Update, Quality Scan, Full Cleanup, and 10+ more +- **Then Actions** (up to 3 per automation): Fire Signal (chain to other automations), Discord/Telegram/Pushbullet notifications, audible chimes +- **Signal Chains** — One automation fires `signal:foo`, another listens for it. Cycle detection + chain depth limit + cooldown prevent runaway chains. +- **Playlist Pipeline** — Single automation for full playlist lifecycle: refresh → discover → sync → download missing. No manual signal wiring. +- **Pipelines** — Pre-built one-click deployments (New Music, Nightly Operations, Full Library Maintenance, etc.) that install a linked group of automations at once +- **Automation Groups** — Drag-and-drop organization, bulk enable/disable, rename, right-click context menus **Watchlist** — Monitor unlimited artists with per-artist configuration - Release type filters: Albums, EPs, Singles @@ -149,8 +156,11 @@ SoulSync bridges streaming services to your music library with automated discove **Wishlist** — Failed downloads automatically queued for retry with auto-processing **Mirrored Playlists** — Mirror from Spotify, Tidal, YouTube, Deezer and keep synced -- Automatic refresh detects changes, discovery pipeline matches metadata -- Followed Spotify playlists with 403 errors fall back to public embed scraper +- Auto-refresh detects source changes via URL/ID tracking in playlist metadata +- Discovery pipeline matches source tracks to user's primary metadata source (Spotify/iTunes/Deezer/Discogs) +- Auto Wing It fallback — tracks that fail all metadata APIs get stub metadata from the raw source title and flow through the normal download pipeline anyway +- Followed Spotify playlists that hit 403 errors fall back to public embed scraper +- Unmatch button on found tracks with DB persistence for mirrored playlists **Local Profiles** — Multiple configuration profiles with isolated settings, watchlists, and playlists @@ -176,6 +186,8 @@ SoulSync bridges streaming services to your music library with automated discove **Database Storage Visualization** — Donut chart showing per-table storage breakdown +**Live Log Viewer** — Real-time terminal-style log viewer on Settings → Logs. Color-coded levels (DEBUG/INFO/WARNING/ERROR), live filter + search, switch between log files (app, post-processing, AcoustID, source reuse). Auto-scroll, copy, clear. Updates via WebSocket every 0.5s. + **Import System** — Tag-first matching, auto-grouped album cards, staging folder workflow - Auto-Import worker: recursive scan, single file support, AcoustID fingerprinting fallback - Confidence-gated: 90%+ auto-imports, 70-90% queued for review