当前播放状态的 Spotify Web SDK / Web API 问题
Posted
技术标签:
【中文标题】当前播放状态的 Spotify Web SDK / Web API 问题【英文标题】:Spotify Web SDK / Web API Issues with state of current playback 【发布时间】: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 播放器实例的播放队列?
谢谢!
【问题讨论】:
【参考方案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 因为轨道停止了。以上是关于当前播放状态的 Spotify Web SDK / Web API 问题的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Spotify Web API 获取当前播放/最近播放的歌曲