Как загрузить файлы в Soundcloud с помощью Python? - PullRequest
6 голосов
/ 31 января 2012

Я создаю приложение, которое будет записывать то, что говорят люди, генерировать аудио-файл и загружать его в SoundCloud и получать URL-адрес загруженного трека с помощью Python.

Я использовал PyAudio для записи и создания аудиофайл - волновой файл.

Но мне нужно знать, как загрузить файл в SoundCloud.Проведя исследования, я обнаружил, что есть Python-оболочка для SoundCloud API, а с помощью библиотеки Python Poster можно легко загружать файлы в SoundCloud.

Как мне это сделать?Я не использовал этот API-интерфейс раньше, и я не нашел подходящего учебника или руководства, как его использовать.Так что если кто-нибудь может мне помочь с этим, пожалуйста, ответьте на мой вопрос здесь.

Как использовать обертку SoundCloud Python API для загрузки файлов в SoundCloud с помощью Python с помощью библиотеки Python Poster ?

1 Ответ

7 голосов
/ 12 февраля 2012

Мы только что выпустили новую оболочку Python API. Вы можете получить его на PyPi или на нашей учетной записи Github . Чтобы загрузить дорожку, сначала необходимо получить токен доступа, используя один из поддерживаемых потоков аутентификации OAuth2. Вы можете прочитать об этом в файле README . Дайте мне знать, если вы хотите, чтобы я уточнил аутентификацию, и я могу отредактировать свой ответ.

Чтобы получить токен доступа, сначала зарегистрируйте свое приложение на soundcloud.com . Вам нужно будет указать URI, на который пользователи будут перенаправлены после авторизации вашего приложения, и вам будет присвоен идентификатор клиента и секрет клиента. Получив эти учетные данные, передайте их конструктору 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')
})

Вы получите ресурс трека, который затем сможете использовать для получения URL-адреса Soundcloud:

print track.permalink_url

Надеюсь, это поможет! Дайте мне знать, если у вас есть какие-либо вопросы.

...