soundcloud-python

A Python wrapper around the Soundcloud API

  • 所有者: soundcloud/soundcloud-python
  • 平台:
  • 許可證: BSD 2-Clause "Simplified" License
  • 分類:
  • 主題:
  • 喜歡:
    0
      比較:

Github星跟蹤圖

=================
soundcloud-python

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

A friendly wrapper around the Soundcloud API_.

.. _Soundcloud API: http://developers.soundcloud.com/

Installation

To install soundcloud-python, simply: ::

pip install soundcloud

Or if you're not hip to the pip: ::

easy_install soundcloud

Basic Use

To use soundcloud-python, you must first create a Client instance,
passing at a minimum the client id you obtained when you registered your app_: ::

import soundcloud

client = soundcloud.Client(client_id=YOUR_CLIENT_ID)

The client instance can then be used to fetch or modify resources: ::

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

.. _registered your app: http://soundcloud.com/you/apps/

Authentication

All OAuth2 authorization flows_ supported by the Soundcloud API are
available in soundcloud-python. If you only need read-only access to
public resources, simply provide a client id when creating a Client
instance: ::

import soundcloud

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

If however, you need to access private resources or modify a resource,
you will need to have a user delegate access to your application. To do
this, you can use one of the following OAuth2 authorization flows.

Authorization Code Flow

The Authorization Code Flow_ involves redirecting the user to soundcloud.com
where they will log in and grant access to your application: ::

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())

Note that redirect_uri must match the value you provided when you
registered your application. After granting access, the user will be
redirected to this uri, at which point your application can exchange
the returned code for an access token: ::

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

The User Credentials Flow_ allows you to exchange a username and
password for an access token. Be cautious about using this flow, it's
not very kind to ask your users for their password, but may be
necessary in some use cases: ::

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

.. _OAuth2 authorization flows: http://developers.soundcloud.com/docs/api/authentication
.. _Authorization Code Flow: http://developers.soundcloud.com/docs/api/authentication#user-agent-flow
.. _User Credentials Flow: http://developers.soundcloud.com/docs/api/authentication#user-credentials-flow

Examples

Resolve a track and print its id: ::

import soundcloud

client = soundcloud.Client(client_id=YOUR_CLIENT_ID)

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

print track.id

Upload a track: ::

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

Start following a user: ::

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)

Update your profile description: ::

import soundcloud

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

Proxy Support

If you're behind a proxy, you can specify it when creating a client: ::

import soundcloud

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

The proxies kwarg is a dictionary with protocols as keys and host:port as values.

Redirects

By default, 301 or 302 redirects will be followed for idempotent methods. There are certain cases where you may want to disable this, for example: ::

import soundcloud

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

Will print a tracks streaming URL. If allow_redirects was omitted, a binary stream would be returned instead.

Running Tests

To run the tests, run: ::

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

Success!

Contributing

Contributions are awesome. You are most welcome to submit issues,
or fork the repository
.

soundcloud-python is published under a BSD License_.

.. _submit issues: https://github.com/soundcloud/soundcloud-python/issues
.. _fork the repository: https://github.com/soundcloud/soundcloud-python
.. _BSD License: https://github.com/soundcloud/soundcloud-python/blob/master/README

主要指標

概覽
名稱與所有者soundcloud/soundcloud-python
主編程語言Python
編程語言Python (語言數: 1)
平台
許可證BSD 2-Clause "Simplified" License
所有者活动
創建於2020-05-13 14:47:30
推送於2024-02-05 19:44:16
最后一次提交2024-02-05 20:44:15
發布數0
用户参与
星數106
關注者數77
派生數31
提交數113
已啟用問題?
問題數0
打開的問題數0
拉請求數1
打開的拉請求數1
關閉的拉請求數1
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?