レオナルド著 - umactially
spotifyatlas 、SpotifyのWeb APIとの対話プロセスを簡素化するための簡単なライブラリです。検索クエリなどのSpotify機能にプログラム的にアクセスしようとしている場合でも、プレイリストの変更などのユーザータスクを自動化しようとする場合でも、SpotifyAtlasにはジョブのツールがあります。すべてがきれいでオブジェクト指向のスタイルです。
パッケージの機能のほとんどは、クライアントアプリケーションの資格情報でのみ初期化する必要があるSpotifyAPIクラスに含まれています。このコードベースはもともと不一致ボットのトラック詳細を取得するために使用されていたため、現在のほとんどの機能は、今のところ、プレイリスト、アルバム、アーティストのトップトラックなどを中心に展開しています。
pipでパッケージをインストールする方法については、インストールセクションを参照してください。
Spotify APIと対話する最初のステップは、開発者向けSpotifyページに新しいアプリケーションを登録することです。心配しないでください:このプロセスは、Spotifyユーザー(アカウント付き)で完全に無料です。
それを邪魔にして、先に進み、アプリの資格情報を使用して新しいSpotifyAPIオブジェクトを初期化します(クライアントIDおよびクライアントシークレット):
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私は自信を持ってあなたがそれを2番目の方法でしないと思います。 API要求の量の増加は、パフォーマンスに打撃を与えます。
次の方法では、 get()と同じ機能を提供しますが、特定の返品値は次のとおりです。
public Playlistsのget_playlist() 。
トラックのget_track() 。
Artistsとそのトップ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 Authorizationページでアプリケーションを承認するには、リダイレクトページが必要です。このライブラリは、必要に応じてhttp:// localhost:8000でローカルページを一時的にホストします。したがって、開発者のSpotifyのアプリケーションのダッシュボード上の許可されたリダイレクトURLにこのURLを追加する必要があります。
関数のパラメーター/引数の完全なリストは、そのドキュメントに記載されています。
SpotifyAtlasをインストールするには、端末でPIPを使用します。
Windows
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 AutomationとScriptingの優雅さを利用しています。ユーザーインターフェイスを超えてSpotifyのユーザー機能を拡張する方法を探している間にこのパッケージに出くわした場合、あなたは正しい場所にいます。
代わりに、Python Webアプリケーションで使用するAPIラッパーを探している場合は、このパッケージが正しい選択ではないかもしれません。まず第一に、図書館の機能は非同期ではありません(少なくともまだそうではありません)。おそらく、これはいくつかの簡単なタスクでも問題ありません。また、今のところ、認証フローを実装した方法は、Webアプリと互換性がありません(文字通りローカルホストページが開きます)。これは、ユーザーAUTHを必要としない関数のみで動作することを意味します。