Phase 1: data collection only — no behavior changes. Adds nullable track_artist column to tracks table. During database updates (incremental, full refresh, deep scan), extracts per-track artist from the media server when it differs from the album artist: - Plex: originalTitle field - Jellyfin/Emby: ArtistItems[0] vs AlbumArtists[0] - Navidrome: artist attribute vs album artist name NULL for normal albums (track artist = album artist). Populated only when the media server reports a different per-track artist. UPDATE uses COALESCE to never overwrite existing data with NULL. |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| music_database.py | ||
| music_library.db | ||