欢迎访问宙启技术站
智能推送

利用Python和Spotipy库实现Spotify音乐的喜爱度排名分析

发布时间:2023-12-23 05:17:22

要使用Python和Spotipy库实现Spotify音乐的喜爱度排名分析,首先需要安装Spotipy库。Spotipy是一个用于与Spotify Web API进行交互的Python库。

下面是一个使用Spotipy库实现Spotify音乐喜爱度排名分析的例子:

import spotipy
from spotipy.oauth2 import SpotifyClientCredentials

# 设置客户端凭据
client_credentials_manager = SpotifyClientCredentials(client_id='YOUR_CLIENT_ID',
                                                      client_secret='YOUR_CLIENT_SECRET')
sp = spotipy.Spotify(client_credentials_manager=client_credentials_manager)

# 获取歌曲的喜爱度排名
def get_popularity(artist_name, track_name):
    results = sp.search(q='artist:' + artist_name + ' track:' + track_name, type='track')
    if len(results["tracks"]["items"]) > 0:
        track_id = results["tracks"]["items"][0]["id"]
        track_info = sp.track(track_id)
        popularity = track_info["popularity"]
        return popularity
    else:
        return None

# 获取热门歌曲的喜爱度排名
def get_top_tracks_popularity(artist_name):
    results = sp.search(q='artist:' + artist_name, type='artist')
    if len(results["artists"]["items"]) > 0:
        artist_id = results["artists"]["items"][0]["id"]
        top_tracks_info = sp.artist_top_tracks(artist_id)
        top_tracks_popularity = {}
        for track_info in top_tracks_info["tracks"]:
            track_name = track_info["name"]
            popularity = track_info["popularity"]
            top_tracks_popularity[track_name] = popularity
        return top_tracks_popularity
    else:
        return None

# 示例使用
if __name__ == "__main__":
    artist_name = "Taylor Swift"
    track_name = "Bad Blood"
    
    popularity = get_popularity(artist_name, track_name)
    if popularity is not None:
        print("歌曲'{0} - {1}'的喜爱度排名为:{2}".format(artist_name, track_name, popularity))
    else:
        print("找不到该歌曲")
    
    top_tracks_popularity = get_top_tracks_popularity(artist_name)
    if top_tracks_popularity is not None:
        print("艺术家'{0}'的热门歌曲喜爱度排名:".format(artist_name))
        for track_name, popularity in top_tracks_popularity.items():
            print("{0} - {1}: {2}".format(artist_name, track_name, popularity))
    else:
        print("找不到该艺术家")

在上述代码中,首先设置了 Spotipy 的客户端凭据并创建了一个 Spotify 对象。然后实现了两个函数:get_popularity(artist_name, track_name)get_top_tracks_popularity(artist_name)。前者用于获取指定歌曲的喜爱度排名,后者用于获取指定艺术家的热门歌曲喜爱度排名。

在示例使用部分,以 Taylor Swift 的歌曲 "Bad Blood" 为例,首先调用 get_popularity() 函数获取该歌曲的喜爱度排名,接着调用 get_top_tracks_popularity() 函数获取 Taylor Swift 的热门歌曲喜爱度排名。最后将结果打印输出。

此示例仅为演示如何使用 Spotipy 库分析 Spotify 音乐的喜爱度排名,实际使用可根据实际需求进行扩展和优化。