Naar inhoud springen

Importpijplijn

Importeren verandert een map met bestanden in een catalogusitem zonder een byte van de bestanden te wijzigen. Deze pagina is de pijplijn achter de stroom die wordt beschreven in de gebruiksgids.

Bewaakte mappen worden gemonitord via de bestandssysteemevents van het platform, gedebounced, en bij wijziging opnieuw gescand; scans stemmen af met de bestaande kandidatenlijst in plaats van opnieuw te beginnen. De scanner classificeert een map als een release (audio direct erin, of discvormige submappen zoals CD1/CD2), of gaat erin verder als verzameling. Bestanden worden op extensie geclassificeerd als audio, artwork en documenten, daarna wordt audio geprobed: de codec die telt is degene die FFmpeg in de bytes vindt, niet de bestandsextensie. Mappen met markeringen voor gedeeltelijke downloads worden uitgesloten totdat de download klaar is.

Een CUE-sheet maakt van een audio-image een tracklijst. De parser behandelt pregaps en postgaps, performers en ISRCs per track, en zowel images met een bestand als CUE-indelingen met een bestand per track. Trackgrenzen worden van CUE-frames (1/75e seconde) naar exacte sampleposities geconverteerd, die later de byte- en samplevensters worden die afspelen gebruikt.

Concepten van metagegevens

Link naar deze sectie

Elke kandidaat slaat één bewerkbare metadata-concept en optionele herkomst op. Het concept kan leeg zijn, direct worden ingevuld, worden ingevuld vanuit een externe release of worden ingevuld vanuit een opgeslagen snapshot van een bestandstag. Herkomstrecords waar het huidige concept is begonnen; latere bewerkingen wissen het niet. Directe invoer en een gewist concept hebben geen herkomst.

Het bovenste metadataslot toont ofwel het concept, de Online zoeken-browser of de Bestandstags-browser.Het openen of sluiten van een browser herschrijft het concept niet.Toepassening een bron vervangt het concept, de herkomst en de geselecteerde broncover in één databasetransactie terwijl bestandsrollen, CUE-bindingen, schijftoewijzingen en andere mapping-beslissingen behouden blijven.

Online zoeken is het enige pad dat identificatie uitvoert. Het berekent een Disc ID vanuit een rip log of CUE-blad, herkent barcodes en catalogustekst met OCR, vraagt MusicBrainz en Discogs op en vergelijkt de resultaten.

De instelling Standaardbron voor metagegevens heeft drie waarden. Geen maakt een leeg concept en start geen metagegevenswerk. Bestandstags leest de momentopname van tags en past die toe. Online zoeken opent de online werkwijze. Standaardmodus voor Online zoeken kiest Automatisch, dat bewijsextractie, providerquery’s en het vergelijken in de wachtrij zet, of Handmatig zoeken, dat geen identificatie start. Online zoeken gebruikt voor elke kandidaat de gekozen modus; Automatisch start een actieve of voltooide taak niet opnieuw.

Bestandstags leest ingesloten audiolabels en CUE-metagegevens lui, tenzij dit de standaardinstelling is voor een nieuw ontdekte kandidaat. De voorvertoning slaat een momentopname op met de scangeneratie van de kandidaat, de bestandsbewerkingsrevisie en de waargenomen audiobestanden. Toepassen vervangt het concept van die exacte momentopname. Importeren verbruikt dezelfde momentopname en mislukt voordat de bibliotheek schrijft als de stempel of waarnemingen zijn gewijzigd; het leest geen ander antwoord.

Direct invoeren voert geen I/O van metagegevens uit. De vrijgave- en trackvelden van het lege concept kunnen onmiddellijk worden bewerkt en het wordt importeerbaar wanneer de vereiste velden en toewijzingen worden gevalideerd.De kandidaatlijst behandelt ontbrekende herkomst niet als een fout of een verzoek om aandacht.

MusicBrainz wordt anoniem bevraagd met een strak tempo van een verzoek per seconde. Discogs authenticeert met de persoonlijke token van de gebruiker uit de sleutelbos, gedoseerd en opnieuw geprobeerd binnen zijn rate limits, en een geweigerde token wordt als zodanig gerapporteerd zodat de UI hem kan markeren in plaats van zoekopdrachten stil te laten falen. Antwoorden worden per sessie gecachet. Wanneer een release gekozen wordt, wordt wat bae uit de documenten gebruikt — album- en persgegevens, de volledige tracklijst met credits en werken, de hoesopties en hoe andere catalogi hem noemen — één keer naar de database geëxtraheerd; de ruwe JSON wordt niet bewaard.

Een import bevestigen draait, op volgorde:

  1. Decodecontrole: elke track wordt van begin tot eind gedecodeerd; een rip die niet volledig kan decoderen faalt de import voordat iets wordt geschreven.
  2. Loudnessanalyse: integrated loudness en true peak worden per track en per album gemeten tijdens dezelfde decodepass, opgeslagen voor replay-gain-gebruik.
  3. Hoesselectie: de gekozen art (remote, mapafbeelding, of ingesloten) wordt opnieuw gerenderd naar een displaythumbnail; het origineel wordt bij de bestanden van de release bewaard als het uit de map kwam.
  4. Atomaire write: de release, tracks, credits, identities, formats, segments, files en cover committen in een transactie. Er is geen half-geimporteerde toestand.

De release landt met verwijzingen naar de bestanden van de gebruiker op hun plek. Bij een cloud-import leest en hasht coven elk bestand vóór de write, en dezelfde write zet elk bestand klaar bij coven, laat elke rij naar zijn bestand wijzen en zet de upload in de wachtrij. Een lokale import legt in plaats daarvan het pad, de grootte en de wijzigingstijd van elk bestand op dit apparaat vast; de bytes worden pas gelezen als de release later naar de cloud wordt verplaatst. Hoe dan ook blijven de oorspronkelijke bytes van de bestanden de bron van waarheid; niets wat de gebruiker aan bae gaf wordt ooit verwijderd of gewijzigd.

Rips herkennen

Link naar deze sectie

Elke import maakt een release met een nieuwe willekeurige ID en eigen rijen voor nummers en bestanden. Elk apparaat legt in local_release_origin een SHA-256 vast van de gesorteerde relatieve paden, groottes en wijzigingstijden van de bestanden die elk van zijn imports las; dat gegeven wordt nooit gesynchroniseerd. Een map waarvan dit apparaat de hash vastlegde, staat op het tabblad voor voltooide imports, waar hij ook heen is verplaatst, en zijn rij noemt de ene release die eruit is geïmporteerd. Dezelfde bestanden op dat apparaat opnieuw importeren mislukt, en het tabblad voor voltooide imports biedt geen herimport aan.