New algorithm: pick first track alphabetically from artist's library, search both Deezer and iTunes APIs for 'artist track' to find the exact artist, verify name matches, then use max(deezer_id, itunes_id) as the canonical differentiator. Deterministic across instances — any SoulSync with the same artist and at least one matching track will produce the same soul_id. Fallback chain: canonical API ID → first album title → name only. Migration clears all artist soul_ids on first v2.1 startup for regeneration. |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| music_database.py | ||
| music_library.db | ||