โดย Leonardo - เป็นที่สิ้นสุด
spotifyatlas เป็นห้องสมุดที่ตรงไปตรงมาซึ่งหมายถึงการทำให้กระบวนการโต้ตอบกับ เว็บ API ของ Spotify ง่ายขึ้น ไม่ว่าคุณจะพยายามเข้าถึงคุณสมบัติ Spotify โดยทางโปรแกรมเช่น คำค้นหาการค้นหา หรืองานผู้ใช้โดยอัตโนมัติเช่น การแก้ไขเพลย์ลิสต์ของคุณ Spotifyatlas มีเครื่องมือสำหรับงาน ทั้งหมดในสไตล์ที่สะอาดและมุ่งเน้น
ฟังก์ชันการทำงานของแพ็คเกจส่วนใหญ่รวมอยู่ในคลาส SpotifyAPI ซึ่งจะต้องเริ่มต้นด้วย ข้อมูลรับรอง ของแอปพลิเคชันไคลเอนต์ของคุณเท่านั้น codebase นี้ถูกใช้เพื่อดึงรายละเอียดแทร็กสำหรับ บอท Discord ดังนั้นฟังก์ชั่นส่วนใหญ่ ณ ตอนนี้หมุนรอบเพลย์ลิสต์อัลบั้มเพลงยอดนิยมของศิลปินและอะไรก็ตาม
อ้างถึงส่วนการติดตั้งสำหรับข้อมูลเกี่ยวกับวิธีการติดตั้งแพ็คเกจด้วย pip
ขั้นตอนแรกในการโต้ตอบกับ Spotify API คือการลงทะเบียน แอปพลิเคชัน ใหม่ในหน้า Spotify for Developers ไม่ต้องกังวล: กระบวนการนี้ฟรีอย่างสมบูรณ์สำหรับผู้ใช้ Spotify (พร้อมบัญชี)
เมื่อออกนอกเส้นทางไปข้างหน้าและเริ่มต้นวัตถุ SpotifyAPI ใหม่ด้วยข้อมูลรับรองของแอพของคุณ (รหัสลูกค้าและความลับของลูกค้า):
from spotifyatlas import SpotifyAPI
spoti = SpotifyAPI ( '<my-client-id>' , '<my-client-secret>' ) หากคุณต้องการเรียก คืนแทร็กและ/หรือรายละเอียด ของสิ่งใด ๆ ใน Spotify วิธี Universal get() หลายครั้งจะได้รับความคุ้มครอง
ลองด้วยการวางลิงค์แชร์ของเพลย์ลิสต์ที่คุณชื่นชอบ มันจะส่งคืนวัตถุ Playlist แทร็กเพลย์ลิสต์อยู่ในแอตทริบิวต์แท tracks กและคุณยังสามารถเข้าถึงแทร็ก ด้วยดัชนี ดังที่แสดงด้านล่าง
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 ประกอบด้วย name artist album และ id ของเพลง และอย่างที่คุณเห็นด้านบน print(track) จะจัดรูปแบบแทร็กเป็น '<name> - <artist>' คุณสามารถแสดงรายการเนื้อหาของเพลย์ลิสต์ของคุณได้อย่างเรียบร้อย:
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
# ... คล้ายกับ Playlist และ Track คุณยังสามารถค้นหา Album Artist และโครงสร้าง User ทุกสิ่งเหล่านี้เชื่อมต่อกัน โดย คุณลักษณะ ตัวอย่างเช่น track.artist.image_url จะส่งคืน URL ภาพของศิลปินของแทร็กและจะ track.album.tracks[0].artist.image_url ฉันคิดอย่างมั่นใจว่าคุณจะไม่ทำอย่างที่สอง ปริมาณการร้องขอ API ที่เพิ่มขึ้นจะส่งผลต่อประสิทธิภาพ
วิธีการต่อไปนี้มีฟังก์ชันการทำงานเช่นเดียวกับ get() แม้ว่าจะมี ค่าส่งคืนที่เฉพาะเจาะจง :
get_playlist() สำหรับเพลย์ลิสต์สาธารณะ
get_track() สำหรับแทร็ก
get_artist() สำหรับศิลปินและ 10 อันดับแรกของพวกเขา
get_album() สำหรับอัลบั้ม
get_user() สำหรับผู้ใช้
พวกเขาทั้งหมดต้องการ url หรือ ID ขององค์ประกอบเป็นอาร์กิวเมนต์แรก
ไม่ใช่ทุกอย่างที่ต้องการให้คุณมีลิงก์ของรายการอยู่ในมือ ในการดำเนินการ ค้นหา คุณสามารถใช้วิธีการต่อไปนี้:
search() เพื่อค้นหาตามปกติโดยมีตัวเลือกเพื่อระบุประเภทผลลัพธ์ 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() หากคุณรู้ล่วงหน้าว่าคุณกำลังมองหาอะไร มันเป็นหลักเช่นเดียวกับ search() แต่ส่งคืนผลลัพธ์ด้านบนโดยตรงของประเภทที่ระบุ from spotifyatlas import ResultType
result = spoti . im_feeling_lucky ( 'quevedo biza' , ResultType . TRACK )
print ( result )
# Quevedo: Bzrp Music Sessions, Vol. 52 - Bizarrapspotifyatlas.advanced_search() สามารถสร้างคำค้นหาที่ทรงพลังยิ่งขึ้นซึ่งผู้ใช้สามารถส่งผ่านไปยังวิธีการค้นหาอย่างใดอย่างหนึ่ง (หรือแม้กระทั่งวางลงในไคลเอนต์ Spotify จริงของพวกเขา) 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 - Juanesวิธีการอื่น ๆ เหล่านี้ต้องการ ความยินยอมจากผู้ใช้ และจะส่งผลให้ เบราว์เซอร์ เปิดสำหรับการอนุญาตแอปพลิเคชันของคุณเพื่อดำเนินการในนามของผู้ใช้:
get_me() สำหรับรายละเอียดของโปรไฟล์ของคุณเอง
get_private_playlist() สำหรับเพลย์ลิสต์ส่วนตัวที่คุณเป็นเจ้าของ
create_playlist() เพื่อสร้างเพลย์ลิสต์ที่ว่างเปล่าใหม่ในห้องสมุดของคุณ
add_to_playlist() เพื่อเพิ่มชุดของ Track s ลงในเพลย์ลิสต์
duplicate_playlist() เพื่อทำซ้ำเพลย์ลิสต์ในห้องสมุดของคุณ
clear_playlist() เพื่อลบเนื้อหาทั้งหมดของเพลย์ลิสต์
rearrange_playlist() เพื่อเปลี่ยนตำแหน่งของช่วงของแทร็ก
ห้าฟังก์ชั่นสุดท้ายยังมีอยู่เป็น วิธีการ ของคลาส Playlist สิ่งนี้ช่วยให้ทางลัดที่มีประโยชน์บางอย่างเช่นที่เห็นในตัวอย่างเพิ่มเติม
หมายเหตุ: การอนุญาตแอปพลิเคชันในหน้าการอนุญาต Spotify ต้องใช้หน้า การเปลี่ยนเส้นทาง เพื่อไป ห้องสมุดนี้จะ โฮสต์หน้าท้องถิ่น ชั่วคราวบน http: // localhost: 8000 เมื่อใดก็ตามที่ต้องการ ดังนั้นคุณ จะต้องเพิ่ม URL นี้ ลงใน URL การเปลี่ยนเส้นทางที่อนุญาตบนแผงควบคุมของแอปพลิเคชันของคุณในเว็บไซต์ Spotify สำหรับผู้พัฒนา
รายการที่สมบูรณ์ของพารามิเตอร์/อาร์กิวเมนต์ของฟังก์ชั่นสามารถพบได้ในเอกสารประกอบ
ในการติดตั้ง Spotifyatlas ให้ใช้ PIP ในเทอร์มินัล:
หน้าต่าง
pip install spotifyatlas
MacOS / Linux
python3 -m pip install spotifyatlas
สำหรับผู้ใช้ที่อยากรู้อยากเห็นนี่คือตัวอย่างรหัสเพิ่มเติมที่ด้านบนของหัวของฉัน:
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 )) ฉันได้สร้าง spotifyatlas เพื่อกระตุ้นให้คนรักดนตรีและโปรแกรมเมอร์เหมือนกันเพื่อวาดความสง่างามของการทำงานอัตโนมัติของ Python และ การเขียนสคริปต์ หากคุณสะดุดกับแพ็คเกจนี้ในขณะที่มองหาวิธีที่จะ ขยายขีดความสามารถของผู้ใช้ ใน Spotify Beyond Interface ผู้ใช้คุณก็อยู่ในตำแหน่งที่เหมาะสม
หากคุณกำลังมองหา wrapper API สำหรับใช้ใน แอปพลิเคชันเว็บ Python บางทีแพ็คเกจนี้อาจไม่ใช่ตัวเลือกที่ถูกต้อง สำหรับผู้เริ่มต้นฟังก์ชั่นของห้องสมุด ไม่ได้เป็นแบบอะซิงโครนัส (อย่างน้อยก็) บางทีนี่อาจจะโอเคสำหรับงานง่ายๆสองสามอย่าง และ ณ ตอนนี้วิธีที่ฉันใช้การอนุญาตการอนุญาตไม่เข้ากันกับเว็บแอป (มันเปิดหน้า localhost) ซึ่งหมายความว่ามันจะทำงานกับฟังก์ชั่นที่ไม่ต้องการการรับรองความถูกต้องของผู้ใช้เท่านั้น