2012-01-31 4 views
6

Sto costruendo un'applicazione che registra ciò che la gente dice, genera un file audio e lo carica su SoundCloud e ottiene l'URL della traccia caricata usando Python.Come caricare file su Soundcloud usando Python?

Ho usato PyAudio per registrare e generare un file audio - un file wave.

Ma ho bisogno di sapere come caricare il file su SoundCloud. Con la ricerca ho scoperto che esiste un wrapper Python per l'API SoundCloud e con la libreria Python Poster, è possibile caricare facilmente i file su SoundCloud.

Come faccio? Non ho usato questa cosa API prima e non trovo un tutorial adeguato o una guida su come utilizzarlo. Quindi se qualcuno mi può aiutare con questo, per favore rispondi alla mia domanda qui.

Come utilizzare questo SoundCloud Python API wrapper per caricare file su SoundCloud utilizzando Python con l'aiuto della libreria Python Poster?

risposta

7

Abbiamo appena rilasciato un nuovo wrapper API Python. Puoi acquistarlo su PyPi o dal nostro Github account. Per caricare una traccia, devi prima ottenere un token di accesso utilizzando uno dei flussi di autenticazione OAuth2 supportati. Puoi leggere al riguardo nel numero README file. Fammi sapere se vuoi che io approfondisca l'autenticazione e posso modificare la mia risposta.

Per ottenere un token di accesso, il primo register your application on soundcloud.com. Dovrai fornire un URI a cui gli utenti verranno indirizzati dopo aver autorizzato la tua applicazione e ti verrà dato un ID client e un segreto client. Una volta che hai queste credenziali, passarli al costruttore Cliente:

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

Sarai quindi in grado di reindirizzare l'utente all'URL di autorizzazione al fine di autorizzare la vostra applicazione. L'utente verrà inviato a soundcloud.com per accedere (se non ha una sessione attiva) e approvare l'accesso per la tua app. In base al quadro che si sta utilizzando (ad esempio Django, Flask, ecc) potrebbe essere simile a questa:

return redirect(client.authorize_url) 

Dopo aver approvato l'accesso per la vostra applicazione, l'utente verrà reindirizzato al uri reindirizzamento specificato al momento della registrazione la tua app e nel costruttore. L'URL avrà una stringa di query che include un parametro "codice" che è possibile utilizzare per ottenere un token di accesso. Anche in questo caso, a seconda del quadro che si sta utilizzando, questo potrebbe essere la seguente:

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 

probabilmente si dovrebbe archiviare il token di accesso (vale a dire in una sorta di archivio di dati come MySQL o Redis) in modo da poter usare ogni volta quell'utente desidera accedere a SoundCloud in futuro.

Una volta ottenuto un token di accesso, il caricamento di una traccia dovrebbe essere piuttosto semplice. Una volta ottenuto il file audio, invia semplicemente una richiesta POST alla risorsa tracce. Ecco un esempio:

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

Otterrai una risorsa pista, che è possibile utilizzare per ottenere l'URL Soundcloud:

print track.permalink_url 

Speranza che aiuta! Fatemi sapere se avete domande.

+0

Grazie mille @Paul! E 'stato davvero utile! E sì, mi piacerebbe saperne di più su auth e su come ottenere il token di accesso .. Mi sarebbe di grande aiuto .. – vijay

+0

Nessun problema vijay. Ho appena modificato la mia risposta per includere dettagli su OAuth2. –

+0

Ha funzionato bene! Grazie mille @paul! – vijay