1

我一直在尝试使用 Soundcloud API 从组中添加和删除歌曲。我正在使用 soundcloud-python 包装器使我能够轻松地做到这一点。

我已经让两个 Auth 流程都正常工作(使用 OAuth2 或直接使用用户凭据),并且我可以使用 python 客户端通过执行如下调用来获取有关登录用户等的信息:

print client.get('/me').username

这向我表明我已经正确地通过了授权,正如我所说,我已经通过这两种方法完成了这项工作。

我的问题是,当我尝试发出以下请求时,该请求作为示例提供以从组中添加/删除歌曲,无论组中是否已存在轨道,我总是会收到 404 错误(来自 Soundcloud 中的示例API 文档,在“为组贡献声音”下):

# contribute track to group
group = client.put('/groups/%d/contributions/%d' % (group.id, track.id))

如果我通过客户端对象对 /groups/{group-id}/contributions/{track-id} 执行任何功能,我总是会收到 404 错误。如果我未通过身份验证,我将收到 401 错误。我已经 100% 确定我使用了工作组 ID/轨道 ID 组合,方法是通过 API 控制台测试它们,并在必要时对值进行硬编码以证明操作。

这让我感到困惑 - 如果我在 API 控制台(在 Soundcloud API 网站上)中使用与 python 包装器失败的相同形式的 URI,并且我通过 OAuth 进行了身份验证,那么 GET/PUT 和 DELETE 都会按预期运行在通过 soundcloud-python 包装器失败的相同 group_id 和 track_id 上。

其他人对此有任何问题吗?他们有这个工作吗?

非常感谢您的帮助!

4

2 回答 2

0

404 错误表明您未通过身份验证。如果这不是问题,那么 http://developers.soundcloud.com/docs/api/guide#uploading说(在“为组贡献声音”中):

... 同样,您也可以删除贡献。(蟒蛇示例)

 import soundcloud

 # create a client object with access token
 client = soundcloud.Client(access_token='YOUR_ACCESS_TOKEN')

 # delete track id 59 from group id 123
 client.delete('/groups/123/contributions/59')
于 2012-09-10T14:19:48.973 回答
0

更新

我在下面链接到的拉取请求已被接受并合并到 API 包装器中。

只需从 Github 获取更新的源代码,这应该可以修复。

ps抱歉更新晚了。


/contributions端点有问题 - 请参阅此github 问题

我已经设法破解 API 以使这项工作正常进行,直到 SoundCloud 方面的错误得到修复。对client.py文件进行以下修改:

def _resolve_resource_name(self, name):
    [...]
    name = name.rstrip('/').lstrip('/')
    if name[-13:] == 'contributions':
        return '%s%s/%s' % (self.scheme, self.host, name)
    return '%s%s/%s.json' % (self.scheme, self.host, name)

或查看此拉取请求

于 2013-10-01T16:12:59.100 回答