2012-01-31 23 views
6

我正在構建一個應用程序,用於記錄人們說什麼,生成音頻文件並將其上傳到SoundCloud,並使用Python獲取上載軌道的URL。如何使用Python將文件上傳到Soundcloud?

我用PyAudio來記錄並生成一個音頻文件 - 一個波形文件。

但我需要知道如何將文件上傳到SoundCloud。通過研究,我發現有一個SoundCloud API的Python包裝器和Python庫海報,可以很容易地將文件上傳到SoundCloud。

我該怎麼做?我之前沒有使用過這個API,也沒有找到適當的教程或如何使用它的指南。所以如果有人能幫助我,請在這裏回答我的問題。

如何使用此SoundCloud Python API wrapper上傳文件到SoundCloud使用Python在Python庫的幫助下Poster

回答

7

我們剛剛發佈了一個新的Python API包裝器。你可以在PyPi或從我們的Github account得到它。要上傳曲目,您需要先使用其中一種受支持的OAuth2身份驗證流獲取訪問令牌。您可以在README file中閱讀。讓我知道你是否想要我詳細說明auth,並且我可以編輯我的答案。

要獲取訪問令牌,首先需要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的,燒瓶等),它可能看起來像這樣的框架:

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的數據存儲的IE)所以你可以使用它時,該用戶將來希望訪問SoundCloud。

獲得訪問令牌後,上傳曲目應該非常簡單。獲得音頻文件後,只需向POST資源發送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網址:

print track.permalink_url 

希望幫助!如果您有任何問題,請告訴我。

+0

非常感謝@Paul!這真的很有幫助!是的,我想聽取更多有關身份驗證以及如何獲取訪問令牌的信息..它會幫助我很多.. – vijay 2012-02-14 18:17:09

+0

沒問題vijay。我剛剛編輯了我的答案以包含有關OAuth2的詳細信息。 – 2012-02-15 18:36:05

+0

這工作得很好!非常感謝@paul! – vijay 2012-02-20 08:56:28

相關問題