一个友好的soundcloud api包装库

soundcloud的Python项目详细描述


https://travis-ci.org/soundcloud/soundcloud-python.svg

围绕Soundcloud API的友好包装。

安装

要安装soundcloud python,只需:

pip install soundcloud

或者如果你对pip不感兴趣:

easy_install soundcloud

基本用途

要使用soundcloud python,必须首先创建一个客户机实例, 至少传递您在registered your app

import soundcloud

client = soundcloud.Client(client_id=YOUR_CLIENT_ID)

然后可以使用客户端实例来获取或修改资源:

tracks = client.get('/tracks', limit=10)
for track in tracks:
    print track.title
app = client.get('/apps/124')
print app.permalink_url

身份验证

soundcloud api支持的所有OAuth2 authorization flows都是 在soundcloud python中提供。如果您只需要只读访问 公共资源,只需在创建客户机时提供客户机ID 实例:

import soundcloud

client = soundcloud.Client(client_id=YOUR_CLIENT_ID)
track = client.get('/tracks/30709985')
print track.title

但是,如果需要访问私有资源或修改资源, 您需要具有对应用程序的用户委派访问权限。待办事项 这样,您可以使用以下OAuth2授权流之一。

授权代码流

Authorization Code Flow涉及将用户重定向到soundcloud.com 他们将在何处登录并授予对您的应用程序的访问权限:

import soundcloud

client = soundcloud.Client(
    client_id=YOUR_CLIENT_ID,
    client_secret=YOUR_CLIENT_SECRET,
    redirect_uri='http://yourapp.com/callback'
)
redirect(client.authorize_url())

请注意,重定向uri必须与您在 注册了你的申请。授予访问权限后,用户将 重定向到此uri,此时应用程序可以交换 访问令牌的返回代码:

access_token, expires, scope, refresh_token = client.exchange_token(
    code=request.args.get('code'))
render_text("Hi There, %s" % client.get('/me').username)

用户凭据流

User Credentials Flow允许您交换用户名和 访问令牌的密码。小心使用这个流,它是 不太好问你的用户他们的密码,但可能是 在某些用例中是必需的:

import soundcloud

client = soundcloud.Client(
    client_id=YOUR_CLIENT_ID,
    client_secret=YOUR_CLIENT_SECRET,
    username='jane@example.com',
    password='janespassword'
)
print client.get('/me').username

示例

解析曲目并打印其ID:

import soundcloud

client = soundcloud.Client(client_id=YOUR_CLIENT_ID)

track = client.get('/resolve', url='http://soundcloud.com/forss/flickermood')

print track.id

上传曲目:

import soundcloud

client = soundcloud.Client(access_token="a valid access token")

track = client.post('/tracks', track={
    'title': 'This is a sample track',
    'sharing': 'private',
    'asset_data': open('mytrack.mp4', 'rb')
})

print track.title

开始跟踪用户:

import soundcloud

client = soundcloud.Client(access_token="a valid access token")
user_id_to_follow = 123
client.put('/me/followings/%d' % user_id_to_follow)

更新您的个人资料描述:

import soundcloud

client = soundcloud.Client(access_token="a valid access token")
client.put('/me', user={
    'description': "a new description"
})

代理支持

如果您在代理后面,则可以在创建客户端时指定它:

import soundcloud

proxies = {
    'http': 'example.com:8000'
}
client = soundcloud.Client(access_token="a valid access token",
                           proxies=proxies)

代理KWAG是一个字典,协议是键和主机:端口是值。

重定向

默认情况下,等幂方法将遵循301或302重定向。在某些情况下,您可能需要禁用此功能,例如:

import soundcloud

client = soundcloud.Client(access_token="a valid access token")
track = client.get('/tracks/293/stream', allow_redirects=False)
print track.location

将打印曲目流URL。如果省略allow_redirects,则返回一个二进制流。

运行测试

要运行测试,请运行:

$ pip install -r requirements.txt
$ nosetests --with-doctest
..................

成功!

贡献

贡献太棒了。欢迎来到submit issues, 或者fork the repository

soundcloud python是在BSD License下发布的。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Javalog4j2。xml和log4j2test。eclipse中的xml   java映像未显示在surfaceview中   在Java中,能否在for之后立即放置if?   java调用构造函数的不同方式是什么?   java为什么不将其视为多重继承,而所有类都首先从对象类扩展,然后再扩展其他类   带有ms access的java不显示数据库结果   java Eclipse命令行URL参数切断https   java Android JNI回调似乎调用了一个随机方法   java Apache Camel处理XMLFile中声明的编码   java Bonita BPM不要等待Bonita的函数结束   布尔Java:构建逻辑表达式,然后验证它们   java在不使用QueryString的情况下将变量从一个网站页面传递到另一个网站页面   java ORA01861:文本与格式字符串不匹配   java字节[]字符串到C中的字符串#   java试图通过socket发送sqlite数据库文件   java如何使用命令行更改属性文件中的浏览器值以运行selenium测试用例