1

グループから曲を追加および削除するために、Soundcloud API を使用しようとしています。これを簡単に行えるようにするために、soundcloud-python ラッパーを使用しています。

両方の認証フローが正しく機能しています (OAuth2 を使用するか、ユーザー資格情報を直接使用するかのいずれか)。Python クライアントを使用して、次のように呼び出しを実行することにより、ログインしているユーザーなどに関する情報を取得できます。

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

これは、私が承認を正しく通過したことを示しており、私が言うように、これは両方の方法で機能しています。

私の問題は、グループに曲を追加/削除するための例として提供されている次のリクエストを作成しようとすると、トラックがグループに既に存在するかどうかに関係なく、常に 404 エラーが発生することです (Soundcloud の例から) API ドキュメントの「Contributing Sounds to a Group」の下):

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

クライアント オブジェクトを介して /groups/{group-id}/contributions/{track-id} に対して何らかの機能を実行すると、常に 404 エラーが発生します。認証されていない場合、401 エラーが発生します。API コンソールを使用してテストし、必要に応じて値をハードコーディングして動作を証明することで、動作する group_id/track_id の組み合わせを使用したことを 100% 確認しました。

これは私を混乱させるものです-APIコンソール(Soundcloud API Webサイト)のpythonラッパーで失敗したのと同じ形式のURIを使用し、OAuthを介して認証されている場合、GET / PUTおよびDELETEはすべて期待どおりに動作します同じ group_id と track_id で、soundcloud-python ラッパーで失敗します。

他の誰かがこれに問題を抱えていますか? 彼らはこれを機能させましたか?

助けてくれてありがとう!

4

2 に答える 2

0

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')
于 2012-09-10T14:19:48.973 に答える
0

Update

The pull request I link to below was accepted and merged into the API wrapper.

Just grab the updated source from Github, and this should be fixed.

p.s. Sorry for the late update.


The /contributions endpoint is buggy - see this github issue.

I've managed to hack the API to make this work until the bug is fixed on SoundCloud's side. Make the following amendments to the client.py file:

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)

Or see this pull request.

于 2013-10-01T16:12:59.100 に答える