Quite a while back I decided to
practice bash by creating a script to download Soundcloud songs. Many scripts out there for this purpose only allow you to download songs where the downloading is enabled by the content author. My goal was to replicate what the browser sees and follow the convoluted process to downloading the actual mp3, regardless of whether downloading was permitted. (Which kinda violates Soundcloud's ToS, somewhere.) This
eventually became a script to download either songs or entire playlists.
The problem with bash was that it's really not meant for this sort of
job. At about 140 LoC it is rather unwieldy and also breaks every time
Soundcloud changes something or the operating system changes. In fact I
couldn't even get it to work on a different computer (Mac).
So I switched to Python recently, and that script works for most cases,
except where songs are encoded with RTMP, so I'm stuck for those songs
since I can't figure out how to instantiate a proper POST request +
cookies object. As of now the script will download just the song in the
source, and even that not always (RTMP issues).
Bash Script
Updated July 2016 - Python Script
Note: You will definitely need to edit the regex and other formatting in the Bash Script. But do not despair; I downloaded
about a GB-worth of songs from soundcloud with the playlist downloading part.