我和我的团队(Python 新手)编写了以下代码来生成与特定城市和相关术语相关的 Spotify 歌曲。如果用户输入的城市不在我们的 CITY_KEY_WORDS 列表中,那么它会告诉用户输入将添加到请求文件中,然后将输入写入文件。代码如下:
from random import shuffle
from typing import Any, Dict, List
import spotipy
from spotipy.oauth2 import SpotifyClientCredentials
sp = spotipy.Spotify(
auth_manager=SpotifyClientCredentials(client_id="",
client_secret="")
)
CITY_KEY_WORDS = {
'london': ['big ben', 'fuse'],
'paris': ['eiffel tower', 'notre dame', 'louvre'],
'manhattan': ['new york', 'new york city', 'nyc', 'empire state', 'wall street', ],
'rome': ['colosseum', 'roma', 'spanish steps', 'pantheon', 'sistine chapel', 'vatican'],
'berlin': ['berghain', 'berlin wall'],
}
def main(city: str, num_songs: int) -> List[Dict[str, Any]]:
if city in CITY_KEY_WORDS:
"""Searches Spotify for songs that are about `city`. Returns at most `num_songs` tracks."""
results = []
# Search for songs that have `city` in the title
results += sp.search(city, limit=50)['tracks']['items'] # 50 is the maximum Spotify's API allows
# Search for songs that have key words associated with `city`
if city.lower() in CITY_KEY_WORDS.keys():
for related_term in CITY_KEY_WORDS[city.lower()]:
results += sp.search(related_term, limit=50)['tracks']['items']
# Shuffle the results so that they are not ordered by key word and return at most `num_songs`
shuffle(results)
return results[: num_songs]
该代码对于“if”语句运行良好(如果有人进入我们列出的城市)。但是,当运行 else 语句时,在操作正常执行后会出现 2 个错误(它将用户的输入打印并写入文件)。
出现的错误是:
Traceback (most recent call last):
File "...", line 48, in <module>
display_tracks(tracks)
File "...", line 41, in display_tracks
for num, track in enumerate(tracks):
TypeError: 'NoneType' object is not iterable
请原谅我缺乏知识,但请有人帮忙解决这个问题吗?
我们还想在最后创建一个歌曲的播放列表,但在这方面遇到了困难。
九州编程
慕标琳琳
相关分类