【问题标题】:How to create SoundCloud playlist using PHP wrapper如何使用 PHP 包装器创建 SoundCloud 播放列表
【发布时间】:2015-03-19 23:31:10
【问题描述】:

我正在尝试使用 njasm PHP 包装器创建一个播放列表,可以查看 here。我使用这个包装器的原因是它允许用户直接登录。就我的目的而言,这是一项要求。

首先让我说我能够连接到 API;在尝试创建播放列表之前,我做了一些获取某些信息的请求。

我现在正在尝试这个

$response = $facade->post('/playlists', $prepaired_post_array)->request();

$prepaired_post_array 包含

[0] = playlist[title]=LA Sun
[1] = &playlist[tracks][][id]=102981743
[2] = &playlist[tracks][][id]=93248225
[3] = &playlist[tracks][][id]=25780933

此语句返回代码 422。根据 SoundClouds API 的说法,这接近于正确的结果,但有些东西搞砸了。我尝试了一些不同的方法,但其他所有方法都只返回代码 400,这只是一个错误的请求。

【问题讨论】:

  • 我不熟悉 SoundCloud API,但 API example for /playlists 包含“共享”字段 - 添加这个有帮助吗?另外,您指定的所有曲目 ID 是否真的存在?
  • @SimonMᶜKenzie 是的,id 确实存在。我正在从现有的播放列表中提取它们。共享字段是什么意思?
  • 嗯,示例如下所示:client.post('/playlists', :playlist => { :title => 'My new album', :sharing => 'public', :tracks => tracks,但您没有指定“共享”字段
  • @SimonMᶜKenzie 我相信您正在查看文档中的 Ruby 代码。
  • 您是对的,语言之间的示例不一致,这确实使“共享”字段看起来不是强制性的,但我使用哪种语言并不重要看着。如果一个字段是强制性的,而您不提供它,您会遇到问题。他们的服务器不知道(或关心)您使用的是什么语言!

标签: php soundcloud


【解决方案1】:

感谢您使用我的图书馆。

soundcloud 的播放列表很棘手。最近我更新了库并在最新版本中测试了您需要的内容。

28-04-2015 更新:您需要最新的 2.2.1 稳定版本或更高版本才能使用以下示例代码。

注意:版本 3.x.x 仍在大力开发中,以下示例适用于 2.x.x

注意:考虑到 Request 对象在向 soundcloud 发出请求的方式上发生了变化,我建议在生产中使用该版本之前需要进一步测试。 (这也是为什么我仍然没有将其标记为稳定版本的原因)

考虑到这一点,请执行以下操作:

1) 下载最新的 MASTER 2.2.1 标签或更高版本(如果您通过 composer 安装它,请将 composer.json 更新为 "njasm/soundcloud": "dev-master" "njasm/soundcloud": "2.2.1" 和在开发环境中运行 composer update 。)你需要任何高于 2.2.0 的稳定版本,但不是 3.0.x,因为它还不稳定。

然后试试这个代码:

// initialize Soundcloud
// auth via User Credential Flow
$soundcloud = new \Njasm\Soundcloud\SoundcloudFacade(
    $clientID, $clientSecret
);

$soundcloud->userCredentials("user@email.com", "user_password");

// build playlist main array
$playlistData = array(
    "playlist" => array(
        "title" => "My2 great Title Playlist!",
        "sharing" => "public", // or private
    )
);

//create playlist at soundcloud and grab the response
$response = $soundcloud->post('/playlists', $playlistData)->request();

// build tracks array
$tracks = array(
    "playlist" => array(
        "tracks" => array(
            array("id" => 29720509), // Connect the Dots
            array("id" => 26057359) // Forgotten Values
         )
    )
);

// put tracks into playlist
$response = $soundcloud->put(
    '/playlists/' . $response->bodyObject()->id, 
    $tracks
)->request();

var_dump($response->bodyArray());
die();

这个应该会起作用。 还要考虑到每次您向播放列表“PUT”请求时,您都必须使用该播放列表/集中所需的所有曲目 ID 构建曲目数组,soundcloud 将删除所有曲目并插入新曲目。

我想问您,如果您发现库有任何问题,请在 github 问题页面中报告。

谢谢,玩得开心!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-07
    • 1970-01-01
    相关资源
    最近更新 更多