问题描述
我正在制作一个与 last.fm API 通信的 discord.js 机器人。我想让我的机器人在嵌入中显示请求中的图像,但它只给我不同大小的结果。其他一切都很好,我只需要图像方面的帮助。非常感谢您的帮助:)
def to_float(x):
if type(x) != str:
return x
elif x[-1] == "k":
return float(x.rstrip("k")) * 1000
else:
return float(x)
这是json响应
axios
.get(request_url)
.then(res => {
if (res.data.message) {
message.channel.send('User not found')
return
}
const latest_track = res.data.recenttracks.track[0]
if (!latest_track) {
e.message.channel.send('User not found')
return
}
const {
name,artist: { '#text': artist },album: {'#text': album},image: {'size': large,'#text' : image},} = latest_track
const embed = new MessageEmbed()
.setColor('#0099ff')
.setTitle(`?Now playing- ${fmname}`)
.setDescription(` **${name} - ${artist}** on ${album}`)
.setimage(image)
message.channel.send(embed)
解决方法
在 JSON 响应中,您会注意到为您提供了 Array 个图像。对于数组中的每个 JSON 对象,都有一个大小和一个图像 URL。如果你想访问图像的“小”版本,你会要求数组中的第一个元素。计算机从 0 开始,而不是从 1 开始,因此您可以执行以下操作:
// Replace <JSON> with whatever variable represents your JSON
.setImage(<JSON>.image[0]['#text'])
如果您需要中等,只需将 0 替换为 1。要了解有关数组的更多信息,请查看 Array article written by Mozilla。
感谢@Elitezen,因为他们在评论中指出了这一点