Top 2000: het jaar en de plaat van de track, niet die van de lijst #62
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
In een Top 2000-collectie dragen alle tracks het jaar en de naam van de lijst in plaats van die van de track zelf. Gemeten over de 2000 bestanden op schijf:
2024Top 2000Dat is precies wat de speler toont: het jaar komt rechtstreeks uit de tag (
MediaService.ReadTags→file.Tag.Year), en de ALBUM-kolom leest tweeduizend keerTop 2000. Allebei even nutteloos om naar te kijken.Kan MusicBrainz het leveren?
Ja. Ik heb tien tracks uit een dwarsdoorsnede van de lijst door
MusicBrainzService.FindAlbumAsyncgehaald — de methode die de scan zelf gebruikt. Zeven van de tien goed:De drie missers zijn één en hetzelfde geval: de zoekopdracht komt uit op een verzamelaar of een liveplaat, en rapporteert dan diens jaar. Twintig jaar mis, en stil — een verkeerd jaartal valt niet op zoals een verkeerde albumnaam.
De regel die het wél goed doet
Niet het jaar van de gekozen plaat nemen, maar de vroegste release-group waar de opname op voorkomt. Een verzamelaar is nooit de vroegste. Alle drie de missers komen dan goed uit:
Beide stukken zitten al in
FindAlbumAsync: de release-groups waar de opname op staat (candidates) en de eerste verschijningsdatum per release-group uit de artiestencatalogus (released, opgehaald doorArtistAlbumsAsync). Het is een tweede antwoord uit gegevens die er al zijn — geen extra verzoek.Let op: het moet de catalogusdatum zijn en niet de datums uit de zoekuitslag zelf. Met dat laatste komt Bohemian Rhapsody op 1976 in plaats van 1975, omdat sommige persingen van A Night at the Opera het jaar erna dragen.
Het is dus een aparte vraag van die welke
FindAlbumAsyncbeantwoordt, en verdient een eigen methode:Wat het kost
2000 opzoekingen à één per seconde: 35 tot 70 minuten, eenmalig. Zodra de albumtag een echte naam draagt is
IsVolumeTitleer niet meer op van toepassing en neemt een volgende scan hem op zijn woord — dezelfde eenmaligheid als bij de RockHeaven-volumes.Wat er te beslissen valt
1. Het overschrijft een bestaand jaar en een bestaande albumnaam. Dat botst met de staande regel dat er nooit iets overschreven wordt. Te verdedigen: in een collectie met de vorm
flatís het jaar dat van de lijst en de albumnaam die van de lijst — een eigenschap van de collectiesoort, niet iets wat de tagger over deze track heeft willen zeggen. Dezelfde categorie als volume 0, enClearVolumesdoet al precies zoiets.2. Het is per track, niet per plaat. Alle Top 2000-tracks van één artiest delen nu één albumrij
Top 2000, dus de eenheid vanAlbumRepairServicepast hier niet. Dit wordt een eigen stap, met eenProgressStreamzoals de andere lange banen — een uur werk hoort een voortgangsregel en een samenvatting te hebben.3. Branchen op de vórm, niet op het type.
CollectionShapes.Flatin plaats vanCollectionTypes.Top2000, zoals de rest van de code het doet. Een tweede platte collectie krijgt dan dezelfde behandeling zonder dat er iets bij hoeft.4. Gevolgen van het schrijven van de albumnaam, die het waard zijn om vooraf te noemen:
Top 2000per artiest valt uiteen in echte platen. Waar de Albums-collectie diezelfde plaat al heeft, komen de tracks in dezelfde rij terecht — de albumrij ís de plaat en loopt over collecties heen. Dat is winst: één hoes bedient dan beide.CLAUDE.mdzegt nu: "The Top 2000's album tag is left alone, and that needs no special case." Die alinea moet herschreven, inclusief de reden dat het nu wél een special case is.FindKnownAlbumvraagt alleen albumcollecties, dus daar verandert niets.Nog een omissie die hierbij hoort
AlbumMatchDtodraagt het jaar niet over de lijn, terwijlAlbumMatchhet sinds #56 wél heeft. Daardoor kan het bewerkvenster het gevonden jaar niet aanbieden, en kwam het bij het meten hierboven als?terug uit/api/musicbrainz/recording. Kleine toevoeging die hier logisch bij hoort.Risico
De steekproef was tien tracks. Ook met de betere regel zal er een deel misgaan — de opzoeking is nergens beter dan wat MusicBrainz teruggeeft, en een verkeerd jaartal is stil. Voor het meten achteraf is het handig dat de eerste ronde de tags schrijft: een tweede meting over de bestanden laat zien hoeveel er nog op
2024staan (niets gevonden) en hoe de rest verdeeld is.Opgepakt op branch
lijstcollectie-jaar-en-plaat— vergelijken met main.Commit:
c4ba6d9. Sluit dit issue bij de merge.