Oleh Leonardo - Umaktual
spotifyatlas adalah perpustakaan langsung yang dimaksudkan untuk menyederhanakan proses berinteraksi dengan API Web Spotify . Apakah Anda mencoba mengakses fitur Spotify secara terprogram seperti kueri pencarian , atau mengotomatiskan tugas pengguna seperti memodifikasi daftar putar Anda , SpotifyAtlas memiliki alat untuk pekerjaan itu. Semua dengan gaya yang bersih dan berorientasi objek.
Sebagian besar fungsi paket dimasukkan dalam kelas SpotifyAPI , yang hanya perlu diinisialisasi dengan kredensial aplikasi klien Anda. Basis kode ini pada awalnya digunakan untuk mengambil detail trek untuk discord bot , sehingga sebagian besar fungsi, sampai sekarang, berputar di sekitar daftar putar, album, trek teratas artis, dan yang lainnya.
Lihat bagian Instalasi untuk informasi tentang cara menginstal paket dengan pip .
Langkah pertama untuk berinteraksi dengan API Spotify adalah mendaftarkan aplikasi baru di halaman Spotify for Developers . Jangan khawatir: proses ini sepenuhnya gratis untuk setiap pengguna Spotify (dengan akun).
Dengan itu, silakan dan inisialisasi objek SpotifyAPI baru dengan kredensial aplikasi Anda (ID klien dan rahasia klien):
from spotifyatlas import SpotifyAPI
spoti = SpotifyAPI ( '<my-client-id>' , '<my-client-secret>' ) Jika Anda ingin mengambil trek dan/atau detail apa pun di Spotify, metode universal get() berkali -kali akan membuat Anda tertutup.
Cobalah dengan menempelkan tautan berbagi daftar putar favorit Anda. Ini akan mengembalikan objek Playlist . Trek daftar putar terletak di atribut tracks , dan Anda juga dapat mengakses trek berdasarkan indeks , seperti yang ditunjukkan di bawah ini.
from spotifyatlas import SpotifyAPI
spoti = SpotifyAPI ( '<my-client-id>' , '<my-client-secret>' )
playlist = spoti . get ( 'https://open.spotify.com/playlist/6xTnvRqIKptVfgcT8gN4Bb' )
print ( playlist . tracks )
# [<Track name='Goliath' artist='The Mars Volta' id='3bi3Ycf0ZlRHvSg0IxlMwM'>, ... ]
first_track = playlist [ 0 ] # the same as playlist.tracks[0]
print ( first_track )
# Goliath - The Mars Volta Track berisi name , artist , album , dan id lagu. Dan, seperti yang Anda lihat di atas, print(track) akan memformat trek sebagai '<name> - <artist>' . Anda dapat mendaftar dengan rapi isi daftar putar Anda seperti ini:
for i , track in enumerate ( playlist , 1 ):
print ( i , '-' , track )
# 1 - Goliath - The Mars Volta
# 2 - Juicy - 2005 Remaster - The Notorious B.I.G.
# 3 - O Peso da Cruz - Supercombo
# 4 - Count The People (feat. Jessie Reyez & T-Pain) - Jacob Collier
# 5 - Touch - Shura
# ... Mirip dengan Playlist dan Track , Anda juga dapat menemukan Album , Artist , dan struktur User . Setiap orang terhubung satu sama lain dengan atribut . Misalnya, track.artist.image_url akan mengembalikan URL gambar artis trek, dan begitu juga track.album.tracks[0].artist.image_url . Saya yakin menganggap Anda tidak akan melakukannya dengan cara kedua. Peningkatan jumlah permintaan API akan berdampak pada kinerja.
Metode berikut menawarkan fungsionalitas yang sama dengan get() , meskipun dengan nilai pengembalian spesifik :
get_playlist() untuk daftar putar publik.
get_track() untuk trek.
get_artist() untuk artis dan 10 trek teratas mereka.
get_album() untuk album.
get_user() untuk pengguna.
Mereka semua membutuhkan url atau ID elemen sebagai argumen pertama.
Tidak semuanya menuntut Anda memiliki tautan item yang ada. Untuk melakukan pencarian , Anda dapat menggunakan metode berikut:
search() untuk mencari secara normal, dengan opsi untuk menentukan jenis hasil. result = spoti . search ( 'susanne sundfor' )
top_artist_result = result . artists [ 0 ]
print ( top_artist_result . name )
# Susanne Sundfør
result = spoti . search ( 'ok human' )
top_album_result = result . albums [ 0 ]
print ( top_album_result . tracks )
# [<Track name='All My Favorite Songs' artist='Weezer' id='6zVhXpiYbJhLJWmLGV9k1r'>, ... ]im_feeling_lucky() Jika Anda tahu sebelumnya apa yang Anda cari. Ini pada dasarnya sama dengan search() tetapi mengembalikan secara langsung hasil teratas dari jenis yang ditentukan. from spotifyatlas import ResultType
result = spoti . im_feeling_lucky ( 'quevedo biza' , ResultType . TRACK )
print ( result )
# Quevedo: Bzrp Music Sessions, Vol. 52 - Bizarrapspotifyatlas.advanced_search() dapat menghasilkan permintaan pencarian yang lebih kuat yang kemudian dapat diteruskan oleh pengguna ke salah satu metode pencarian (atau bahkan menempelkan klien Spotify mereka yang sebenarnya). from spotifyatlas import ResultType , Genre , advanced_search
overkill_query = advanced_search (
'juanes' ,
album = 'metallica' ,
year = 2021 ,
genre = Genre . ROCK
)
result = spoti . im_feeling_lucky ( overkill_query , ResultType . TRACK )
print ( result )
# Enter Sandman - JuanesMetode -metode lain ini memerlukan persetujuan pengguna , dan dengan demikian akan menghasilkan pembukaan browser untuk otorisasi aplikasi Anda untuk bertindak atas nama pengguna:
get_me() untuk detail profil Anda sendiri.
get_private_playlist() untuk daftar putar pribadi yang Anda miliki.
create_playlist() untuk membuat daftar putar kosong baru di perpustakaan Anda.
add_to_playlist() untuk menambahkan batch Track S ke daftar putar.
duplicate_playlist() untuk menduplikasi daftar putar di perpustakaan Anda.
clear_playlist() Untuk menghapus semua isi daftar putar.
rearrange_playlist() untuk mengubah posisi berbagai trek.
Lima fungsi terakhir juga tersedia sebagai metode kelas Playlist . Ini memungkinkan beberapa pintasan praktis seperti yang terlihat dalam lebih banyak contoh.
Catatan: Mengesahkan aplikasi di halaman otorisasi Spotify memerlukan halaman pengalihan untuk dikunjungi. Perpustakaan ini untuk sementara waktu akan meng -host halaman lokal di http: // localhost: 8000 kapan pun diperlukan. Dengan demikian, Anda perlu menambahkan URL ini ke URL pengalihan yang diizinkan di dasbor aplikasi Anda di situs Spotify for Developer .
Daftar lengkap parameter/argumen fungsi dapat ditemukan dalam dokumentasinya.
Untuk menginstal Spotifyatlas, gunakan PIP di terminal:
Windows
pip install spotifyatlas
MacOS / Linux
python3 -m pip install spotifyatlas
Untuk pengguna yang ingin tahu, berikut adalah beberapa contoh kode lagi di bagian atas kepala saya:
from spotifyatlas import SpotifyAPI
def artist_sort_key ( track ):
return track . artist . name . lower ()
# If you want to hierarchically sort by artist, AND album,
# AND track, use this:
# return (
# track.artist.name.lower(),
# track.album.name.lower(),
# track.name.lower())
MY_PLAYLIST = '<my-playlist-link>'
spoti = SpotifyAPI ( '<my-client-id>' , '<my-client-secret>' )
playlist = spoti . get_playlist ( MY_PLAYLIST )
tracks = playlist . tracks
tracks . sort ( key = artist_sort_key )
# make_copy makes a backup of the playlist in your library
# before removing its contents.
playlist . clear ( make_copy = True )
playlist . add ( tracks ) from spotifyatlas import SpotifyAPI
MY_PLAYLIST = '<my-playlist-link>'
MY_FRIENDS_PLAYLIST = '<my-friends-playlist-link>'
spoti = SpotifyAPI ( '<my-client-id>' , '<my-client-secret>' )
playlist1 = spoti . get ( MY_PLAYLIST )
playlist2 = spoti . get ( MY_FRIENDS_PLAYLIST )
# Set theory!!!
common_tracks = set ( playlist1 ). intersection ( set ( playlist2 ))
for i , track in enumerate ( common_tracks , 1 ):
print ( i , '-' , track )
blend = spoti . create_playlist (
name = f' { playlist1 . owner . name } + { playlist2 . owner . name } ' ,
description = 'I am a blend, I swear' )
blend . add ( list ( common_tracks )) Saya telah menciptakan spotifyatlas untuk mendorong pecinta musik dan pemrogram, untuk memanfaatkan keanggunan otomatisasi dan skrip Python. Jika Anda menemukan paket ini sambil mencari cara untuk memperluas kemampuan pengguna di Spotify di luar antarmuka pengguna, maka Anda berada di tempat yang tepat.
Jika sebaliknya Anda mencari pembungkus API untuk digunakan dalam aplikasi web Python, mungkin paket ini bukan pilihan yang tepat. Sebagai permulaan, fungsionalitas perpustakaan tidak sinkron (setidaknya belum, setidaknya). Mungkin ini tidak masalah untuk beberapa tugas sederhana. Dan juga, sampai sekarang, cara saya menerapkan aliran otorisasi tidak kompatibel dengan aplikasi web (secara harfiah membuka halaman localhost). Ini berarti itu hanya akan bekerja dengan fungsi yang tidak memerlukan auth pengguna.