عن المشروع

Freyr هي أداة سطر أوامر لتنزيل المقاطع الموسيقية من خدمات البث. عند إعطائها رابطًا أو معرّفًا قصيرًا من Spotify أو Apple Music أو Deezer، تستخرج بيانات المسار (العنوان، الفنان، الألبوم، رقم المسار/القرص، تاريخ الإصدار، ISRC، العلامة التجارية، حقوق النشر، الغلاف والمزيد)، ثم تستعلم من مصادر الصوت مثل YouTube Music للعثور على الصوت المطابق، وتنزّل الملف الخام، وترمّزه إلى Apple AAC بصيغة .m4a بمعدل بت قابل للتكوين (96–320kbps، الافتراضي 320k)، وتضمّن البيانات الوصفية وغلاف الألبوم، وتنظم المخرجات في بنية مجلدات ARTIST/ALBUM/TRACK. تشمل أنواع الاستعلام المدعومة المسارات والألبومات والفنانين وقوائم التشغيل. يمكن إجراء تنزيلات دفعية بتمرير استعلامات متعددة كوسائط أو عبر ملف إدخال (-i/--input) حيث يمثل كل سطر استعلامًا وتشير # إلى التعليقات. يحوّل الأمر الفرعي urify بين روابط الخدمة والمعرفات القصيرة المتوافقة مع freyr. تشمل الخيارات البارزة اختيار معدل البت، وتنزيل المقاطع المتزامنة (-n/--chunks)، وعدد مرات إعادة المحاولة، ومجلد إخراج مخصص، والتحقق من مجلدات أخرى بحثًا عن مسارات موجودة (-D)، وتسمية غلاف الألبوم وحجمه أو تعطيله، وترتيب تفضيل المصادر (youtube، yt_music، مع ! للاستبعاد)، وفلاتر البيانات الوصفية، وضبط التزامن لكل مرحلة (queries، tracks، trackStage، downloader، encoder، embedder)، وعلامة التشغيل المتواصل، وفرض الكتابة فوق الملفات، وإنشاء قوائم التشغيل (m3u8) مع خيارات للمجلد والإلحاق والتهريب وإضافة بادئة مساحة الاسم، ورمز بلد المتجر، وتعطيل التنظيم الشجري، والتحكم في مجلد التخزين المؤقت، وحجم ذاكرة التخزين المؤقت، ومهلة الشبكة، وخيارات المصادقة وتشغيل المتصفح، وأنماط شريط التقدم، ومسار ثنائي AtomicParsley صريح. يتوفر التثبيت عبر npm (npm install -g freyr) أو Yarn، أو من المصدر، أو من خلال صور Docker الرسمية (freyrcli/freyrjs) مع أمر docker run موثق ومثال alias. تشمل المتطلبات Python >= 3.2 وNode.js >= 16 وAtomicParsley >= 20230114. يوضح README أن YouTube Music يجب أن يكون متاحًا في منطقة المستخدم لأن الصوت الخام يُجلب منه. المشروع مرخّص ويتضمن فحوصات CI وتقييم CodeFactor وشارات تنزيل npm وDocker وروابط تبرع.