正如标题所说,我试图看看播放列表是否有播放列表图像封面,这样它就不会试图加载一个不存在的图像。
这是我的方法:
currentPlaylist = spotifyObject.user_playlist(username, playlistManageURI)
if ['images'][0] in currentPlaylist:
playlistCover_url = currentPlaylist['images'][0]['url']
image = QImage()
image.loadFromData(requests.get(playlistCover_url).content)
self.playlistCover.setScaledContents(True)
self.playlistCover.setPixmap(QPixmap(image))
else:
print('Playlist Cover doesnt exist!')
如果一个播放列表确实加载了图像封面,如果我试图加载一个不存在图像封面的播放列表,它会给我
IndexError: list index out of range
以下是当前播放列表的样子,其中播放列表确实有封面
{
"collaborative": false,
"description": "",
"external_urls": {
"spotify": "https://open.spotify.com/playlist/xxxxxxxx"
},
"followers": {
"href": null,
"total": 4
},
"href": "https://api.spotify.com/v1/playlists/xxxxxxxx?additional_types=track",
"id": "xxxxxx",
"images": [
{
"height": null,
"url": "https://i.scdn.co/image/ab67706c0000bebbcab54ad44bbf6dd124838df1",
"width": null
}
],
"name": "xxxxx",
"owner": {
"display_name": "xxxxx",
"external_urls": {
"spotify": "https://open.spotify.com/user/xxxxxxxx"
},
"href": "https://api.spotify.com/v1/users/xxxx",
"id": "xxxxx",
"type": "user",
"uri": "spotify:user:xxxx"
这就是没有封面的样子(完全空白的播放列表(
{
"collaborative": false,
"description": "xxxx",
"external_urls": {
"spotify": "https://open.spotify.com/playlist/xxxxxx"
},
"followers": {
"href": null,
"total": 0
},
"href": "https://api.spotify.com/v1/playlists/xxxxxx?additional_types=track",
"id": "xxxxxx",
"images": [],
"name": "xxxxxx",
"owner": {
"display_name": "xxxxx",
"external_urls": {
"spotify": "https://open.spotify.com/user/xxxxx"
},
"href": "https://api.spotify.com/v1/users/xxxx",
"id": "xxxxxxxx",
"type": "user",
"uri": "xxxxxxx"
如果"图像";始终存在于currentPlaylist中,而不管currentPlaylist["images"]是否为空。
if currentPlaylist['images']:
...
否则
if "images" in currentPlaylist and currentPlaylist["images"]:
...
使用以下用法解决:
if currentPlaylist.get('images') == []:
print('no image found in playlist!')
else:
print(['images'][0])
playlistCover_url = currentPlaylist['images'][0]['url']
image = QImage()
image.loadFromData(requests.get(playlistCover_url).content)
self.playlistCover.setScaledContents(True)
self.playlistCover.setPixmap(QPixmap(image))