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

问题描述

我正在开发一个使用 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>
)