Soundcloud API-添加/删除组中的歌曲-404错误



我一直在尝试使用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}/contensions/{track-id}执行任何函数,我总是会得到404错误。如果我没有通过身份验证,我将得到一个401错误。我已经通过API控制台测试了工作组id/track_id组合,并在必要时对其进行了硬编码以证明操作,从而确保我使用了这些组合。

这就是让我困惑的地方——如果我在API控制台(在Soundcloud API网站上)中使用了与python包装器失败的相同形式的URI,并且我通过OAuth进行了身份验证,那么GET/PUT和DELETE在相同的group_id和track_id上的行为都与预期的一样,而这些都通过Soundcloud-python包装器失败。

其他人对此有意见吗?他们这样做了吗?

非常感谢您的帮助!

404错误表明您未通过身份验证。如果这不是问题所在,http://developers.soundcloud.com/docs/api/guide#uploading(在"为一个群体贡献声音"中):

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

 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')

更新

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

只需从Github获取更新后的源代码,就可以修复此问题。

p.s.很抱歉更新太晚


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

我已经设法破解API使其工作,直到SoundCloud方面的bug得到修复。对客户端.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)

或者查看此拉取请求。

最新更新