自动播放下一个嵌入式soundcloud轨道?

时间:2013-07-31 13:16:29

标签: php wordpress embed soundcloud

我目前正在使用http://ifttt.com从SoundCloud中获取我的公共收藏夹并将其发布到我的Wordpress网站(http://diversesounds.co.uk)。

IFTTT在我的网站上创建了一个帖子,内容如下:

<div class="trackUrl" id="(IFTTT then grabs the Track URL and places it here)">

然后我有以下JS块;

<script src="//connect.soundcloud.com/sdk.js"></script>
<script>

<?php

if(have_posts()): while (have_posts()) : the_post(); ?>

<?php

// Exploding the content to get track url from Div ID
$theContent = get_the_content();
$explode = explode('"', $theContent);
$trackUrl = $explode[3];

?>

SC.oEmbed(
    "<?php echo $trackUrl; ?>",
    {
        color: "494e72",
        show_comments: false
    },
    document.getElementById("<?php echo $trackUrl; ?>")
);

<?php endwhile; endif; ?>

上面的代码完美无缺,但我希望它能在完成第一个手动播放曲目后自动播放下一曲目。

我几乎不知道JS(我从SoundCloud Docs中抓取了上面的代码,所以请光临我。

由于 - 乔

2 个答案:

答案 0 :(得分:1)

您可以为onMediaEnd事件添加一个监听器,并尝试使用该监听器播放下一首曲目:

soundcloud.addEventListener('onMediaEnd', function(player, data) {

    // find the next player here and use the API method api_play()

});

文档:http://developers.soundcloud.com/docs/widget#widget-events

你可能需要换掉嵌入方法。他们的JS包装器在GitHub上

https://github.com/soundcloud/Widget-JS-API

答案 1 :(得分:0)

请参阅HTML5 Widget API documentation

您可以将事件处理程序附加到FINISH个事件。但是,我的建议是使用不同的方法,并使用Audio5JSSoundCloud's own JS SDKkilokeith/soundcloud-soundmanager-player。然后,您可以自己构建UI并使用播放器播放所有音乐。

不同之处在于每个小部件都是一个非常复杂的单页JS应用程序,并不是真正用于您尝试使用它的目的。

<强> UPD 即可。示例流程(刚出头):

collect references to all widget iframes by DOM class
store them in array `widgets`
initialise API wrapper with first element of that array `SC.Widget(widgets[0])`
attach event handler `finishHandler` to `FINISH` event
`finishHandler` needs to 
  initialise API wrapper `SC.Widget(widgets[1])` and start playback with this new widget 
  attach the same `finishHandler` to `FINISH` event of the newly initialised widget
  shift first widget from the array `widgets.shift()`

这可能过于简单和天真。但也许它仍然会帮助你。