【问题标题】:How to upload files to Soundcloud using Python?如何使用 Python 将文件上传到 Soundcloud?
【发布时间】:2012-01-31 15:53:16
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: python soundcloud


    【解决方案1】:

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

    要获取访问令牌,请首先使用register your application on soundcloud.com。您需要提供一个 URI,用户在授权您的应用程序后将被定向到该 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 请求。这是一个例子:

    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
    

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

    【讨论】:

    • 非常感谢@Paul!这真的很有帮助!是的,我想了解更多关于身份验证以及如何获取访问令牌的信息。这对我有很大帮助。
    • 没问题的。我刚刚编辑了答案以包含有关 OAuth2 的详细信息。
    • Paul,是否可以将其发布到您自己的帐户中,即不代表其他用户发布,而只是为您自己的用户发布。身份验证有何不同?
    • 嗨 Andres,在这种情况下,您可以使用用户凭据流。 developers.soundcloud.com/docs/api/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-12
    • 1970-01-01
    • 2021-07-08
    • 2021-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多