如何使用 Last FM 检查音乐是否正在播放 API

How to check if music is playing with Last FM API

我正在做一个 React 应用程序,我正在使用 Last FM API。如果正在播放音乐,应用程序会显示当前曲目,否则会显示上次收听的曲目。此时一切正常。 我的问题是我想显示我目前是否在听,但不知道怎么做。我试图滚动浏览文档,但没有找到任何有用的信息。

我正在从这里获取数据: 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 属性,它是 returns 布尔值,我只是不知道如何使用该值。

我发现这个 link 显示存储的 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>
)