Spotipy 流行度值与从 Spotify API 检索到的值不同

问题描述 投票:0回答:1

我试图获取播放列表中 Spotify 曲目的数据,当我使用脚本运行播放列表时,我注意到某些值看起来很奇怪 - 例如,我浏览过的其中一首歌曲“有人告诉我” The Killers 的《Me》,流行度得分为 0。当我在 Spotify 开发者控制台上交叉检查时,它说流行度得分为 75。我还在其他一些低分曲目上尝试过这一点,它们的流行度值也是不正确的.

我检查了其他一些“正常外观”的值,它们是正确的,所以看起来这只发生在某些轨道上。

任何帮助/解释将不胜感激!

编辑:这是有问题的脚本

import spotipy
from spotipy.oauth2 import SpotifyClientCredentials

# Set up API credentials
client_id = 'CLIENT-ID-HERE'
client_secret = 'CLIENT-SECRET-HERE'
client_credentials_manager = SpotifyClientCredentials(client_id=client_id, client_secret=client_secret)
sp = spotipy.Spotify(client_credentials_manager=client_credentials_manager)

# Define playlist ID
playlist_id = 'PLAYLIST-ID-HERE'

# Get tracks in the playlist
results = sp.playlist_tracks(playlist_id)
tracks = results['items']
while results['next']:
    results = sp.next(results)
    tracks.extend(results['items'])

counter = 0

for track in tracks:
    # Get track details
    track_info = sp.track(track['track']['id'])
    track_name = track_info['name']
    track_artists = [artist['name'] for artist in track_info['artists']]
    track_release_date = track_info['album']['release_date']

    # Get audio features
    audio_features = sp.audio_features(track['track']['id'])[0]
    try:
        track_genre = sp.artist(track_info['artists'][0]['id'])['genres'][0]
    except: 
        print(f"Track name: {track_name}")
        print("----------------------------")
        continue 
    track_bpm = audio_features['tempo']
    track_energy = audio_features['energy']
    track_danceability = audio_features['danceability']
    track_loudness = audio_features['loudness']
    track_valence = audio_features['valence']
    track_length = audio_features['duration_ms'] / 1000
    track_acousticness = audio_features['acousticness']
    track_speechiness = audio_features['speechiness']
    track_popularity = track_info['popularity']

    # Print track information
    print(f"Track name: {track_name}")
    print(f"Artists: {', '.join(track_artists)}")
    print(f"Genre: {track_genre}")
    print(f"Release date: {track_release_date}")
    print(f"BPM: {track_bpm}")
    print(f"Energy: {track_energy}")
    print(f"Danceability: {track_danceability}")
    print(f"Loudness: {track_loudness}")
    print(f"Valence: {track_valence}")
    print(f"Length: {track_length}")
    print(f"Acousticness: {track_acousticness}")
    print(f"Speechiness: {track_speechiness}")
    print(f"Popularity: {track_popularity}")
    print("----------------------------")
    counter+=1 

我注意到的另一件事;我用一些有问题的歌曲制作了一个新的播放列表,并且流行度是准确的。我尝试添加更多歌曲,当我通过 10 首歌曲时,标记了一些歌曲的受欢迎程度。

python spotify spotipy
1个回答
0
投票

我遇到了同样的问题并做了一些诊断。

问题似乎与使用市场变量的默认 None 相关,将您的调用更新为:

results = sp.playlist_tracks(playlist_id, market='US')

“US”是 ISO 3166-1 alpha-2 国家/地区代码的示例,您想要查找歌曲的流行度,应该可以让您与要比较的内容相匹配。

当我使用默认的 market=None 时,它返回 0 受欢迎度分数。我不是专家,但我猜如果这首歌在某个国家/地区不可用,它可能会归零。

© www.soinside.com 2019 - 2024. All rights reserved.