Soundcloud从链接获取跟踪ID(PHP)

时间:2014-01-16 04:19:39

标签: php api soundcloud

好的,我正在使用php在我的网站上发布soundcloud小部件(无需解释原因和方式,因为这不是重要的)

这是我的代码:

if (strpos($post['link'], 'soundcloud.com') !== FALSE)
{
    echo "<iframe width=\"500\" height=\"150\" scrolling=\"no\" frameborder=\"no\" 
    src=\"https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/".$trackID."&amp;color=ff6600&amp;auto_play=false&amp;show_artwork=true\"></iframe>";
}

我的变量 $ post ['link'] 以此格式输出soundcloud链接https://soundcloud.com/alex-oancea/best-thing-about-you-original

我想要做的是从链接中获取曲目的ID 并将其声明为 $ trackID ,因为您可以在我的代码中看到(在src = “”部分),小部件使用轨道的ID

我已经查看了此网站上的soundcloud API和许多其他线程,但我没有找到如何执行此操作或如何编写代码...

提前致谢!

3 个答案:

答案 0 :(得分:1)

检查http://developers.soundcloud.com/docs#resolving

您可以单击示例中的PHP按钮,获得获取曲目ID的好方法:

<?php
require_once 'Services/Soundcloud.php';

// create a client object with your app credentials
$client = new Services_Soundcloud('YOUR_CLIENT_ID');

// a permalink to a track
$track_url = 'http://soundcloud.com/forss/voca-nomen-tuum';

// resolve track URL into track resource
$track = json_decode($client->get('resolve', array('url' => $track_url)));

现在$track->id是您的曲目ID。

请注意,您需要使用SoundCloud API,并且您可能必须使用SoundCloud注册您的应用才能使用该服务。我没有任何相关的个人经验,因此我无法提供有关这些流程的任何信息。

答案 1 :(得分:0)

如果您在本地计算机上进行实验(在您的情况下为xampp),则无法使其正常工作,因为“REDIRECT_URL”&#39; REDIRECT_URL&#39;除了是托管域名的有效链接之外,它不能是其他任何内容。 API只是不接受(有充分理由)url包含&#34; localhost&#34;或者或者&#34; 192.168.x.x&#34; -style url&#39; s。这只是因为API确实将信息发送到了&#39; REDIRECT_URL&#39;它需要能够达到它。 您需要与您的托管服务提供商联系并设置一个&#34; live&#34; dev environement。

答案 2 :(得分:0)

假设你正在使用来自mptre的Github的php-soundcloud:

检查https://developers.soundcloud.com/docs#resolving(甚至是“另请参阅”部分中指出的'/ resolve')。

您可以通过这种方式获得获取曲目ID的好方法:

<?php
require_once 'Services/Soundcloud.php';

// create a client object with your app credentials
$client = new Services_Soundcloud('YOUR_CLIENT_ID', 'YOUR_CLIENT_SECRET');

// a permalink to a track
$track_url = 'http://soundcloud.com/forss/voca-nomen-tuum';

// resolve track URL into track resource
$track = json_decode($client->get('resolve', array('url' => $track_url),        array(CURLOPT_FOLLOWLOCATION => true))); 

// display all the information from that track resource
var_dump($track);
Now $track->id is your track ID.
?>

请注意,您需要使用SoundCloud API,并且必须使用SoundCloud注册您的应用才能使用该服务(Register your app)。

另一个信息是,设置了basedir限制和/或安全模式的Web服务器不允许CURLOPT_FOLLOWLOCATION = true选项。 Here is a workaround for these webservers in the Soundcloud.php file.