soulsync/core
BoulderBadgeDad a789fb71c0 Library export: export the whole library roster too (corruption's request)
Extends the watchlist export to the full library. The exporter is now general
(core/exports/artist_export.py, renamed from watchlist_export) — adds tidal/qobuz
links and an extra_fields passthrough, so the library export also carries
lastfm/genius URLs + soul_id, and an optional "library counts" toggle adds owned
album/track counts per artist.

- GET /api/library/artists/export?format=&links=&contents= — pulls every artists
  row, normalizes onto the canonical *_artist_id keys, optionally GROUP-BY counts
  for album/track totals.
- The export modal is now openArtistExportModal(scope): "Export Library" button in
  the library header + the existing "Export" on the watchlist bar (a thin wrapper).
  Library mode shows the extra "library counts" toggle.

Tests (11): builder across formats + the new tidal/qobuz links + extra_fields
columns; watchlist + library endpoint wiring. 64 integrity green; ruff clean.
2026-06-11 22:59:21 -07:00
..
artists
automation Merge pull request #780 from kekkokk/feature/organize-by-playlist-library 2026-06-03 20:33:18 -07:00
blocklist
credentials
diagnostics
discovery #702: make mirrored-playlist cancel/reset/delete idempotent (un-wedge LB weekly sync) 2026-06-11 12:55:55 -07:00
download_engine
download_plugins
downloads
enrichment
exports
imports Use app confirm modal for verification review actions 2026-06-11 01:53:05 +02:00
library Artist Sync: guard stale-removal against an unreachable mount + gate it admin-only 2026-06-10 19:33:44 -07:00
maintenance
matching
media_server
metadata
personalized
playback
playlists
radio
repair_jobs
search Multi-artist tags: Search → Download Now finally knows its metadata source (Netti93) 2026-06-09 17:20:16 -07:00
security
stats
streaming
sync Sync: append mode actually dedupes — stop re-adding the whole playlist (#823) 2026-06-09 16:31:05 -07:00
text
torrent_clients
usenet_clients
watchlist
webui
wishlist
workers Final silent-exception sweep + ruff S110 lint guardrail — ~45 sites 2026-05-07 11:16:06 -07:00
acoustid_client.py
acoustid_verification.py
album_consistency.py
amazon_client.py
amazon_download_client.py
amazon_outage.py
amazon_worker.py
api_call_tracker.py
archive_pipeline.py
artist_source_detail.py
artist_source_lookup.py
audiodb_client.py
audiodb_worker.py
auto_import_worker.py
automation_engine.py
connection_detect.py
connection_test.py
database_update_worker.py
db_integrity.py
debug_info.py Fix Copy Debug Info music_source + surface missing services 2026-05-12 16:47:55 -07:00
deezer_client.py
deezer_download_client.py
deezer_worker.py
discogs_client.py
discogs_worker.py
download_orchestrator.py
genius_client.py
genius_worker.py
genre_filter.py
hifi_client.py
hydrabase_client.py
hydrabase_worker.py
image_cache.py
itunes_client.py
itunes_worker.py
jellyfin_client.py
lastfm_client.py
lastfm_worker.py
library_reorganize.py
lidarr_download_client.py Surface silent exceptions across remaining modules — ~70 sites 2026-05-07 10:28:58 -07:00
listenbrainz_client.py
listenbrainz_manager.py
listening_stats_worker.py
lyrics_client.py
matching_engine.py
metadata_service.py
musicbrainz_client.py
musicbrainz_search.py
musicbrainz_service.py
musicbrainz_worker.py
navidrome_client.py
personalized_playlists.py
plex_client.py
profile_context.py
prowlarr_client.py
qobuz_client.py
qobuz_worker.py
reorganize_queue.py
reorganize_runner.py
repair_worker.py
replaygain.py
runtime_state.py
seasonal_discovery.py
similar_artists_worker.py
socketio_cors.py
soulid_worker.py
soulseek_client.py
soulsync_client.py
soundcloud_client.py
source_ids.py
spotify_client.py
spotify_free_metadata.py
spotify_public_api.py
spotify_public_scraper.py
spotify_token_cache.py
spotify_worker.py
tag_writer.py
tidal_client.py
tidal_download_client.py
tidal_worker.py
watchlist_scanner.py
web_scan_manager.py
wishlist_service.py
worker_utils.py
youtube_client.py