6

我正在构建一个应用程序,它会记录人们所说的话,生成音频文件并将其上传到 SoundCloud,并使用 Python 获取上传曲目的 URL。

我使用 PyAudio 录制并生成了一个音频文件——一个波形文件。

但我需要知道如何将文件上传到 SoundCloud。通过研究,我发现有一个用于 SoundCloud API 的 Python 包装器和 Python 库 Poster,可以轻松地将文件上传到 SoundCloud。

我该怎么做?我以前没有使用过这个 API,也没有找到合适的教程或如何使用它的指南。所以如果有人可以帮助我,请在这里回答我的问题。

如何使用此SoundCloud Python API 包装器在 Python 库Poster的帮助下使用 Python 将文件上传到 SoundCloud ?

4

1 回答 1

7

我们刚刚发布了一个新的 Python API 包装器。您可以在PyPi或我们的Github 帐户上获得它。要上传曲目,您首先需要使用受支持的 OAuth2 身份验证流程之一获取访问令牌。您可以在README 文件中阅读相关内容。如果您希望我详细说明身份验证,请告诉我,我可以编辑我的答案。

要获取访问令牌,请首先在 soundcloud.com 上注册您的应用程序。您需要提供一个 URI,用户在授权您的应用程序后将被定向到该 URI,并且您将获得一个客户端 ID 和客户端密码。获得这些凭据后,将它们传递给 Client 构造函数:

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 请求。这是一个例子:

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

您将获得一个音轨资源,然后您可以使用它来获取 Soundcloud URL:

print track.permalink_url

希望有帮助!如果您有任何问题,请告诉我。

于 2012-02-12T19:48:19.263 回答