【问题标题】:Deezer Radio: Track id not in radioDeezer Radio:电台中没有曲目 ID
【发布时间】:2015-03-18 08:58:05
【问题描述】:

如何实现Deezer Radio API中的所有曲目保持不变并因此可以播放?

解释: 我在机顶盒上有一个 Deezer 应用程序(HTML+JavaScript,没有外部库)。

应用程序从上述 API 中获取无线电跟踪列表。然后它播放曲目,从streaming API 获取每个曲目的流媒体 URL。

有时,许多 API 调用的电台曲目列表保持不变,有时每次调用时列表都会改变。为什么会这样?当电台曲目不再在电台列表中时,流式 API 会返回错误:

{
    error: {
        type: "DataException",
        message: "Track id not in radio",
        code: 800
    }
}

例如,我得到一个特定广播的 40 首曲目列表,流式 API 通常返回完整的流式 URL,但每 5 个左右的曲目都无法播放(也就是 Deezer API 抛出上述错误),这不是因为错误的 API 调用但是因为那个特定的曲目已经不在最初的 40 首曲目列表中了……或者至少这是我自己的假设。

因此,我正在寻找一种方法来获得 40 首曲目的固定列表,在我播放所有 40 首曲目然后获取新列表之前,这些曲目不会改变。这是可能的还是我错过了什么?

谢谢!

【问题讨论】:

    标签: javascript deezer


    【解决方案1】:

    JavaScript SDK 有两种方法可以实现这一点。

    1) 可以直接用DZ.player.playRadio(radio_id)收听电台

    2)如果你真的想要一个固定的列表,你可以在http://api.deezer.com/radio/radio_id/tracks获取曲目列表,然后用DZ.player.playTracks(tracks)播放所有曲目

    例子:

    DZ.api('/radio/30771/tracks', function(result) {
        var tracks = result.data.map(function(elem) {
            return elem.id;
        });
    
        DZ.player.playTracks(tracks);
    });
    

    编辑:在评论中讨论后,解决方案是直接播放曲目,而不在流媒体网址中提及 radio_id。

    【讨论】:

    • 我们的应用程序不使用 JS SDK,它是用纯 JavaScript 构建的,没有 html div 和 css,使用内部 STB 的播放器功能。 API 调用看起来和你的一样,没有 2.0 标签:var url = 'http://api.deezer.com/2.0/radio/' + _radioId + '/tracks';
    • 只需通过 API 调用一次获取所有曲目的列表,然后如果您有自己的播放器,则单独播放所有曲目。
    • 谢谢GreenLeaf,但我已经这样做了:我得到所有曲目的列表一次,然后单独播放所有曲目 - 直到我收到曲目ID不在收音机中的错误(不再?),第一次调用列表时的位置。因此我最初的问题:)
    • 好的,然后从您的流媒体 URL 中删除 radio_id:api.deezer.com/…,您应该没问题。顺便说一句,尽量不要发布您的访问令牌:)
    • 它有效,谢谢!您能否发布另一个答案,以便我可以接受它?我还按照您的建议编辑了原始帖子。
    猜你喜欢
    • 2019-09-21
    • 1970-01-01
    • 1970-01-01
    • 2014-08-14
    • 2015-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多