आयात पाइपलाइन
आयात फाइलों के फोल्डर को, उन फाइलों का एक भी बाइट बदले बिना, रिलीज के हिसाब से सही कैटलॉग प्रविष्टि में बदलता है। यह पेज आयात गाइड में बताए गए प्रवाह के पीछे की पाइपलाइन है।
स्कैनिंग
इस अनुभाग का लिंकनिगरानी वाले फोल्डर प्लेटफॉर्म की फाइल-प्रणाली घटनाओं से देखे जाते हैं, बदलावों को थोड़ी देर रोककर मिलाया जाता है, और बदलाव आने पर फिर स्कैन किए जाते हैं; स्कैन मौजूदा उम्मीदवार सूची से मिलान करते हैं, फिर से शुरू नहीं करते। स्कैनर किसी फोल्डर को एक रिलीज मानता है (ऑडियो सीधे भीतर हो, या CD1/CD2 जैसे डिस्क-आकार के सबफोल्डर हों), या संग्रह मानकर उसके भीतर उतरता है। फाइलें एक्सटेंशन से ऑडियो, कला और दस्तावेजों में बांटी जाती हैं, फिर ऑडियो की जांच होती है: मायने उस कोडेक का है जो FFmpeg बाइट में पाता है, फाइल एक्सटेंशन का नहीं। आधे डाउनलोड के चिन्ह वाले फोल्डर डाउनलोड पूरा होने तक बाहर रखे जाते हैं।
CUE sheet एक ऑडियो image को ट्रैक सूची में बदलती है। पार्सर प्रीगैप और पोस्टगैप, हर ट्रैक के कलाकार और ISRC, तथा एक-फाइल image और हर-ट्रैक-एक-फाइल CUE विन्यास, दोनों संभालता है। ट्रैक सीमाएं CUE frames (सेकंड का 1/75 हिस्सा) से ठीक नमूना स्थितियों में बदली जाती हैं, जो बाद में प्लेबैक की बाइट और नमूना खिड़कियां बनती हैं।
प्रमाण, टैग नहीं
इस अनुभाग का लिंकपहचान एक ही दौर में फोल्डर से तीन तरह के प्रमाण पढ़ती है:
- disc ID, CD के ठीक ट्रैक क्रम का MusicBrainz fingerprint, जो rip log या CUE sheet से निकाला जाता है;
- बारकोड, जो कला scan से प्लेटफॉर्म के vision framework द्वारा पढ़े जाते हैं और CUE catalog फ़ील्ड से लिए जाते हैं;
- पाठ: कला OCR, फोल्डर और फाइल नाम, और rip की पाठ फाइलों से catalog number और मुक्त पाठ।
एम्बेडेड ऑडियो टैग जानबूझकर प्रमाण नहीं हैं: वे बताते हैं कि टैग लगाने वाले ने क्या माना, प्रेसिंग क्या है यह नहीं। (जब उपयोगकर्ता रिलीज को अज्ञात के रूप में आयात करता है, तब वे fallback मेटाडेटा भरते हैं।)
Disc ID और बारकोड साथ-साथ खोजे जाते हैं: disc ID MusicBrainz में, और बारकोड MusicBrainz तथा Discogs दोनों में। फिर नतीजों का मिलान होता है: जो नतीजे रिलीज़ group पर सहमत हों वे साथ आते हैं, catalog-number match प्रेसिंग सूची को घटाते हैं, और संकेतों के बीच असहमति चुपचाप अनुमान लगाने के बजाय उपयोगकर्ता को साफ टकराव के रूप में दिखती है। हर नतीजा अपना मूल साथ रखता है (disc ID से मिला, बारकोड से मिला, catalog match), ताकि UI बता सके कि कोई पंक्ति क्यों दी जा रही है।
स्रोत
इस अनुभाग का लिंकMusicBrainz से बिना पहचान बताए, हर सेकंड एक अनुरोध की सख्त गति से पूछा जाता है। Discogs कुंजी-भंडार से उपयोगकर्ता के निजी टोकन से प्रमाणित करता है, अपनी दर-सीमा के भीतर रुक-रुककर और फिर कोशिश करके चलता है, और टोकन अस्वीकार हो तो उसे वैसा ही बताया जाता है ताकि UI शांत खोज-विफलता के बजाय उसे दिखा सके। उत्तर हर सत्र में कैश होते हैं, और जो स्रोत चुना जाता है उसका raw JSON बाद में फिर समझने के लिए डेटाबेस में रखा जाता है।
आयात की पुष्टि करने पर क्रम से ये काम होते हैं:
- डिकोड सत्यापन: हर ट्रैक शुरू से अंत तक डिकोड होता है; जो rip पूरी तरह डिकोड नहीं हो सकता, कुछ भी लिखे जाने से पहले आयात विफल करता है (config flag इसे बंद कर सकता है)।
- ध्वनि-स्तर विश्लेषण: उसी डिकोड दौर में हर ट्रैक और हर एल्बम के लिए समेकित ध्वनि-स्तर और वास्तविक शिखर मापे जाते हैं, और replay-gain उपयोग के लिए रखे जाते हैं।
- कवर चयन: चुनी गई कला (दूरस्थ, फोल्डर image, या embedded) display thumbnail में फिर बनाई जाती है; मूल कला रिलीज की फाइलों में रखी जाती है, अगर वह फोल्डर से आई थी।
- एक-लेनदेन लेखन: रिलीज, ट्रैक, credits, identities, फ़ॉर्मैट, segments, फाइलें और कवर एक ही transaction में कमिट होते हैं। आधी आयातित अवस्था नहीं बनती।
रिलीज उपयोगकर्ता की फाइलों को उनकी जगह पर संदर्भित करते हुए दर्ज होती है। अगर उपयोगकर्ता ने क्लाउड-प्रबंधित चुना है, तो अपलोड कमिट के बाद संग्रहण बदलाव के रूप में होता है, और फाइलों के मूल बाइट पूरे समय सत्य का स्रोत रहते हैं; उपयोगकर्ता ने bae को जो दिया है वह कभी मिटाया या बदला नहीं जाता।
rips पहचानना
इस अनुभाग का लिंकहर रिलीज अपने आयातित फोल्डर की संरचना (सापेक्ष पथ और आकार, स्थान से स्वतंत्र) पर content hash दर्ज करती है। फिर स्कैन उसी से फोल्डर को लाइब्रेरी में पहले से मौजूद चिन्हित करते हैं, और उसी rip के दोबारा आयात उसे दोहराने के बजाय पिछली रिलीज ढूंढकर बदलते हैं।