使用 Spotify Web API / Playback SDK 检测曲目播放结束

2024-01-08

使用 Spotify Web API 和 Web Playback SDK,有人知道检测曲目播放何时完成(即歌曲结束)的好方法吗?

我知道一些名为player_state_changed在Web Playback SDK中,但是事件中提供的数据似乎对我没有太大帮助。

在我的网络应用程序中,下一首要播放的歌曲是自发确定的。如果我只能在当前曲目结束时确定它,那就太好了。因此,没有播放列表。相反,该应用程序会连续播放单个曲目,并应在当前歌曲结束后确定下一首歌曲。

同时我在这里尝试使用以下代码:

var bCallingNextSong = false;

player.addListener('player_state_changed', state => { 
    if (state != null && 
        state.position == 0 && 
        state.duration == 0 && 
        state.paused == true) { 

        if (!bCallingNextSong) {
            playNextSong();
        }
    }
});


function playNextSong() {
   $.ajax({
            url:"playback.php", //the page containing php script
            type: "post", //request type,
            dataType: 'json',
            data: {action: "next", device: deviceId},
            success: function(result) {
                bCallingNextSong = false;
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {  
                bCallingNextSong = false;
            } 
    });     
}

and in playback.php:

switch ($action) {

    case "next":
        //some blackbox magic here to determine next song, do logging etc.
        //but for now just play the same song over and over

        $api->play($deviceId, ['uris' => "spotify:track:0eGsygTp906u18L0Oimnem"],]);

        echo json_encode(array("answer"=>"played next"));
        break;  

// more code
}

然而,这经常(但并非总是)抛出一个 InvalidStateError (我还没有找到确切的位置和原因)。堆栈显示 dequeueUpdates / tryUpdate / _processUpdate / _appendUpdate。然而,我是一个初学者,我必须先学习如何使用 Firefox 调试器..:)


我的上一个答案被破坏了,所以我现在将添加目前有效的新解决方案。

this.player.addListener('player_state_changed', (state) => {
    console.log(state);
    if (
      this.state
      && state.track_window.previous_tracks.find(x => x.id === state.track_window.current_track.id)
      && !this.state.paused
      && state.paused
      ) {
      console.log('Track ended');
      this.setTrackEnd(true);
    }
    this.state = state;
  });

那么与上一个解决方案有什么不同呢?我检查 current_track 是否在上一个曲目列表中。但现在位置检查出现问题,因为似乎当前曲目在曲目完全结束之前出现在上一个曲目列表中。但这在我的应用程序中不是问题,因为命令总是存在小的延迟。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Spotify Web API / Playback SDK 检测曲目播放结束 的相关文章

  • 如何在 Ubuntu 和 LinuxMint 上安装 Spotify

    Spotify 是一家娱乐公司 可让您即时访问数百万首歌曲 从旧的最爱到最新的热门歌曲 本教程将帮助您在 Ubuntu 和 LinuxMint 桌面系统上安装 Spotify 应用程序 本教程介绍了使用命令行在 Ubuntu 和 Linux
  • 无法使用 C# HttpClient 获取任何 cookie

    我正在尝试使用 C 和 HttpClient 类在 Spotify 登录页面上获取 cookie 然而 当我知道正在设置 cookie 时 CookieContainer 始终为空 我没有发送任何标头 但它仍然应该给我 cookie 因为当
  • 从 Spotify 应用程序内访问 Spotify 元数据 API?

    我想从 Spotify 应用程序中运行 Spotify 搜索 查找某个艺术家的曲目 我没有该艺术家的 Spotify URI 只有名称 我没有在 App API 中找到运行搜索的功能 另一种选择是与ws spotify com访问 Spot
  • Spotify 拼图问题

    我正在尝试解决本文中描述的 最佳之前 Spotify 难题page 基本上 输入三个由斜杠分隔的整数 例如 11 3 4 您应该生成一个具有 2011 03 04 格式的最早可能日期的输出 如果没有可能的日期 则应返回原始字符串 后跟 is
  • 无法使用 kaaes Spotify Web api 获取播放列表的曲目

    我是一个非常菜鸟的用户 我正在尝试在我的 Android 应用程序中播放 Spotify 的一些曲目 目前我正在使用 kaaes API https github com kaaes spotify web api android http
  • 在使用 Spotify 的 Spotipy 缓存令牌时遇到问题?

    我正在尝试使用 Spotipy 访问用户的 Spotify 库 但遇到了一些麻烦 作为背景 我使用 Flask SQLAlchemy 和 Flask Login 我看着本教程 https github com sheagcraig actu
  • require.js POST 请求 spotify Web api 返回“解析 json 时出错”

    根据Spotify Web API 创建播放列表 https developer spotify com web api create playlist 一旦授权成功 带有 access token 和一些其他参数的 POST 应该为用户创
  • 如何在不打开网络浏览器的情况下在spotipy中进行身份验证?

    我尝试了标准方法 主页上有描述 但我需要在没有网络浏览器的情况下登录 我怎样才能做到这一点 您可以使用 Spotify 的 python 库之一 例如 https github com plamere spotipy https githu
  • 授权和 Web API 调用结束后如何从 Spotify 注销用户

    我使用 Spotify Web API 来获取播放列表和用户曲目列表 授权工作正常 我也确实得到了曲目详细信息 但之后我想从 Spotify 注销用户并允许新登录 用户自动从 Spotify 帐户注销之前有一个会话时间 但用户可能没有耐心等
  • 从 iTunes 搜索 API(Apple 音乐)获取 ISRC 代码

    Apple 有一个搜索 API 可让您在 iTunes Store 中查询音乐 https affiliate itunes apple com resources documentation itunes store web servic
  • 在 R 中访问多个艺术家的 Spotify API

    我在 Spotify 的开发者应用程序部分创建了客户端 ID 和密钥 我正在参考这份文件 并希望通过选择多名艺术家来扩展它 https www r bloggers com the eurovision 2016 song contest
  • 如何获取用户当前在 Spotify 应用程序中收听的内容的信息 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 Android 应用程序 在后台运行并使用 Spotify SDK 能否获取用户当前在 Spotify Android 应用程序中收听
  • 如何从 C# 调用 Spotify API

    我正在尝试使用 C 调用 Spotify API 不幸的是 我已经被困在获取access token 这就是我试图得到它的方法 private static async Task
  • 在 Applescript 中监控 Spotify 曲目变化?

    我正在尝试找出通过 Spotify 的 Applescript 库检测曲目更改的最佳方法 到目前为止 我已经尝试检查玩家位置 如果它等于 0 则它是一个新曲目 并且咆哮通知会再次出现 如果有人重新开始一首歌等 这通常不起作用 我想知道是否更
  • Spotify 中的 Facebook 个人资料图片

    我想在我的 Spotify 应用程序中显示 Facebook 个人资料图片 但我应该在清单文件中允许哪些 URL 我知道我可以通过 http graph facebook com user id picture 检索图像 但这只是到实际图像
  • Spotify Apps API:库类不会返回用户播放列表

    我试图获取一个包含用户库中所有播放列表的数组 http developer spotify com download spotify apps api reference dcdebc652c html 其他类属性 专辑 艺术家 加星标的播
  • 我们可以限制 luigi 任务的吞吐量吗?

    我们有一个 Luigi 任务 它向第三方服务请求一条信息 我们对该 API 调用每分钟可以执行的调用请求数量受到限制 有没有办法在每个任务的基础上指定调度程序每单位时间必须运行多少个此类任务 我们在任务中实施了自己的速率限制 我们的 API
  • 使用 python 通过搜索端点从 Spotify API 获取曲目

    因此 我尝试使用 API 的搜索端点进行搜索 从而从 Spotify API 获取曲目 请参阅文档 https developer spotify com documentation web api reference search sea
  • Spotify API:INVALID_APP_ID

    我目前正在开发一个实现 Spotify API 的 Android 应用程序 我已经使用教程将我的应用程序连接到 Spotify 的所有代码 并且已经在我的应用程序上工作了一段时间了 当我在验证用户身份后通过我的应用程序播放歌曲时 它在我的
  • 获取 iPhone 上 Spotify 中当前播放的歌曲

    访问MPMusicPlayerController systemMusicPlayer 下面的代码 适用于获取 Apple Music 应用程序中正在播放的曲目信息 但是我们有没有办法访问 Spotify 应用程序中当前播放的歌曲的信息 此

随机推荐