【问题标题】:Spotify Web SDK / Web API Issues with state of current playback当前播放状态的 Spotify Web SDK / Web API 问题
【发布时间】:2020-05-12 11:59:14
【问题描述】:

我目前正在使用 Web Player SDK / Web Api 来控制我的应用程序中的 Spotify 播放。我目前遇到的问题是,每当我播放歌曲时,我都无法检测到歌曲播放的结束,因为

state.track_window.next_songs

在收听时

player.addListener('player_state_changed', state => { });

“播放队列”中总是有项目,这导致检测几乎不可能。

这个: state && state.paused && state.context && state.context.metadata && state.context.metadata.uri == null 通常适用,但如果 state.track_window.next_songs 包含任何内容,则永远不会触发暂停。

我想知道是否有人对此有解决方案,或者是否有办法清除特定 Spotify 播放器实例的播放队列?

谢谢!

【问题讨论】:

    标签: reactjs web spotify


    【解决方案1】:

    我不确定我的理解是否正确,但是如果您想检测歌曲何时播放完毕,您可以拥有一个名为 currentPlaying 的对象,其中包含当前播放歌曲的 ID,然后当有状态更新时,请检查state.current_track 的 ID。如果它与您的 currentPlaying.id 不同,则表示歌曲已播放完毕,下一首已开始。

    ----- 编辑 ------

    有一种方法可以让 next_tracks 数组为空。如果您使用"uris" body 参数播放歌曲,您可以添加要播放的歌曲数组,最后 next_tracks 数组为空。看这个截图:

    要实现这一点,请查看 Spotify API: https://developer.spotify.com/console/put-play/?device_id=&body=%7B%20uris%3A%20%5Bspotify%3Atrack%3A3BQHpFgAp4l80e1XslIjNI%5D%20%7D

    我只使用"uris" 参数而不是"context_uri",并且我只在数组中传递了一首歌曲。歌曲播放完之后就没有播放了。

    【讨论】:

    • 这可能适用于简单的应用程序,但如果我有一个特定的曲目我想在完成之后播放呢?我不会有新的 currentPlaying 因为轨道停止了。
    猜你喜欢
    • 2021-04-09
    • 2019-03-23
    • 2015-05-16
    • 2017-11-21
    • 2018-07-10
    • 2018-07-19
    • 1970-01-01
    • 2014-09-20
    • 1970-01-01
    相关资源
    最近更新 更多