读取 JSON 文件以获得最高分辨率图像 (Last.FM)
Read JSON file to get highest resolution image (Last.FM)
因此,我正在开发一个项目,每次在特定日期(例如 'Mon 22:00:00')都会发送一条 Discord 消息。该消息包括我那周听得最多的专辑。每当我得到 URL 到 JSON,其中包括多个 link 到图像时,我就得到了代码。这是我得到的 JSON 响应:
{
"album": {
"name": "Significant Other",
"artist": "Limp Bizkit",
"mbid": "be3e00aa-368a-3f09-ac96-cd094e9a7151",
"url": "https://www.last.fm/music/Limp+Bizkit/Significant+Other",
"image": [{
"#text": "https://lastfm.freetls.fastly.net/i/u/34s/1c00f7b9cd94c2b6fbd7f12fc00bd8d2.png",
"size": "small"
}, {
"#text": "https://lastfm.freetls.fastly.net/i/u/64s/1c00f7b9cd94c2b6fbd7f12fc00bd8d2.png",
"size": "medium"
}, {
"#text": "https://lastfm.freetls.fastly.net/i/u/174s/1c00f7b9cd94c2b6fbd7f12fc00bd8d2.png",
"size": "large"
}, {
"#text": "https://lastfm.freetls.fastly.net/i/u/300x300/1c00f7b9cd94c2b6fbd7f12fc00bd8d2.png",
"size": "extralarge"
}, {
"#text": "https://lastfm.freetls.fastly.net/i/u/300x300/1c00f7b9cd94c2b6fbd7f12fc00bd8d2.png",
"size": "mega"
}, {
"#text": "https://lastfm.freetls.fastly.net/i/u/300x300/1c00f7b9cd94c2b6fbd7f12fc00bd8d2.png",
"size": ""
}],
"listeners": "774409",
"playcount": "10274552",
"tracks": {
"track": [{
"name": "Intro",
"url": "https://www.last.fm/music/Limp+Bizkit/_/Intro",
"duration": "78",
"@attr": {
"rank": "1"
},
"streamable": {
"#text": "0",
"fulltrack": "0"
},
"artist": {
"name": "Limp Bizkit",
"mbid": "8f9d6bb2-dba4-4cca-9967-cc02b9f4820c",
"url": "https://www.last.fm/music/Limp+Bizkit"
}
}, {
"name": "Just Like This",
"url": "https://www.last.fm/music/Limp+Bizkit/_/Just+Like+This",
"duration": "215",
"@attr": {
"rank": "2"
},
"streamable": {
"#text": "0",
"fulltrack": "0"
},
"artist": {
"name": "Limp Bizkit",
"mbid": "8f9d6bb2-dba4-4cca-9967-cc02b9f4820c",
"url": "https://www.last.fm/music/Limp+Bizkit"
}
}, {
"name": "Nookie",
"url": "https://www.last.fm/music/Limp+Bizkit/_/Nookie",
"duration": "289",
"@attr": {
"rank": "3"
},
"streamable": {
"#text": "0",
"fulltrack": "0"
},
"artist": {
"name": "Limp Bizkit",
"mbid": "8f9d6bb2-dba4-4cca-9967-cc02b9f4820c",
"url": "https://www.last.fm/music/Limp+Bizkit"
}
}, {
"name": "Break Stuff",
"url": "https://www.last.fm/music/Limp+Bizkit/_/Break+Stuff",
"duration": "166",
"@attr": {
"rank": "4"
},
"streamable": {
"#text": "0",
"fulltrack": "0"
},
"artist": {
"name": "Limp Bizkit",
"mbid": "8f9d6bb2-dba4-4cca-9967-cc02b9f4820c",
"url": "https://www.last.fm/music/Limp+Bizkit"
}
}, {
"name": "Re-Arranged",
"url": "https://www.last.fm/music/Limp+Bizkit/_/Re-Arranged",
"duration": "354",
"@attr": {
"rank": "5"
},
"streamable": {
"#text": "0",
"fulltrack": "0"
},
"artist": {
"name": "Limp Bizkit",
"mbid": "8f9d6bb2-dba4-4cca-9967-cc02b9f4820c",
"url": "https://www.last.fm/music/Limp+Bizkit"
}
}, {
"name": "I'm Broke",
"url": "https://www.last.fm/music/Limp+Bizkit/_/I%27m+Broke",
"duration": "239",
"@attr": {
"rank": "6"
},
"streamable": {
"#text": "0",
"fulltrack": "0"
},
"artist": {
"name": "Limp Bizkit",
"mbid": "8f9d6bb2-dba4-4cca-9967-cc02b9f4820c",
"url": "https://www.last.fm/music/Limp+Bizkit"
}
}, {
"name": "Nobody Like You",
"url": "https://www.last.fm/music/Limp+Bizkit/_/Nobody+Like+You",
"duration": "260",
"@attr": {
"rank": "7"
},
"streamable": {
"#text": "0",
"fulltrack": "0"
},
"artist": {
"name": "Limp Bizkit",
"mbid": "8f9d6bb2-dba4-4cca-9967-cc02b9f4820c",
"url": "https://www.last.fm/music/Limp+Bizkit"
}
}, {
"name": "Don't Go Off Wandering",
"url": "https://www.last.fm/music/Limp+Bizkit/_/Don%27t+Go+Off+Wandering",
"duration": "239",
"@attr": {
"rank": "8"
},
"streamable": {
"#text": "0",
"fulltrack": "0"
},
"artist": {
"name": "Limp Bizkit",
"mbid": "8f9d6bb2-dba4-4cca-9967-cc02b9f4820c",
"url": "https://www.last.fm/music/Limp+Bizkit"
}
}, {
"name": "9 Teen 90 Nine",
"url": "https://www.last.fm/music/Limp+Bizkit/_/9+Teen+90+Nine",
"duration": "276",
"@attr": {
"rank": "9"
},
"streamable": {
"#text": "0",
"fulltrack": "0"
},
"artist": {
"name": "Limp Bizkit",
"mbid": "8f9d6bb2-dba4-4cca-9967-cc02b9f4820c",
"url": "https://www.last.fm/music/Limp+Bizkit"
}
}, {
"name": "N 2 Gether Now",
"url": "https://www.last.fm/music/Limp+Bizkit/_/N+2+Gether+Now",
"duration": "289",
"@attr": {
"rank": "10"
},
"streamable": {
"#text": "0",
"fulltrack": "0"
},
"artist": {
"name": "Limp Bizkit",
"mbid": "8f9d6bb2-dba4-4cca-9967-cc02b9f4820c",
"url": "https://www.last.fm/music/Limp+Bizkit"
}
}, {
"name": "Trust?",
"url": "https://www.last.fm/music/Limp+Bizkit/_/Trust%3F",
"duration": "299",
"@attr": {
"rank": "11"
},
"streamable": {
"#text": "0",
"fulltrack": "0"
},
"artist": {
"name": "Limp Bizkit",
"mbid": "8f9d6bb2-dba4-4cca-9967-cc02b9f4820c",
"url": "https://www.last.fm/music/Limp+Bizkit"
}
}, {
"name": "No Sex",
"url": "https://www.last.fm/music/Limp+Bizkit/_/No+Sex",
"duration": "234",
"@attr": {
"rank": "12"
},
"streamable": {
"#text": "0",
"fulltrack": "0"
},
"artist": {
"name": "Limp Bizkit",
"mbid": "8f9d6bb2-dba4-4cca-9967-cc02b9f4820c",
"url": "https://www.last.fm/music/Limp+Bizkit"
}
}, {
"name": "Show Me What You Got",
"url": "https://www.last.fm/music/Limp+Bizkit/_/Show+Me+What+You+Got",
"duration": "266",
"@attr": {
"rank": "13"
},
"streamable": {
"#text": "0",
"fulltrack": "0"
},
"artist": {
"name": "Limp Bizkit",
"mbid": "8f9d6bb2-dba4-4cca-9967-cc02b9f4820c",
"url": "https://www.last.fm/music/Limp+Bizkit"
}
}, {
"name": "A Lesson Learned",
"url": "https://www.last.fm/music/Limp+Bizkit/_/A+Lesson+Learned",
"duration": "160",
"@attr": {
"rank": "14"
},
"streamable": {
"#text": "0",
"fulltrack": "0"
},
"artist": {
"name": "Limp Bizkit",
"mbid": "8f9d6bb2-dba4-4cca-9967-cc02b9f4820c",
"url": "https://www.last.fm/music/Limp+Bizkit"
}
}, {
"name": "Outro / Radio Sucks / The Mind of Les",
"url": "https://www.last.fm/music/Limp+Bizkit/_/Outro+%2F+Radio+Sucks+%2F+The+Mind+of+Les",
"duration": "438",
"@attr": {
"rank": "15"
},
"streamable": {
"#text": "0",
"fulltrack": "0"
},
"artist": {
"name": "Limp Bizkit",
"mbid": "8f9d6bb2-dba4-4cca-9967-cc02b9f4820c",
"url": "https://www.last.fm/music/Limp+Bizkit"
}
}, {
"name": "[silence]",
"url": "https://www.last.fm/music/Limp+Bizkit/_/%5Bsilence%5D",
"duration": "4",
"@attr": {
"rank": "16"
},
"streamable": {
"#text": "0",
"fulltrack": "0"
},
"artist": {
"name": "Limp Bizkit",
"mbid": "8f9d6bb2-dba4-4cca-9967-cc02b9f4820c",
"url": "https://www.last.fm/music/Limp+Bizkit"
}
}]
},
"tags": {
"tag": [{
"name": "albums I own",
"url": "https://www.last.fm/tag/albums+I+own"
}, {
"name": "Nu Metal",
"url": "https://www.last.fm/tag/Nu+Metal"
}, {
"name": "rapcore",
"url": "https://www.last.fm/tag/rapcore"
}, {
"name": "rock",
"url": "https://www.last.fm/tag/rock"
}, {
"name": "limp bizkit",
"url": "https://www.last.fm/tag/limp+bizkit"
}]
},
"wiki": {
"published": "11 Jul 2016, 20:19",
"summary": "Significant Other is the second album by American rap rock/nu metal band Limp Bizkit. Released in 1999 by Flip/Interscope Records, the album saw the band expanding its sound from that of its debut album Three Dollar Bill, Yall, to incorporate further metal and hip hop influences. Significant Other was co-produced by Terry Date and Limp Bizkit. The album has sold at least 16 million copies worldwide. <a href=\"http://www.last.fm/music/Limp+Bizkit/Significant+Other\">Read more on Last.fm</a>.",
"content": "Significant Other is the second album by American rap rock/nu metal band Limp Bizkit. Released in 1999 by Flip/Interscope Records, the album saw the band expanding its sound from that of its debut album Three Dollar Bill, Yall, to incorporate further metal and hip hop influences. Significant Other was co-produced by Terry Date and Limp Bizkit. The album has sold at least 16 million copies worldwide. <a href=\"http://www.last.fm/music/Limp+Bizkit/Significant+Other\">Read more on Last.fm</a>. User-contributed text is available under the Creative Commons By-SA License; additional terms may apply."
}
}
}
我想获取 "size": ""
上方的 link,因为此图像具有最高分辨率。我怎样才能做到这一点?我使用 Python 来制作 Discord 机器人,所以如果你能用 Python 语言解释,那就太好了!提前致谢!
要将 JSON 字符串转换为 Python 对象,您可以使用:
import json
album_data = json.loads(album_json_string)
要提取 'mega' 图像 URL,您可以使用列表理解遍历图像列表:
images = album_data['album']['image']
mega_images = [i for i in images if i['size'] == 'mega']
try:
mega_image_url = mega_images[0]['image']
except IndexError:
#do something if the mega URL isn't present
因此,我正在开发一个项目,每次在特定日期(例如 'Mon 22:00:00')都会发送一条 Discord 消息。该消息包括我那周听得最多的专辑。每当我得到 URL 到 JSON,其中包括多个 link 到图像时,我就得到了代码。这是我得到的 JSON 响应:
{
"album": {
"name": "Significant Other",
"artist": "Limp Bizkit",
"mbid": "be3e00aa-368a-3f09-ac96-cd094e9a7151",
"url": "https://www.last.fm/music/Limp+Bizkit/Significant+Other",
"image": [{
"#text": "https://lastfm.freetls.fastly.net/i/u/34s/1c00f7b9cd94c2b6fbd7f12fc00bd8d2.png",
"size": "small"
}, {
"#text": "https://lastfm.freetls.fastly.net/i/u/64s/1c00f7b9cd94c2b6fbd7f12fc00bd8d2.png",
"size": "medium"
}, {
"#text": "https://lastfm.freetls.fastly.net/i/u/174s/1c00f7b9cd94c2b6fbd7f12fc00bd8d2.png",
"size": "large"
}, {
"#text": "https://lastfm.freetls.fastly.net/i/u/300x300/1c00f7b9cd94c2b6fbd7f12fc00bd8d2.png",
"size": "extralarge"
}, {
"#text": "https://lastfm.freetls.fastly.net/i/u/300x300/1c00f7b9cd94c2b6fbd7f12fc00bd8d2.png",
"size": "mega"
}, {
"#text": "https://lastfm.freetls.fastly.net/i/u/300x300/1c00f7b9cd94c2b6fbd7f12fc00bd8d2.png",
"size": ""
}],
"listeners": "774409",
"playcount": "10274552",
"tracks": {
"track": [{
"name": "Intro",
"url": "https://www.last.fm/music/Limp+Bizkit/_/Intro",
"duration": "78",
"@attr": {
"rank": "1"
},
"streamable": {
"#text": "0",
"fulltrack": "0"
},
"artist": {
"name": "Limp Bizkit",
"mbid": "8f9d6bb2-dba4-4cca-9967-cc02b9f4820c",
"url": "https://www.last.fm/music/Limp+Bizkit"
}
}, {
"name": "Just Like This",
"url": "https://www.last.fm/music/Limp+Bizkit/_/Just+Like+This",
"duration": "215",
"@attr": {
"rank": "2"
},
"streamable": {
"#text": "0",
"fulltrack": "0"
},
"artist": {
"name": "Limp Bizkit",
"mbid": "8f9d6bb2-dba4-4cca-9967-cc02b9f4820c",
"url": "https://www.last.fm/music/Limp+Bizkit"
}
}, {
"name": "Nookie",
"url": "https://www.last.fm/music/Limp+Bizkit/_/Nookie",
"duration": "289",
"@attr": {
"rank": "3"
},
"streamable": {
"#text": "0",
"fulltrack": "0"
},
"artist": {
"name": "Limp Bizkit",
"mbid": "8f9d6bb2-dba4-4cca-9967-cc02b9f4820c",
"url": "https://www.last.fm/music/Limp+Bizkit"
}
}, {
"name": "Break Stuff",
"url": "https://www.last.fm/music/Limp+Bizkit/_/Break+Stuff",
"duration": "166",
"@attr": {
"rank": "4"
},
"streamable": {
"#text": "0",
"fulltrack": "0"
},
"artist": {
"name": "Limp Bizkit",
"mbid": "8f9d6bb2-dba4-4cca-9967-cc02b9f4820c",
"url": "https://www.last.fm/music/Limp+Bizkit"
}
}, {
"name": "Re-Arranged",
"url": "https://www.last.fm/music/Limp+Bizkit/_/Re-Arranged",
"duration": "354",
"@attr": {
"rank": "5"
},
"streamable": {
"#text": "0",
"fulltrack": "0"
},
"artist": {
"name": "Limp Bizkit",
"mbid": "8f9d6bb2-dba4-4cca-9967-cc02b9f4820c",
"url": "https://www.last.fm/music/Limp+Bizkit"
}
}, {
"name": "I'm Broke",
"url": "https://www.last.fm/music/Limp+Bizkit/_/I%27m+Broke",
"duration": "239",
"@attr": {
"rank": "6"
},
"streamable": {
"#text": "0",
"fulltrack": "0"
},
"artist": {
"name": "Limp Bizkit",
"mbid": "8f9d6bb2-dba4-4cca-9967-cc02b9f4820c",
"url": "https://www.last.fm/music/Limp+Bizkit"
}
}, {
"name": "Nobody Like You",
"url": "https://www.last.fm/music/Limp+Bizkit/_/Nobody+Like+You",
"duration": "260",
"@attr": {
"rank": "7"
},
"streamable": {
"#text": "0",
"fulltrack": "0"
},
"artist": {
"name": "Limp Bizkit",
"mbid": "8f9d6bb2-dba4-4cca-9967-cc02b9f4820c",
"url": "https://www.last.fm/music/Limp+Bizkit"
}
}, {
"name": "Don't Go Off Wandering",
"url": "https://www.last.fm/music/Limp+Bizkit/_/Don%27t+Go+Off+Wandering",
"duration": "239",
"@attr": {
"rank": "8"
},
"streamable": {
"#text": "0",
"fulltrack": "0"
},
"artist": {
"name": "Limp Bizkit",
"mbid": "8f9d6bb2-dba4-4cca-9967-cc02b9f4820c",
"url": "https://www.last.fm/music/Limp+Bizkit"
}
}, {
"name": "9 Teen 90 Nine",
"url": "https://www.last.fm/music/Limp+Bizkit/_/9+Teen+90+Nine",
"duration": "276",
"@attr": {
"rank": "9"
},
"streamable": {
"#text": "0",
"fulltrack": "0"
},
"artist": {
"name": "Limp Bizkit",
"mbid": "8f9d6bb2-dba4-4cca-9967-cc02b9f4820c",
"url": "https://www.last.fm/music/Limp+Bizkit"
}
}, {
"name": "N 2 Gether Now",
"url": "https://www.last.fm/music/Limp+Bizkit/_/N+2+Gether+Now",
"duration": "289",
"@attr": {
"rank": "10"
},
"streamable": {
"#text": "0",
"fulltrack": "0"
},
"artist": {
"name": "Limp Bizkit",
"mbid": "8f9d6bb2-dba4-4cca-9967-cc02b9f4820c",
"url": "https://www.last.fm/music/Limp+Bizkit"
}
}, {
"name": "Trust?",
"url": "https://www.last.fm/music/Limp+Bizkit/_/Trust%3F",
"duration": "299",
"@attr": {
"rank": "11"
},
"streamable": {
"#text": "0",
"fulltrack": "0"
},
"artist": {
"name": "Limp Bizkit",
"mbid": "8f9d6bb2-dba4-4cca-9967-cc02b9f4820c",
"url": "https://www.last.fm/music/Limp+Bizkit"
}
}, {
"name": "No Sex",
"url": "https://www.last.fm/music/Limp+Bizkit/_/No+Sex",
"duration": "234",
"@attr": {
"rank": "12"
},
"streamable": {
"#text": "0",
"fulltrack": "0"
},
"artist": {
"name": "Limp Bizkit",
"mbid": "8f9d6bb2-dba4-4cca-9967-cc02b9f4820c",
"url": "https://www.last.fm/music/Limp+Bizkit"
}
}, {
"name": "Show Me What You Got",
"url": "https://www.last.fm/music/Limp+Bizkit/_/Show+Me+What+You+Got",
"duration": "266",
"@attr": {
"rank": "13"
},
"streamable": {
"#text": "0",
"fulltrack": "0"
},
"artist": {
"name": "Limp Bizkit",
"mbid": "8f9d6bb2-dba4-4cca-9967-cc02b9f4820c",
"url": "https://www.last.fm/music/Limp+Bizkit"
}
}, {
"name": "A Lesson Learned",
"url": "https://www.last.fm/music/Limp+Bizkit/_/A+Lesson+Learned",
"duration": "160",
"@attr": {
"rank": "14"
},
"streamable": {
"#text": "0",
"fulltrack": "0"
},
"artist": {
"name": "Limp Bizkit",
"mbid": "8f9d6bb2-dba4-4cca-9967-cc02b9f4820c",
"url": "https://www.last.fm/music/Limp+Bizkit"
}
}, {
"name": "Outro / Radio Sucks / The Mind of Les",
"url": "https://www.last.fm/music/Limp+Bizkit/_/Outro+%2F+Radio+Sucks+%2F+The+Mind+of+Les",
"duration": "438",
"@attr": {
"rank": "15"
},
"streamable": {
"#text": "0",
"fulltrack": "0"
},
"artist": {
"name": "Limp Bizkit",
"mbid": "8f9d6bb2-dba4-4cca-9967-cc02b9f4820c",
"url": "https://www.last.fm/music/Limp+Bizkit"
}
}, {
"name": "[silence]",
"url": "https://www.last.fm/music/Limp+Bizkit/_/%5Bsilence%5D",
"duration": "4",
"@attr": {
"rank": "16"
},
"streamable": {
"#text": "0",
"fulltrack": "0"
},
"artist": {
"name": "Limp Bizkit",
"mbid": "8f9d6bb2-dba4-4cca-9967-cc02b9f4820c",
"url": "https://www.last.fm/music/Limp+Bizkit"
}
}]
},
"tags": {
"tag": [{
"name": "albums I own",
"url": "https://www.last.fm/tag/albums+I+own"
}, {
"name": "Nu Metal",
"url": "https://www.last.fm/tag/Nu+Metal"
}, {
"name": "rapcore",
"url": "https://www.last.fm/tag/rapcore"
}, {
"name": "rock",
"url": "https://www.last.fm/tag/rock"
}, {
"name": "limp bizkit",
"url": "https://www.last.fm/tag/limp+bizkit"
}]
},
"wiki": {
"published": "11 Jul 2016, 20:19",
"summary": "Significant Other is the second album by American rap rock/nu metal band Limp Bizkit. Released in 1999 by Flip/Interscope Records, the album saw the band expanding its sound from that of its debut album Three Dollar Bill, Yall, to incorporate further metal and hip hop influences. Significant Other was co-produced by Terry Date and Limp Bizkit. The album has sold at least 16 million copies worldwide. <a href=\"http://www.last.fm/music/Limp+Bizkit/Significant+Other\">Read more on Last.fm</a>.",
"content": "Significant Other is the second album by American rap rock/nu metal band Limp Bizkit. Released in 1999 by Flip/Interscope Records, the album saw the band expanding its sound from that of its debut album Three Dollar Bill, Yall, to incorporate further metal and hip hop influences. Significant Other was co-produced by Terry Date and Limp Bizkit. The album has sold at least 16 million copies worldwide. <a href=\"http://www.last.fm/music/Limp+Bizkit/Significant+Other\">Read more on Last.fm</a>. User-contributed text is available under the Creative Commons By-SA License; additional terms may apply."
}
}
}
我想获取 "size": ""
上方的 link,因为此图像具有最高分辨率。我怎样才能做到这一点?我使用 Python 来制作 Discord 机器人,所以如果你能用 Python 语言解释,那就太好了!提前致谢!
要将 JSON 字符串转换为 Python 对象,您可以使用:
import json
album_data = json.loads(album_json_string)
要提取 'mega' 图像 URL,您可以使用列表理解遍历图像列表:
images = album_data['album']['image']
mega_images = [i for i in images if i['size'] == 'mega']
try:
mega_image_url = mega_images[0]['image']
except IndexError:
#do something if the mega URL isn't present