Deezer API - 获取当前位置

Deezer API - get current position

我想跟踪用户何时开始播放歌曲。我的问题是只能跟踪 播放按钮(在我看来)。但我只想要歌曲的开头,而不是每次点击播放按钮(当用户暂停并继续播放歌曲时)。

因此我只想在当前位置低于 1 秒或其他时间时检查歌曲和曲目的当前位置。有谁知道如何获取当前播放歌曲的位置?我发现的关于播放器位置的唯一一件事是 player_position 事件,该事件在歌曲中的位置发生变化时触发。

有什么想法吗?我最后想做的是存储一个变量来记住,如果这首歌已经被跟踪或什么的。

了解用户何时开始播放歌曲的唯一方法是使用您所说的 "player_position"。它与使用 "DZ.player.play" 操作时执行的 "player_play" 不同。如果需要,这里有一个示例 http://developers.deezer.com/sdk/javascript/example-invisible,它显示了它是如何工作的。

根据Fred_Dzr的提示,我做了一个解决方案,效果很好:

DZ.Event.subscribe('player_position', function(positionArray) {
    var track = DZ.player.getCurrentTrack();
    var position = Math.floor(positionArray[0]);
    if(position === 1) {
        if(!track['tracked']) {
            console.log('TRACKING: play: ' + track.id + ' | ' + track.artist.name + ' - ' + track.title);
            track['tracked'] = true;
        }
    } else {
        track['tracked'] = false;
    }
});

随着每个轨道上的附加标志 "tracked",当 "player_position" 事件在位置 1.1593044475699572 和 1.4754669253862243 和 1.7916924465679582 或其他位置触发时,我确信歌曲不会被跟踪两次。

位置 0 的跟踪对我不起作用,因为 "player_position" 事件是在玩家加载时触发的,但位置 1 已经足够了。此外,当用户搜索到歌曲的开头时,将触发跟踪。没关系,因为在这种情况下他又听了这首歌。

用这个方法我也可以追踪歌曲的中点。

谢谢!