Получить Spotipy ID альбома из альбома
Используя Spotipy, я пытаюсь перечислить треки, указав имя исполнителя и альбом.
Это должно быть довольно просто, однако я не знаю, как получить идентификатор альбома, чтобы получить треклист. Я думал, что это будет что-то вроде:
sp.album_tracks(q = "album:" + album, type = "album")
... только это не работает.
Вот что у меня так далеко. Он успешно получит альбомы для выбранного исполнителя (здесь они жестко запрограммированы как "Фосгор" без особой причины, за исключением того, что у них всего три альбома, и я не хотел заваливать себя словарем):
#!/usr/bin/python
# -*- coding: utf-8 -*-
# shows album from trackname
import sys
import spotipy
def get_albums_from_artist_name(name):
results = sp.search(q = "artist:" + name, type = "artist")
items = results["artists"]["items"]
if len(items) == 0:
return None
else:
d = items[0]
# get artistID and artist name from dict
artID = d["id"] # 3Cf1GbbU9uHlS3veYiAK2x
aName = d["name"] # Phosgore
artistUri = "spotify:artist:" + artID
results = sp.artist_albums(artistUri, album_type = "album")
albums = results["items"]
while results["next"]:
results = sp.next(results)
albums.extend(results["items"])
unique = set() # ignore duplicate albums
for album in albums:
name = album["name"]
if not name in unique:
unique.add(name) # unique is a set
print ("\nAlbums by %s:\n" %(aName))
unique = list(unique)
for i in range(0, len(unique)):
print unique[i]
# let's return a list instead of a set
return list(unique)
#------------------------------------------------
def get_tracks_from_album(album):
tracks = []
# results = sp.album_tracks(q = "album:" + album, type = "album")
# don't know how to get album id
# list tracks here
sp = spotipy.Spotify()
sp.trace = False
ask = "Phosgore"
artistAlbums = get_albums_from_artist_name(ask)
get_tracks_from_album("Pestbringer")
1 ответ
Решение
Получить uri
of the album and pass it to the .album_tracks()
метод:
import spotipy
sp = spotipy.Spotify()
sp.trace = False
# find album by name
album = "Pestbringer"
results = sp.search(q = "album:" + album, type = "album")
# get the first album uri
album_id = results['albums']['items'][0]['uri']
# get album tracks
tracks = sp.album_tracks(album_id)
for track in tracks['items']:
print(track['name'])
Печать:
Embrace Our Gift
Here Comes the Pain
Pestbringer
Dein Licht
Aggression Incarnate
Countdown to Destruction
Nightmare
Noise Monsters
Lobotomy
The Holy Inquisition
Tote Musikanten