如何使用Python将文件上传到Soundcloud?

时间:2012-01-31 15:53:16

标签: python soundcloud

我正在构建一个应用程序来记录人们说的内容,生成音频文件并将其上传到SoundCloud并使用Python获取上传轨道的URL。

我使用PyAudio来录制和生成音频文件 - 波形文件。

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

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

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

1 个答案:

答案 0 :(得分:7)

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

要获取访问令牌,请先register your application on 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")

然后,您就可以将用户重定向到授权网址,以便授权您的应用。用户将被发送到soundcloud.com进行登录(如果他们没有活动会话)并批准您的应用访问。根据您使用的框架(例如Django,Flask等),它可能看起来像这样:

return redirect(client.authorize_url)

批准您的应用访问后,用户将被重定向到您在注册应用时和构造函数中指定的重定向uri。该URL将包含一个查询字符串,其中包含一个“code”参数,您可以使用该参数获取访问令牌。同样,根据您使用的框架,这可能如下所示:

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时使用它。

获得访问令牌后,上传曲目应该非常简单。获得音频文件后,只需向track资源发送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网址:

print track.permalink_url

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