أدوات للانتقال من Spotify إلى YTMusic
هذه مجموعة من البرامج النصية لنسخ الأغاني وقوائم التشغيل "المفضلة" من Spotify إلى YTMusic. وهو يوفر كلاً من أدوات واجهة سطر الأوامر (CLI) وواجهة المستخدم الرسومية (التي تم تنفيذها بواسطة Yoween، والتي كانت تُعرف سابقًا باسم Spotify_to_ytmusic_gui).
شكرًا @RadicalArti وMeet Vora على مساهماتهم المالية السخية في هذا المشروع.
ستحتاج إلى إصدار حديث إلى حد ما من Python 3.10 والإصدارات الأحدث المعروفة للعمل، وقد يعمل الإصدار 3.8-3.10.
قم بتنزيل Python لنظام التشغيل Windows من: https://www.python.org/downloads/windows/
يمكنك أيضًا استخدام choco لتثبيته: choco install python
يجري:
brew install python
brew install python-tk
تثبيت الشهادات عن طريق القيام بما يلي:
Macintosh HD > التطبيقات > Python Folder > انقر نقرًا مزدوجًا على ملف "Install Certifieds.command".
ربما قمت بالفعل بتثبيته. راجع مدير الحزم الذي تختاره لتثبيته.
هذه الحزمة متاحة على النقطة، لذا يمكنك تثبيتها باستخدام:
pip install spotify2ytmusic
أو:
python3 -m pip install spotify2ytmusic
(غير مستحسن)
هناك خيار آخر، بدلاً من النقطة، وهو استنساخ هذا الريبو وتشغيله مباشرة من المصدر. ومع ذلك، ستحتاج إلى تثبيت حزمة "ytmusicapi"، لذا قد ترغب في استخدام النقطة لتثبيتها على الأقل.
للتشغيل مباشرة من المصدر:
git clone [email protected]:linsomniac/spotify_to_ytmusic.git
cd spotify_to_ytmusic
pip install ytmusicapi
pip install tk # If using the GUI
بعد ذلك يمكنك إضافة بادئة للأمر الذي تريد تشغيله باستخدام python3 -m spotify2ytmusic
، على سبيل المثال:
python3 -m spotify2ytmusic gui
python3 -m spotify2ytmusic list_playlists
python3 -m spotify2ytmusic load_liked
[etc...]
إذا قمت بالتثبيت عبر PIP، فمن المفترض أن تكون قادرًا على تشغيل: s2yt_gui
بخلاف ذلك، إذا كان يعمل من المصدر:
على نظام التشغيل Windows: python -m spotify2ytmusic gui
أو على Linux: python3 -m spotify2ytmusic gui
login
في علامة التبويب الأولىأو
قم بتشغيل ytmusicapi oauth
في وحدة التحكم.
أو
قم بتشغيل s2yt_ytoauth
أو
قم بتشغيل python -m spotify2ytmusic ytoauth
سيعطيك هذا عنوان URL، وقم بزيارة عنوان URL هذا وتفويض التطبيق. عند الانتهاء من عملية الاستيراد، يمكنك إزالة الترخيص لهذا التطبيق.
سيؤدي هذا إلى كتابة ملف "oauth.json". احتفظ بسرية هذا الملف أثناء ترخيص التطبيق. يتضمن هذا الملف رمزًا مميزًا للجلسة التي تم تسجيل الدخول إليها.
ytmusicapi هو أحد تبعيات هذا البرنامج ويجب تثبيته كجزء من "تثبيت النقطة".
Backup
، وانتظر حتى الانتهاء وانتقل إلى علامة التبويب التالية.أو قم بتنفيذ جميع الخطوات أدناه
تحميل سبوتيفي النسخ الاحتياطي.
قم بتشغيل spotify-backup.py
وسيساعدك على السماح بالوصول إلى حسابك على Spotify.
تشغيل: python3 spotify-backup.py playlists.json --dump=liked,playlists --format=json
سيؤدي هذا إلى حفظ قوائم التشغيل والأغاني المفضلة لديك في الملف "playlists.json".
كما هو مذكور أدناه، يضيف البرنامج الأصلي الأغاني بالترتيب "الخاطئ". هذه ميزة لا أحبها، لذا قمت بإنشاء برنامج نصي لعكسها. يبدو أنها موثوقة، ولكن إذا وجدت أي شيء غريب، يرجى فتح قضية. يقوم بإنشاء نسخة احتياطية من الملف الأصلي في حالة حدوث ذلك على أي حال.
مثال: python3 .reverse_playlist.py ./playlists.json -r
import
، وانتظر حتى الانتهاء وانتقل إلى علامة التبويب التالية.سيتم تصفح أغانيك المفضلة على Spotify، وسيقوم بالإعجاب بها على YTMusic. سيعرض الأغنية من Spotify ثم الأغنية التي وجدتها على YTMusic والتي أعجبتها. لقد قمت بفحص الأغاني الخاصة بي ويبدو أنها تقوم بعمل جيد في مطابقة أغاني YTMusic مع Spotify. حتى الآن لم أشاهد فشلًا واحدًا في بضع مئات من الأغاني، ولكن قد تكون هناك مشكلات في العناوين الأكثر غموضًا.
list
، وانتظر حتى تنتهي وتنتقل إلى علامة التبويب التالية.سيؤدي هذا إلى إدراج قوائم التشغيل الموجودة لديك على كل من Spotify وYTMusic، حتى تتمكن من نسخها بشكل فردي.
يمكنك إما نسخ جميع قوائم التشغيل، أو عمل نسخة جراحية أكثر لقوائم التشغيل الفردية. سيؤدي نسخ جميع قوائم التشغيل إلى استخدام اسم قائمة التشغيل Spotify كاسم قائمة التشغيل الوجهة على YTMusic.
copy
، وانتظر حتى تنتهي ثم انتقل إلى علامة التبويب التالية.ملاحظة : لا يؤدي هذا إلى نسخ قائمة التشغيل التي أعجبني (انظر أعلاه للقيام بذلك).
في مخرج القائمة، ابحث عن "معرف قائمة التشغيل" (العمود الأول) لقائمة تشغيل Spotify وقائمة تشغيل YTMusic.
copy
.ستأخذ قائمة تشغيل النسخ اسم قائمة تشغيل YTMusic وستقوم بإنشاء قائمة التشغيل إذا لم تكن موجودة، إذا بدأت قائمة تشغيل YTMusic بـ "+":
يجب أن تكون إعادة تشغيل "copy_playlist" أو "load_liked" في حالة فشلها آمنة، ولن تؤدي إلى تكرار الإدخالات في قائمة التشغيل.
ytmusicapi oauth
أو s2yt_ytoauth
أو python -m spotify2ytmusic ytoauth
سيعطيك هذا عنوان URL، وقم بزيارة عنوان URL هذا وتفويض التطبيق. عند الانتهاء من عملية الاستيراد، يمكنك إزالة الترخيص لهذا التطبيق.
سيؤدي هذا إلى كتابة ملف "oauth.json". احتفظ بسرية هذا الملف أثناء ترخيص التطبيق. يتضمن هذا الملف رمزًا مميزًا للجلسة التي تم تسجيل الدخول إليها.
ytmusicapi هو أحد تبعيات هذا البرنامج ويجب تثبيته كجزء من "تثبيت النقطة".
تحميل سبوتيفي النسخ الاحتياطي.
قم بتشغيل spotify-backup.py
وسيساعدك على السماح بالوصول إلى حسابك على Spotify.
تشغيل: python3 spotify-backup.py playlists.json --dump=liked,playlists --format=json
سيؤدي هذا إلى حفظ قوائم التشغيل والأغاني المفضلة لديك في الملف "playlists.json".
تشغيل: s2yt_load_liked
سيتم تصفح أغانيك المفضلة على Spotify، وسيقوم بالإعجاب بها على YTMusic. سيعرض الأغنية من Spotify ثم الأغنية التي وجدتها على YTMusic والتي أعجبتها. لقد قمت بفحص الأغاني الخاصة بي ويبدو أنها تقوم بعمل جيد في مطابقة أغاني YTMusic مع Spotify. حتى الآن، لم أشاهد فشلًا واحدًا عبر بضعة آلاف من الأغاني، لكن العناوين الأكثر غموضًا قد تكون بها مشكلات.
تشغيل: s2yt_load_liked_albums
قامت متاجر Spotify بالإعجاب بالألبومات خارج قائمة التشغيل "الأغاني التي أعجبتني". هذا هو الأمر لتحميل ألبوماتك المفضلة في أغاني YTMusic المفضلة.
قم بتشغيل s2yt_list_playlists
سيؤدي هذا إلى إدراج قوائم التشغيل الموجودة لديك على كل من Spotify وYTMusic. سوف تحتاج إلى نسخها بشكل فردي.
يمكنك إما نسخ جميع قوائم التشغيل، أو عمل نسخة جراحية أكثر لقوائم التشغيل الفردية. سيؤدي نسخ جميع قوائم التشغيل إلى استخدام اسم قائمة التشغيل Spotify كاسم قائمة التشغيل الوجهة على YTMusic. لنسخ كافة قوائم التشغيل، قم بتشغيل:
s2yt_copy_all_playlists
ملاحظة : لا يؤدي هذا إلى نسخ قائمة التشغيل التي أعجبني (انظر أعلاه للقيام بذلك).
في مخرجات القائمة أعلاه، ابحث عن "معرف قائمة التشغيل" (العمود الأول) لقائمة تشغيل Spotify، وقائمة تشغيل YTMusic، ثم قم بتشغيل:
s2yt_copy_playlist
إذا كنت بحاجة إلى إنشاء قائمة تشغيل، يمكنك تشغيل:
s2yt_create_playlist "
أو يمكن أن تأخذ قائمة تشغيل النسخ اسم قائمة تشغيل YTMusic وستقوم بإنشاء قائمة التشغيل إذا لم تكن موجودة، إذا بدأت قائمة تشغيل YTMusic بـ "+":
s2yt_copy_playlist
على سبيل المثال:
s2yt_copy_playlist SPOTIFY_PLAYLIST_ID "+Feeling Like a PUNK"
يجب أن تكون إعادة تشغيل "copy_playlist" أو "load_liked" في حالة فشلها آمنة، ولن تؤدي إلى تكرار الإدخالات في قائمة التشغيل.
هذا في الغالب لتصحيح الأخطاء، ولكن هناك أمر للبحث عن المقطوعات في YTMusic:
s2yt_search --artist
تبحث الوظيفة أولاً عن الألبومات حسب اسم الفنان المحدد على YTMusic.
ثم يقوم بالتكرار على نتائج الألبومات الثلاثة الأولى ويحاول العثور على مقطع صوتي يحمل نفس اسم المسار المحدد. إذا وجد تطابقًا، فإنه يقوم بإرجاع معلومات المسار.
إذا لم تتمكن الوظيفة من العثور على المسار في الألبومات، فإنها تبحث بعد ذلك عن الأغاني حسب اسم المسار المحدد واسم الفنان.
اعتمادًا على المعلمة yt_search_algo، فإنه ينفذ أحد الإجراءات التالية:
إذا كانت قيمة yt_search_algo تساوي 0، فستُرجع ببساطة نتيجة الأغنية الأولى.
إذا كانت قيمة yt_search_algo تساوي 1، فسيتم تكرارها على نتائج الأغنية وإرجاع الأغنية الأولى التي تطابق اسم المسار واسم الفنان واسم الألبوم تمامًا. إذا لم يتمكن من العثور على تطابق، فإنه يعرض ValueError.
إذا كانت قيمة yt_search_algo تساوي 2، فستجري مطابقة غامضة. يقوم بإزالة كل ما بين قوسين في عنوان الأغنية ويتحقق من التطابق مع اسم المسار واسم الفنان واسم الألبوم. إذا لم يتمكن من العثور على تطابق، فإنه يبحث عن مقاطع الفيديو التي تحتوي على اسم المسار واسم الفنان. إذا كان لا يزال يتعذر العثور على تطابق، فسيظهر خطأ ValueError.
إذا لم تتمكن الوظيفة من العثور على المسار باستخدام أي من الطرق المذكورة أعلاه، فإنها تظهر خطأ ValueError.
لا، هذا يعمل على Linux/Windows/MacOS.
أحصل على "لم يتم العثور على توزيع مطابق لـ Spotify2ytmusic".
تم الإبلاغ عن هذا في الإصدار رقم 39 ويبدو أنه لا يوجد تطابق بين إصدارات بايثون. يحتاج المستخدمون هناك، على نظام MacOS، إلى تثبيت إصدار محدد من Python، ثم استخدام الإصدار المطابق من PIP:
brew install [email protected]
brew install [email protected]
pip3.10 install spotify2ytmusic
كيف تعمل خوارزمية البحث؟
بالنظر إلى معلومات مسار Spotify، فإنه يقوم بالبحث عن الألبوم لنفس الفنان على YTMusic، ثم ينظر إلى أول 3 نتائج بحثًا عن مسار يحمل نفس الاسم تمامًا. وفي حالة عدم تمكنه من العثور على المسار المحدد، فإنه يقوم بعد ذلك بالبحث عن الأغاني لاسم المسار لنفس الفنان ويقوم ببساطة بإرجاع النتيجة الأولى.
الفكرة هي أن العثور على الألبوم والفنان ثم البحث عن المطابقة الدقيقة للمسار سيكون أكثر دقة من البحث عن الأغنية والفنان والاعتماد على خوارزمية YTMusic لمعرفة الأشياء، خاصة بالنسبة للمقاطع الصوتية القصيرة التي قد تكون موجودة. العديد من الأغاني المتناقضة مثل "Survival by Yes".
فشلت نسختي مع تكرار "خطأ: (إعادة المحاولة) قام الخادم بإرجاع HTTP 400: طلب غير صالح".
حاول التشغيل باستخدام الوسيطة "-track-sleep=3" لإجراء نوم لمدة 3 ثوانٍ بين المسارات. وسوف يستغرق هذا وقتًا أطول بكثير، ولكنه قد ينجح حيث فشلت المعدلات الأسرع.
المشاع الإبداعي صفر v1.0 العالمي
Spotify-backup.py مرخص بموجب ترخيص MIT. راجع https://github.com/caseychu/spotify-backup لمزيد من المعلومات.