Spothiefy: كيفية الانتقال من Yandex.Music بسرعة مجانًا

لذلك ، في يوليو ، بدأت الحياة في البلاد تتغير أخيرًا نحو الأفضل ، لأن شيئًا ما كان يتطلع إليه الكثير من الناس: تم إطلاق Spotify في روسيا والعديد من البلدان الأخرى.



لكن دفق الموسيقى لم يظهر بالأمس ، وبالتأكيد هناك من هم مدمنون على Yandex ويستخدمون الاشتراك في Yandex.Music ، والذي أصبح فيما بعد Yandex.Plus.



أصبح من المريح الاستماع إلى الأغاني ، وتعلم المحددون اختيار المقاطع الصوتية الجيدة ، مما أدى إلى تراكم مكتبة بها قوائم تشغيل وأشياء أخرى ملائمة تحتاج إلى إضافتها من جديد في الخدمة الجديدة.



إذا كنت تريد المحاولة ، ولكنك كسول جدًا ، فسأخبرك بكيفية نقل متعلقاتك بسرعة مجانًا. أنت فقط بحاجة إلى عدد قليل من الثعابين مع البطاريات.



غطاء بيتر وسبوتيفاي



انتباه!
, .



, . , . .

.



Spotify , . , . , - .



— , . - ., - Spotify. , - , 144 / Ogg Vorbis.



, .



/ .



بمساعدة أجهزة بسيطة ، تمكنت في غضون يومين من إنشاء مستورد للمقاطع الصوتية في Spotify وعدم إنفاق الأموال على soundiiz ، مما أدى إلى زيادة الحمل فجأة لسبب ما.



لكن هناك فروق دقيقة.



API



يوفر Spotify نوعًا من الوثائق لخدمة Web API الخاصة به ، بما في ذلك واجهة برمجة التطبيقات لإضافة كل من قوائم التشغيل والمفضلة إلى مكتبته.



في المقابل ، لا تمتلك Yandex.Music واجهة برمجة تطبيقات عامة ، ولكن ربما تحفزهم المنافسة على توفير الوصول إلى مطوري الطرف الثالث ، لأنها ضرورية وملائمة ومفيدة.

لذلك ، سنذهب هنا قليلاً على طول مسار منحني ، ونستخدم الحيل ذات السمعة المشكوك فيها.



وماذا عن Deezer؟
Deezer, , API . Python, .





سبوتيفي



كل شيء بسيط هنا. لتصبح مطورًا ، تحتاج إلى الحصول على مفتاح التطبيق في وحدة التحكم . سيعرضون

إضافة Redirect URIلـ OAuth ، والذي يمكن لأي شخص تثبيته. هو مطلوب فقط للخدمات التي تخدم الكثير من الناس في وقت واحد ، ولكن في حالتنا يحدث كل شيء محليًا.



ياندكس الموسيقى



تحتاج إلى اسم مستخدم وكلمة مرور لحسابك ، ولكن إذا تم تمكين المصادقة الثنائية ، فأنت بحاجة إلى تحديد Yandex.Password من Yandex.Key.



عملية التطبيق



لا أريد أن أركز على تشغيل تطبيقات Python ، ونشر بيئة افتراضية ، وما إلى ذلك ، لذا سأصف كيفية عمل الاستيراد. الرابط إلى المستودع برمز البرنامج موجود في نهاية المقالة .



تأتي المسارات من واجهات برمجة التطبيقات لجميع الأنظمة الأساسية بتنسيق مختلف ، لذا يتم تحويلها إلى نفس العرض التقديمي مع الحد الأدنى المطلوب من مجموعة الخصائص:



class Track:
    title = property(lambda self: self.__title)
    album = property(lambda self: self.__albums[0] if len(self.__albums) > 0 else None)
    artist = property(lambda self: self.__artists[0] if len(self.__artists) > 0 else None)

    albums = property(lambda self: self.__albums)
    artists = property(lambda self: self.__artists)


تحتوي قوائم التشغيل (بما في ذلك المفضلة) أيضًا على نفس التنسيق ، وتتضمن أداة تكرار المسار لسهولة الاستخدام في الحلقات:



class Playlist:
    class __iterator:
        def __init__(self, playlist):
            pass  #   
        def __next__(self):
            pass  #   

    title = property(lambda self: self.__title)
    tracks = property(lambda self: self.__tracks)
    is_public = property(lambda self: self.__is_public)

    def __len__(self):
        return len(self.__tracks)

    def __iter__(self):
        return Playlist.__iterator(self)

    def __getitem__(self, index):
        return self.__tracks[index]


الفصل مسؤول عن التفاعل مع الخدمات MusicProvider:



class MusicProvider:
    favorites = property(lambda self: self.__favorites)
    playlists = property(lambda self: self.__playlists)


YandexMusic (MusicProvider)عند التهيئة ، يقوم الفصل بتحميل معلومات عن جميع قوائم التشغيل وجميع المسارات الموجودة في قائمة التشغيل "أعجبتني".



Spotify (MusicProvider)لا ، ولكنه يحتوي على طرق للاستيراد:



class Spotify(MusicProvider):
    def import_playlist(self, playlist):
        pass  #   

    def import_favorites(self, playlist):
        pass  #   


في الداخل ، يبحث عن المسارات في قاعدة بيانات Spotify باستخدام بيانات الأغاني التي تم الحصول عليها من Yandex.Music.



بعد العثور على جميع المقطوعات الموسيقية في قائمة التشغيل ، يتم إنشاؤها (إذا لم تكن "الأغاني التي تم الإعجاب بها") بنفس الاسم وتتم إضافة جميع الألحان التي تم العثور عليها إليها.



تتطلب قوائم التشغيل والمسارات المحفوظة أذونات مختلفة:



  • قائمة التشغيل -تعديل-خاص - لإنشاء / تعديل قوائم التشغيل
  • تعديل مكتبة المستخدم - لإضافة مسارات صوتية إلى المفضلة


هناك مشكلة: طول سلسلة الاستعلام محدود ، لذلك عندما يكون هناك عدد كبير من الأغاني في قائمة التشغيل ، يفشل الاستعلام دون حتى البدء. لتجنب هذا الموقف ، يتم تقطيع قائمة المسارات إلى قطع من 50 قطعة ويتم الإضافة بعدة طلبات. تدعم



طريقة searchSpotify API الكلمات الرئيسية للبحث عن ألبومات / فنانين / عناوين ، والتي سنستخدمها بلا خجل.



ابحث في Spotify



يحتوي Spotify على قاعدة بيانات كبيرة للمسار ، ولكن ليست كل الموسيقى موجودة. يمكنك بسهولة تخمين أن الكثير من الموسيقى المفقودة من Spotify تتقاطع مع الكثير من قاعدة بيانات أغاني Yandex.Music. قد تكون بعض المقطوعات الموسيقية عبارة عن أغلفة / ريمكسات وانحرافات أخرى ، وقد يكون بعضها غير صحيح: الألبوم الخطأ ، أو ترتيب الموسيقيين مختلف.



تتم إضافة مشكلة أخرى من خلال طريقة مختلفة لتجميع المعلومات حول المسارات: يمكن أن يكون لـ Spotify ألبوم واحد فقط ، ويرسل Yandex.Music مجموعة من الألبومات. قد يكون هناك بالفعل العديد من فناني الأداء هناك وهناك.



يقدم Deezer ألبومًا واحدًا وفنانًا واحدًا ، لكن هذه قصة أخرى.



لذلك ، يتم استخدام النهج التالي لأكل السمك والجلوس على الكرسي :



  • بالنسبة لجميع الألبومات ، يتم البحث عن الكلمات الرئيسية ذات المطابقة التامة track:، artist:، album:.

    في كثير من الأحيان ، هذا يكفي.
  • إذا لم يتم العثور على المسار (أو لم يتم تحديد الألبوم في Yandex.Music) ، يتم إجراء محاولة للبحث بدون ألبوم.
  • إذا لم يتم العثور على أي مسار ، فإنه يبحث مع الفنان التالي.


يتم عرض الألحان غير الموجودة وظروف البحث عن المسار الصوتي غير القياسي في السجل. يمكنك معرفة ما تمت إضافته بالضبط ومعالجته يدويًا إذا لزم الأمر.



ملحوظة



يعد هذا المشروع ضروريًا إلى حد كبير لمهمة لمرة واحدة ، وقد تم تطويره في وقت الفراغ ، وليس للاستخدام في التطبيقات الصناعية ، لذلك قد يبدو الرمز مثيرًا للاشمئزاز بالنسبة للمتخصص المخضرم.



ومع ذلك ، أثناء تطوير الممارسة ، حاول PEP8 إلى حد ما اتباعه ، والحجم الكلي للبرنامج صغير جدًا.



رموز المصدر للبرنامج



إصدار Python الحالي وقت كتابة هذا التقرير: 3.8.4



المواد المستخدمة:



  • رسم إيضاحي لبيتر بيغ: كتاب "بيتر الخنزير والآلة" ، بيتروشيفسكايا لودميلا
  • شعار Yandex.Music: YANDEX LLC
  • شعار Spotify: Spotify AB



All Articles