레오나르도 - umactally
spotifyatlas Spotify의 웹 API 와 상호 작용하는 프로세스를 단순화하기위한 간단한 라이브러리입니다. SpotifyAtlas에는 검색 쿼리 와 같은 Spotify 기능을 프로그래밍 적으로 액세스하거나 재생 목록 수정 과 같은 사용자 작업을 자동화하려고하든 SpotifyAtlas에는 작업을위한 도구가 있습니다. 깨끗하고 객체 지향적 인 스타일로.
패키지 기능의 대부분은 SpotifyAPI 클래스에 포함되어 있으며 클라이언트 응용 프로그램의 자격 증명 으로 만 초기화해야합니다. 이 코드베이스는 원래 불화 봇 의 트랙 세부 사항을 검색하는 데 사용되었으므로 현재 대부분의 기능은 재생 목록, 앨범, 아티스트의 최고 트랙 및 What Nont를 중심으로 진행되었습니다.
pip 로 패키지를 설치하는 방법에 대한 정보는 설치 섹션을 참조하십시오.
Spotify API와 상호 작용하는 첫 번째 단계는 Spotify for Developers 페이지에 새 응용 프로그램을 등록하는 것입니다. 걱정하지 마십시오 :이 프로세스는 모든 Spotify 사용자 (계정)에게 완전히 무료입니다.
이를 통해 앱 (클라이언트 ID 및 클라이언트 비밀)의 자격 증명으로 새로운 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.album.tracks[0].artist.image_url , track.artist.image_url 나는 당신이 두 번째 방식으로하지 않을 것이라고 자신있게 생각합니다. API 요청의 증가는 성능에 영향을 미칩니다.
다음 방법은 특정 반환 값이 있지만 get() 와 동일한 기능을 제공합니다.
공개 재생 목록의 get_playlist() .
트랙의 get_track() .
아티스트와 상위 10 개 트랙을위한 get_artist() .
앨범의 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()
마지막 5 가지 기능은 Playlist 클래스의 메소드 로도 사용할 수 있습니다. 이를 통해 더 많은 예에서 볼 수있는 것과 같은 편리한 바로 가기가 가능합니다.
참고 : Spotify 인증 페이지에서 응용 프로그램을 승인하려면 리디렉션 페이지가 필요합니다. 이 라이브러리는 필요할 때마다 http : // localhost : 8000의 로컬 페이지를 일시적으로 호스팅합니다 . 따라서이 URL을 개발자 사이트 Spotify 의 응용 프로그램 대시 보드에 허용 리디렉션 URL에 추가해야합니다 .
함수의 전체 매개 변수/인수 목록은 해당 문서에서 찾을 수 있습니다.
SpotifyAtlas를 설치하려면 터미널에서 PIP를 사용하십시오.
창
pip install spotifyatlas
마코스 / 리눅스
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 만들어 음악 애호가와 프로그래머 모두를 격려하고 파이썬 자동화 및 스크립팅 의 우아함을 이끌어 냈습니다. 사용자 인터페이스를 넘어 Spotify에서 사용자 기능을 확장하는 방법을 찾는 동안이 패키지를 우연히 발견하면 올바른 위치에 있습니다.
대신 Python 웹 응용 프로그램 에서 사용할 API 래퍼를 찾고 있다면이 패키지가 올바른 선택이 아닐 수도 있습니다. 우선 라이브러리의 기능은 비동기식이 아닙니다 (적어도 아직). 아마도 이것은 몇 가지 간단한 작업에 대해 괜찮을 것입니다. 또한 현재로서 제가 인증 흐름을 구현하는 방식은 웹 앱과 호환되지 않습니다 (문자 그대로 로컬 호스트 페이지를 엽니 다). 즉, 사용자 인증이 필요하지 않은 함수만으로 작동한다는 것을 의미합니다.