Spotify 中的显式曲目总是 returns None?

Explicit tracks in Spotify always returns None?

我正在获取我的 50 位顶级艺术家的列表 artistList。从这个列表中,我得到 artistAlbumsList 中每个艺术家的专辑,然后我从中循环遍历艺术家专辑的曲目,直到我在 albumTracks 中找到一个明确的曲目。

(Spotify 不会将专辑标记为明确的,只有曲目...这就是为什么我必须循环播放曲目。)

如果有露骨曲目,我会将专辑标记为露骨并将专辑添加到我的 new_albums 列表中。

我怎么回来None所有这些专辑中都有露骨曲目,所以这不是问题。

此外,如果我改为尝试在 albums 字典上调用 update 而不是 new_albums,我会收到此错误:AttributeError: 'NoneType' object has no attribute 'update'

import time
import spotipy
import spotipy.util as util
from config import spotify_token

def albumDrop():
    sp = spotipy.Spotify(auth=spotify_token)
    albums = {}
    new_albums = {}
    artistList = sp.current_user_top_artists(limit=50, offset=0, time_range='long_term')['items']
    for artist in artistList:
        print(artist["name"], artist["id"])
        artistAlbumsList = sp.artist_albums( artist["id"], album_type='album', limit=3)['items']
        for album in artistAlbumsList:
            print(album['release_date'], artist['name'], album['name'], album['external_urls']['spotify'], album['id'])
            albumTracks = sp.album_tracks(album['id'], limit=50)['items']
            for track in albumTracks:
                if track['explicit'] == True:
                    new_albums = albums.update({'{artistName} - {albumName}'.format(artistName = artist['name'], albumName = album['name']) : {'Release Date': album['release_date'], 'Artist Name': artist['name'], 'Album Name': album['name'], 'Album URI': album['external_urls']['spotify'], 'Album ID': album['id'], 'Explicit': track['explicit']}})
                    break
    return(new_albums)

if __name__ == "__main__":
    start = time.time()
    latestAlbums = albumDrop()
    end = time.time()
    print(latestAlbums)
    print(end - start)

还有什么更快的方法吗?

albums.updatedict.update 是就地操作 returns None.

您可以使用解包来创建一个新的字典:

new_albums = {**albums, **{'{artistName} - {albumName}'.format(artistName = artist['name'], albumName = album['name']) : {'Release Date': album['release_date'], 'Artist Name': artist['name'], 'Album Name': album['name'], 'Album URI': album['external_urls']['spotify'], 'Album ID': album['id'], 'Explicit': track['explicit']}}}