Не выдаётся результат при использовании Spotify Api
Хочу сделать программку, которая может создавать чарты используя Spotify Api. Код вначале работал без авторизации и выдавал результат, но после стал выдавать ошибку 401. Я добавил авторизацию, однако перестал получать результат. Буду рад, если поможете. Ниже прилагаю код. (Некоторые значения под ### убраны ради безопасности)
import spotipy
from spotipy.oauth2 import SpotifyOAuth
import json
client_id = '###'
client_secret = '###'
# Инициализируем аутентификацию
scope = "user-library-read"
redirect_uri = "###"
sp = spotipy.Spotify(auth_manager=SpotifyOAuth(client_id=client_id,
client_secret=client_secret,
redirect_uri=redirect_uri,
scope=scope))
def get_artist_id(artist_name):
result = sp.search(q=artist_name, type='artist', limit=1)
items = result['artists']['items']
if items:
return items[0]['id']
else:
return None
def load_artists_from_json(file_path):
with open(file_path, 'r', encoding='utf-8') as f:
data = json.load(f)
return data.get("artists", [])
def get_top_tracks_for_all_artists(artists):
all_tracks = []
for artist_name in artists:
artist_id = get_artist_id(artist_name)
if artist_id:
top_tracks = get_top_tracks(artist_id)
all_tracks.extend(top_tracks)
else:
print(f"Артист {artist_name} не найден.")
return all_tracks
def get_top_tracks(artist_id):
top_tracks = sp.artist_top_tracks(artist_id)
return top_tracks['tracks']
def print_top_tracks(tracks):
for i, track in enumerate(tracks, 1):
print(f"{i}. {track['name']} ({track['artists'][0]['name']}) - {track['popularity']} прослушиваний")
def save_top_tracks_to_file(tracks, file_path):
with open(file_path, 'w', encoding='utf-8') as f:
for i, track in enumerate(tracks, 1):
f.write(f"{i}. {track['name']} ({track['artists'][0]['name']}) - {track['popularity']} прослушиваний\n")
if __name__ == "__main__":
try:
current_user = sp.current_user()
print("Подключение к Spotify API успешно.")
print("Текущий пользователь Spotify:", current_user['display_name'])
except Exception as e:
print("Ошибка при подключении к Spotify API:", e)
exit()
artists = load_artists_from_json("artists.json")
print("Отправлен запрос: получение топ-50 песен для всех артистов...")
all_tracks = get_top_tracks_for_all_artists(artists)
sorted_tracks = sorted(all_tracks, key=lambda x: x['popularity'], reverse=True)[:50]
save_top_tracks_to_file(sorted_tracks, "final_chart.txt")
print("Топ-50 песен успешно получен и сохранен в файле 'final_chart.txt'.")