James Dunn
James Dunn

Reputation: 59

How to download private Soundcloud track with access token in bash script

I have generated a list of Soundcloud track id's with the following python code:

import soundcloud
import urllib

client = soundcloud.Client(client_id='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
                       client_secret='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
                       username='XXXXXXXXXXXXXXXXXXXXXXXXXX',
                       password='XXXXXXXXXXXXXXXXXX')

f=open('soundcloud-track-ids', 'w+')

count = 0
while count < 6000:
    tracks = client.get('/me/tracks', limit=200, offset=count)
    for track in tracks:
        print >>f, track.id, "\t", track.title .encode('utf-8')
    count += 200

f.close()

I have then run a bash script to backup the entire archive to contents to a hard drive:

#!/bin/bash

SAVEIFS=$IFS
IFS=$(echo -en "\n\b")

while read line; do
    if [ ! -f /mnt/drobo_1/Soundcloud/$(echo $line | cut -f 2- | sed 's,/,\ ,g').mp3 ];     then
        wget https://api.soundcloud.com/tracks/"$(echo $line | awk '{print $1}')"/download?oauth_token=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX \
        -O /mnt/drobo_1/Soundcloud/"$(echo $line | cut -f 2- | sed 's,/,\ ,g').mp3"
    fi
done < ./soundcloud-track-ids

IFS=$SAVEIFS

Nearly all of the 5317 tracks are private, and most have downloaded without a problem, however about 600 tracks have failed to download with the following error:

--2015-01-05 12:46:09--  https://api.soundcloud.com/tracks/152288957/download?oauth_token=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Resolving api.soundcloud.com (api.soundcloud.com)... 93.184.220.127
Connecting to api.soundcloud.com (api.soundcloud.com)|93.184.220.127|:443... connected.
HTTP request sent, awaiting response... 404 Not Found
2015-01-05 12:46:10 ERROR 404: Not Found.

Does anyone know what the error could be?

Upvotes: 4

Views: 4368

Answers (1)

Liam Gretton
Liam Gretton

Reputation: 380

That 404 error is saying the file couldn't be found at SoundCloud's end. It could be SoundCloud's rate limiter doing this, preventing you from hammering it so much.

See https://developers.soundcloud.com/docs/api/terms-of-use#quotas

If you try those failed downloads later, do they work?

Upvotes: 1

Related Questions