Spothiefy: cara beralih dari Yandex.Music dengan cepat, gratis

Maka, pada bulan Juli, kehidupan di negara itu akhirnya mulai berubah menjadi lebih baik, karena terjadi sesuatu yang dinantikan banyak orang: Spotify diluncurkan di Rusia dan beberapa negara lain.



Namun streaming musik tidak muncul kemarin, dan yang pasti ada yang kecanduan Yandex dan menggunakan langganan Yandex.Music, yang kemudian menjadi Yandex.Plus.



Mendengarkan lagu menjadi nyaman, para penyeleksi belajar memilih trek yang bagus, dan ini mengarah pada akumulasi perpustakaan dengan daftar putar dan hal-hal nyaman lainnya yang perlu ditambahkan lagi dalam layanan baru.



Jika Anda ingin mencoba, tetapi Anda terlalu malas, maka saya akan memberi tahu Anda cara memindahkan barang-barang Anda dengan cepat, gratis. Anda hanya perlu beberapa ular sanca dengan baterai.



Peter dan sampul Spotifai



Perhatian!
, .



, . , . .

.



Spotify , . , . , - .



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



, .



/ .



Dengan bantuan perangkat sederhana, dalam beberapa hari saya berhasil membuat importir trek di Spotify dan tidak mengeluarkan uang untuk soundiiz, yang karena alasan tertentu tiba-tiba meningkatkan beban.



Tapi ada nuansa.



API



Spotify menyediakan beberapa jenis dokumentasi untuk layanan API Web-nya, termasuk API untuk menambahkan daftar putar dan favorit ke perpustakaannya.



Pada gilirannya, Yandex.Music tidak memiliki API publik , tetapi mungkin persaingan akan memacu mereka untuk menyediakan akses ke pengembang pihak ketiga, karena itu perlu, nyaman, dan berguna.

Oleh karena itu, di sini kita akan sedikit menyusuri jalan yang melengkung, dan menggunakan trik dengan reputasi yang meragukan.



Dan bagaimana dengan Deezer?
Deezer, , API . Python, .





Spotify



Semuanya sederhana di sini. Untuk menjadi pengembang, Anda perlu mendapatkan kunci aplikasi di konsol .

Mereka akan menawarkan untuk menambahkan Redirect URIOAuth, yang dapat dipasang oleh siapa saja, sejak hanya diperlukan untuk layanan yang melayani banyak orang sekaligus, tetapi dalam kasus kami semuanya terjadi secara lokal.



Yandex.Music



Anda memerlukan login dan kata sandi untuk akun Anda, tetapi jika otentikasi dua faktor diaktifkan, Anda perlu menentukan Yandex.Password dari Yandex.Key.



Operasi aplikasi



Saya tidak ingin berhenti menjalankan aplikasi Python, menerapkan lingkungan virtual, dll., Jadi saya akan menjelaskan cara kerja impor. Tautkan ke repositori dengan kode program di akhir artikel .



Trek dari API dari semua platform datang dalam format yang berbeda, sehingga mereka dikonversi ke presentasi yang sama dengan sekumpulan properti minimum yang diperlukan:



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)


Daftar putar (termasuk favorit) juga memiliki format yang sama, dan menyertakan iterator trek agar mudah digunakan dalam loop:



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]


Kelas bertanggung jawab untuk berinteraksi dengan layanan MusicProvider:



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


YandexMusic (MusicProvider)Saat inisialisasi, kelas memuat informasi tentang semua playlist dan semua trek di playlist "Saya suka".



Spotify (MusicProvider)tidak, tetapi berisi metode untuk mengimpor:



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

    def import_favorites(self, playlist):
        pass  #   


Di dalamnya, ia mencari trek di database Spotify menggunakan data lagu yang diperoleh dari Yandex.Music.



Setelah semua trek dalam daftar putar ditemukan, lagu akan dibuat (jika bukan "Lagu yang Disukai") dengan nama yang sama dan semua melodi yang ditemukan ditambahkan ke dalamnya.



Daftar putar dan trek yang disimpan memerlukan izin yang berbeda:



  • playlist-ubah-privat - untuk membuat / memodifikasi playlist
  • pustaka-pengguna-modifikasi - untuk menambahkan trek audio ke favorit


Ada masalah: panjang string kueri terbatas, jadi bila ada banyak lagu dalam daftar putar, kueri gagal bahkan tanpa memulai. Untuk menghindari situasi ini, daftar trek dipotong menjadi 50 bagian dan penambahan dilakukan dengan beberapa permintaan.



Metode searchSpotify API mendukung kata kunci untuk pencarian berdasarkan album / artis / judul, yang akan kami gunakan tanpa malu-malu.



Cari Spotify



Spotify memiliki database trek yang besar, tetapi tidak semua musik ada di sana. Anda dapat dengan mudah menebak bahwa banyak musik yang hilang dari Spotify bersinggungan dengan banyak database lagu Yandex.Music. Beberapa trek musik mungkin berupa cover / remix dan penyimpangan lainnya, dan beberapa mungkin dimasukkan secara tidak benar: album yang salah, atau urutan musisi berbeda.



Masalah lain ditambahkan oleh pendekatan berbeda untuk mengumpulkan informasi tentang trek: Spotify hanya dapat memiliki satu album, dan Yandex.Music mengirimkan berbagai album. Mungkin sudah ada beberapa artis di sana dan di sana.



Deezer menyediakan satu album dan satu artis, tapi itu cerita lain.



Oleh karena itu, pendekatan berikut digunakan untuk memakan ikan dan duduk di kursi :



  • Untuk semua album yang dicari untuk kata kunci pencocokan tepat track:, artist:, album:.

    Lebih sering daripada tidak, ini sudah cukup.
  • Jika trek tidak ditemukan (atau album tidak ditentukan di Yandex.Music), upaya dilakukan untuk mencari tanpa album.
  • Jika tidak ada trek yang ditemukan, pencarian dengan artis berikutnya.


Tidak ditemukan melodi dan kondisi pencarian trek audio non-standar ditampilkan dalam log. Anda dapat melihat apa saja yang telah ditambahkan dan, jika perlu, memprosesnya secara manual.



Catatan



Proyek ini pada umumnya diperlukan untuk tugas satu kali, itu dikembangkan di waktu luang, bukan untuk digunakan dalam aplikasi industri, jadi untuk spesialis berpengalaman kode tersebut mungkin tampak menjijikkan.



Namun, saat mengembangkan praktik, PEP8 kurang lebih telah dicoba untuk diikuti, dan ukuran program secara keseluruhan agak kecil.



Kode sumber program



Versi Python saat ini pada saat penulisan: 3.8.4



Bahan bekas:



  • Ilustrasi oleh Peter Pig: Buku "Peter the Pig and the Machine", Petrushevskaya Ludmila
  • Logo Yandex.Music: YANDEX LLC
  • Logo Spotify: Spotify AB



All Articles