从 json 响应中获取图像
Get Image out of a json response
我正在制作一个与 last.fm API 通信的 discord.js 机器人。我希望我的机器人在嵌入中显示来自请求的图像,但它只会给我不同的结果 sizes.Everything 否则工作得很好我只需要图像方面的帮助。非常感谢你的帮助:)
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响应
{
artist: { mbid: '', '#text': 'Tyler, The Creator' },
'@attr': { nowplaying: 'true' },
mbid: '',
album: { mbid: '', '#text': 'CALL ME IF YOU GET LOST' },
streamable: '0',
url: 'https://www.last.fm/music/Tyler,+The+Creator/_/SWEET+%2F+I+THOUGHT+YOU+WANTED+TO+DANCE+(feat.+Brent+Faiyaz+&+Fana+Hues)',
name: 'SWEET / I THOUGHT YOU WANTED TO DANCE (feat. Brent Faiyaz & Fana Hues)',
image: [
{
size: 'small',
'#text': 'https://lastfm.freetls.fastly.net/i/u/34s/8bed6cc4a2f68d3bb2228fbe6654b887.gif'
},
{
size: 'medium',
'#text': 'https://lastfm.freetls.fastly.net/i/u/64s/8bed6cc4a2f68d3bb2228fbe6654b887.gif'
},
{
size: 'large',
'#text': 'https://lastfm.freetls.fastly.net/i/u/174s/8bed6cc4a2f68d3bb2228fbe6654b887.gif'
},
{
size: 'extralarge',
'#text': 'https://lastfm.freetls.fastly.net/i/u/300x300/8bed6cc4a2f68d3bb2228fbe6654b887.gif'
}
]
}
在 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,因为他们在评论中指出了这一点
我正在制作一个与 last.fm API 通信的 discord.js 机器人。我希望我的机器人在嵌入中显示来自请求的图像,但它只会给我不同的结果 sizes.Everything 否则工作得很好我只需要图像方面的帮助。非常感谢你的帮助:)
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响应
{
artist: { mbid: '', '#text': 'Tyler, The Creator' },
'@attr': { nowplaying: 'true' },
mbid: '',
album: { mbid: '', '#text': 'CALL ME IF YOU GET LOST' },
streamable: '0',
url: 'https://www.last.fm/music/Tyler,+The+Creator/_/SWEET+%2F+I+THOUGHT+YOU+WANTED+TO+DANCE+(feat.+Brent+Faiyaz+&+Fana+Hues)',
name: 'SWEET / I THOUGHT YOU WANTED TO DANCE (feat. Brent Faiyaz & Fana Hues)',
image: [
{
size: 'small',
'#text': 'https://lastfm.freetls.fastly.net/i/u/34s/8bed6cc4a2f68d3bb2228fbe6654b887.gif'
},
{
size: 'medium',
'#text': 'https://lastfm.freetls.fastly.net/i/u/64s/8bed6cc4a2f68d3bb2228fbe6654b887.gif'
},
{
size: 'large',
'#text': 'https://lastfm.freetls.fastly.net/i/u/174s/8bed6cc4a2f68d3bb2228fbe6654b887.gif'
},
{
size: 'extralarge',
'#text': 'https://lastfm.freetls.fastly.net/i/u/300x300/8bed6cc4a2f68d3bb2228fbe6654b887.gif'
}
]
}
在 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,因为他们在评论中指出了这一点