6

私は、人々の発言を録音し、オーディオ ファイルを生成してそれを SoundCloud にアップロードし、Python を使用してアップロードされたトラックの URL を取得するアプリケーションを構築しています。

PyAudio を使用して、オーディオ ファイル (wave ファイル) を記録および生成しました。

しかし、SoundCloud にファイルをアップロードする方法を知る必要があります。調査の結果、SoundCloud API 用の Python ラッパーがあり、Python ライブラリ Poster を使用すると、SoundCloud にファイルを簡単にアップロードできることがわかりました。

どうすればいいのですか?私はこれまでこの API を使用したことがなく、適切なチュートリアルや使用方法のガイドが見つかりません。誰かがこれで私を助けることができるなら、ここで私の質問に答えてください.

このSoundCloud Python APIラッパーを使用して、PythonライブラリPosterの助けを借りて、Pythonを使用してSoundCloudにファイルをアップロードする方法は?

4

1 に答える 1

7

新しいPythonAPIラッパーをリリースしました。PyPiまたはGithubアカウントから入手できます。トラックをアップロードするには、最初に、サポートされているOAuth2認証フローの1つを使用してアクセストークンを取得する必要があります。これについては、 READMEファイルで読むことができます。認証について詳しく説明してほしい場合はお知らせください。回答を編集できます。

アクセストークンを取得するには、最初にアプリケーションをsoundcloud.comに登録します。アプリケーションを承認した後にユーザーが誘導されるURIを提供する必要があり、クライアントIDとクライアントシークレットが提供されます。これらの資格情報を取得したら、それらをクライアントコンストラクターに渡します。

import soundcloud
client = soundcloud.Client(client_id=YOUR_CLIENT_ID,
                           client_secret=YOUR_CLIENT_SECRET,
                           redirect_uri="http://your/redirect/uri")

その後、アプリを認証するために、ユーザーを認証URLにリダイレクトできるようになります。ユーザーはsoundcloud.comに送信され、ログインして(アクティブなセッションがない場合)、アプリへのアクセスを承認します。使用しているフレームワーク(Django、Flaskなど)によっては、次のようになります。

return redirect(client.authorize_url)

アプリへのアクセスを承認すると、ユーザーは、アプリの登録時とコンストラクターで指定したリダイレクトURIにリダイレクトされます。URLには、アクセストークンを取得するために使用できる「コード」パラメータを含むクエリ文字列が含まれます。繰り返しますが、使用しているフレームワークによっては、次のようになります。

code = request.params.get('code')
token = client.exchange_token(code)
print token.access_token  # don't actually print it, just showing how you would access it

おそらくアクセストークンを(つまり、MySQLやRedisなどのある種のデータストアに)保存して、そのユーザーが将来SoundCloudにアクセスしたいときにいつでも使用できるようにする必要があります。

アクセストークンを取得したら、トラックのアップロードは非常に簡単です。オーディオファイルを取得したら、POSTリクエストをtracksリソースに送信するだけです。次に例を示します。

import soundcloud

client = soundcloud.Client(access_token='YOUR_ACCESS_TOKEN')
track = client.post('/tracks', track={
    'title': 'The title you want to give your track',
    'sharing': 'private',  # make this 'public' if you want
    'asset_data': open('yourtrack.mp4', 'rb')
})

トラックリソースを取得します。これを使用して、SoundcloudURLを取得できます。

print track.permalink_url

お役に立てば幸いです。ご不明な点がございましたら、お気軽にお問い合わせください。

于 2012-02-12T19:48:19.263 に答える