fix: look tags up by artist name rather than by MusicBrainz id
Build and publish container / build (pull_request) Successful in 2m53s
Build and publish container / build (pull_request) Successful in 2m53s
Tag lookups asked by MusicBrainz id whenever Lidarr had one, which is always. The reasoning was that an id cannot be ambiguous the way a name can. In practice Last.fm's mbid index is stale and partial, and it answered "the artist you supplied could not be found" for Devo, Escape the Fate, Blasterjaxx, Frank Carter & the Rattlesnakes and a long tail of others -- artists whose Last.fm pages plainly exist and carry precisely the tags the moods are built from. Devo is tagged new wave, post-punk and 80s; Escape the Fate is tagged post-hardcore, screamo and emocore. Both were skipped. Ask by name first, which is the index Last.fm's own site runs on, and keep the id only as a fallback for a name Lidarr spells differently. Failures were also being dropped without recording the attempt, so every one of those artists was re-queried on every subsequent pass, indefinitely. They are now distinguished: an artist that neither key resolves is recorded as fetched with no tags and not asked about again, while a genuine failure -- a rate limit, a bad key -- is deliberately left unrecorded so the next pass retries it. Telling the two apart needed the service's own error number, so LastfmError now carries it.
This commit is contained in:
@@ -159,11 +159,20 @@ listening history. MusicBrainz genres arrive free with the Lidarr index and are
|
||||
no use for this: they are sparse and formal, and will not tell you a record is
|
||||
screamo or synthwave. People typing tags will.
|
||||
|
||||
Tags are fetched once per artist — one `artist.getTopTags` call each, by
|
||||
MusicBrainz id where Lidarr has one — and refreshed every ninety days. An
|
||||
artist Last.fm has never heard of is recorded as fetched with no tags, so it is
|
||||
not asked about again on every pass. `--tag-limit` spreads the first sweep over
|
||||
several passes.
|
||||
Tags are fetched once per artist — one `artist.getTopTags` call each — and
|
||||
refreshed every ninety days. `--tag-limit` spreads the first sweep over several
|
||||
passes.
|
||||
|
||||
Artists are looked up **by name**, not by MusicBrainz id, despite Lidarr having
|
||||
an id for every one of them. Last.fm's mbid index is stale and partial: it
|
||||
answers "the artist you supplied could not be found" for Devo, Escape the Fate,
|
||||
Blasterjaxx and a few hundred others whose pages plainly exist and carry exactly
|
||||
the tags wanted. Its name index is the one its own site runs on. The id is kept
|
||||
only as a fallback, for a name Lidarr spells differently.
|
||||
|
||||
An artist neither key resolves is recorded as fetched with no tags, so the next
|
||||
pass does not spend a request on it again. A genuine failure — a rate limit, a
|
||||
bad key — is *not* recorded, so that one is retried.
|
||||
|
||||
The built-in moods are chosen for this library rather than as a general
|
||||
taxonomy:
|
||||
|
||||
Reference in New Issue
Block a user