2012-01-31 39 views
6

Tôi đang xây dựng một ứng dụng ghi lại những gì mọi người nói, tạo tệp âm thanh và tải tệp đó lên SoundCloud và nhận URL của bản nhạc được tải lên bằng Python.Cách tải tệp lên Soundcloud bằng Python?

Tôi đã sử dụng PyAudio để ghi và tạo tệp âm thanh - tệp sóng.

Nhưng tôi cần biết cách tải tệp lên SoundCloud. Theo nghiên cứu tôi tìm thấy có một wrapper Python cho SoundCloud API và với thư viện Python Poster, người ta có thể dễ dàng tải các tập tin lên SoundCloud.

Tôi làm cách nào? Tôi đã không sử dụng điều API này trước và tôi không tìm thấy một hướng dẫn thích hợp hoặc một hướng dẫn để làm thế nào để sử dụng nó. Vì vậy, nếu có ai có thể giúp tôi với điều này, hãy trả lời câu hỏi của tôi ở đây.

Cách sử dụng SoundCloud Python API wrapper này để tải tệp lên SoundCloud bằng Python với sự trợ giúp của thư viện Python Poster?

Trả lời

7

Chúng tôi vừa phát hành trình bao bọc API Python mới. Bạn có thể lấy nó trên PyPi hoặc từ số Github account của chúng tôi. Để tải lên bản nhạc, trước tiên bạn sẽ muốn nhận mã thông báo truy cập bằng một trong các luồng xác thực OAuth2 được hỗ trợ. Bạn có thể đọc về điều đó trong README file. Hãy cho tôi biết nếu bạn muốn tôi xây dựng trên auth và tôi có thể chỉnh sửa câu trả lời của tôi.

Để nhận mã thông báo truy cập, trước tiên register your application on soundcloud.com. Bạn sẽ cần phải cung cấp một URI mà người dùng sẽ được chuyển đến sau khi cho phép ứng dụng của bạn và bạn sẽ nhận được một id khách hàng và bí mật của khách hàng. Sau khi bạn có các thông tin đăng nhập đó, hãy chuyển chúng tới nhà xây dựng khách hàng:

import soundcloud 
client = soundcloud.Client(client_id=YOUR_CLIENT_ID, 
          client_secret=YOUR_CLIENT_SECRET, 
          redirect_uri="http://your/redirect/uri") 

Sau đó bạn sẽ có thể chuyển hướng người dùng đến URL ủy quyền để ủy quyền cho ứng dụng của bạn. Người dùng sẽ được gửi đến soundcloud.com để đăng nhập (nếu họ không có phiên hoạt động) và phê duyệt quyền truy cập cho ứng dụng của bạn. Tùy thuộc vào khuôn khổ bạn đang sử dụng (ví dụ như Django, Flask, vv) nó có thể trông giống như thế này:

return redirect(client.authorize_url) 

Sau khi phê duyệt truy cập cho ứng dụng của bạn, người dùng sẽ được chuyển hướng đến các uri chuyển hướng bạn chỉ định khi đăng ký ứng dụng của bạn và trong hàm tạo. URL sẽ có chuỗi truy vấn bao gồm thông số 'mã' mà sau đó bạn có thể sử dụng để lấy mã thông báo truy cập. Một lần nữa, tùy thuộc vào khuôn khổ bạn đang sử dụng, điều này có thể trông như thế này:

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 

Bạn có lẽ nên lưu trữ các thẻ truy cập (ví dụ trong một số loại lưu trữ dữ liệu như MySQL hoặc Redis) để bạn có thể sử dụng nó bất cứ khi nào người dùng đó muốn truy cập SoundCloud trong tương lai.

Khi bạn đã có mã thông báo truy cập, việc tải lên bản nhạc phải khá đơn giản. Khi bạn đã có tệp âm thanh của mình, chỉ cần gửi yêu cầu POST tới tài nguyên bản nhạc. Dưới đây là một ví dụ:

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') 
}) 

Bạn sẽ nhận lại một nguồn lực theo dõi, sau đó bạn có thể sử dụng để có được URL Soundcloud:

print track.permalink_url 

Hy vọng rằng sẽ giúp! Hãy cho tôi biết nếu bạn có bất kỳ câu hỏi.

+0

Cảm ơn rất nhiều @Paul! Nó thực sự hữu ích! Và vâng, tôi muốn nghe thêm về auth và về cách lấy mã thông báo truy cập .. Nó sẽ giúp tôi rất nhiều .. – vijay

+0

Không có vấn đề vijay. Tôi vừa chỉnh sửa câu trả lời của mình để bao gồm chi tiết về OAuth2. –

+0

Điều đó hoạt động tốt! Cảm ơn rất nhiều @paul! – vijay

Các vấn đề liên quan