问题描述
我正在开发一个使用 Last FM API 的 React 应用程序。如果音乐正在播放,应用程序会显示当前曲目,如果不是,则显示上次收听的曲目。此时一切正常。 我的问题是我想显示我目前是否在听,但不知道如何。我试图滚动浏览文档,但没有真正找到任何有用的东西。
我从这里获取数据: https://ws.audioscrobbler.com/2.0/?method=user.getRecentTracks&user=${userName}&api_key=${apiKey}&format=json
const track = scrobbles?.recenttracks?.track;
const [
{ name: songName,artist: { '#text': artistName } = {}}
= {}] = track;
return (
<div>
<h1>playing</h1>
<h3>{songName}</h3>
<h3>{artistName}</h3>
</div>
)
scrobbles 是存储所有 JSON 数据的变量。在 JSON 数据中,track 数组中有 Nowplaying 属性,它返回布尔值,我只是不知道如何使用该值。
我发现这个链接显示了存储的 JSON 数据: https://lastfm-docs.github.io/api-docs/user/getRecentTracks/
我可能想在 h1 元素周围使用某种条件语句来显示播放或不播放。
任何想法如何做到这一点?谢谢
解决方法
当前正在播放的曲目应该有一个
"@attr": {
"nowplaying": "true"
},
与之关联的属性。比较 getRecentTracks
的示例输出,用于当前轨道正在滚动与不在时的场景。
我不确定为什么“true”是一个字符串,而不是一个布尔值。
,刚刚找到了解决方案。这可能不是最好或最漂亮的解决方案,但它确实有效。
const track = scrobbles?.recenttracks?.track
if (track.length > 0) {
const trarray = track[0];
if (trarray['@attr'] && trarray['@attr']['nowplaying']) {
return (
<div>
<h1>Playing</h1>
</div>
)
}
}
return (
<div>
<h1>Not playing</h1>
</div>
)