如何使用spotify api和python获取用户的热门曲目数据?

2024-04-24 11:47:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图获得用户的前50首歌曲,以及每首歌曲的艺术家和流派。如何执行此操作并将其存储为json/csv文件?我想根据用户最常播放的歌曲来分析其音乐品味。我需要在python中实现这一点的帮助

import spotipy
from spotipy.oauth2 import *

CLIENT_ID="1415a876b86b41f6a43539db41fd****"
CLIENT_SECRET="fa1abef4174e47a9b14b8dedd4e8****"
REDIRECT_URI="http://127.0.0.1:5000/"

scopes=[
    
    "user-top-read",
]

scopes=" ".join(scopes)

class Track:
    def __init__(self,track):
        self.name=track['track']['name']
        self.image_url=track['track']['album']['images'][1]['url']
        artists=track['track']['artists']
        self.artists=", ".join(list(artists[i]['name'] for i in range(len(artists))))
        dur=track['track']['duration_ms']//1000
        self.duration=":".join([str(dur//60),"0"*(dur%60<10)+str(dur%60)])
        self.preview_url=track['track']['preview_url']
    def __str__(self):
        return f"{self.name}-{self.artists}-{self.duration}\n{self.preview_url}\n{self.image_url}"

sp = spotipy.Spotify(
    auth_manager=SpotifyOAuth(client_id=CLIENT_ID,
                              client_secret=CLIENT_SECRET,
                              redirect_uri=REDIRECT_URI,
                              scope=scopes))

results = sp.current_user_playlists()
item=results['items'][0]
image_url=item['images'][1]['url']
name=item['name']
owner=item['owner']['display_name']
tracks=sp.playlist_items(item['uri'])
final_tracks=[]
for track in tracks['items']:
    final_tracks.append(Track(track))
print(name,owner,image_url)
for track in final_tracks:
    print(track)

Tags: nameinimageselfclienturlfortrack