Soundcloud Downloader

Bien le bonsoir !

Ça commençait à faire un bout de temps que je n'avais pas poster sur ce site un petit script alakon permettant de jouer les vilains pirates voleurs de musique ! Je vais donc rectifier la chose ce soir en vous proposant un script python permettant de télécharger les sons d'une page soundcloud, c'est bien entendu largement améliorable, mais pour une chose pondue vite fait mal fait c'est déjà pas mal ;)

Le script récupère tout les titres disponibles sur une page soundcloud, les enregistre sur l'ordinateur au format auteur-titre.mp3 et la banane sur le kiwi, tag le mp3 pour qu'on puisse le retrouver facilement dans son lecteur multimédia préféré !

A noter que la librairie mutagen permettant le tag des mp3 à la volée n'est pas fournie avec python, donc pour que le script fonctionne sans soucis il suffit de commenter la partie tagging ;)

Voici donc le bousin :

  # Name:    Soundcloud Download
  # Version: 0.1
  # Author:  y0no (Based on n0wz soundcloud Downloader)

  import os
  import sys
  import urllib2
  import re
  import json

  from mutagen.mp3 import EasyMP3
  from urllib import urlretrieve

  def affichemenu():
      print ("-----------------------(DOWNLOAD)-----------------------")
      print ("USAGE: %s [url]" % (sys.argv[0]))
      print ("EXEMPLE: %s http://soundcloud.com/dexisfeelingbad\n" % (sys.argv[0]))

  def main(argv):

      if len(sys.argv) >= 2:
              sURL = sys.argv[1]
              oURL = urllib2.urlopen(sURL)
              sPage = oURL.read()
              sTracksList = re.findall("window.SC.bufferTracks.push\((.*?)\)", sPage)
              if sTracksList:
                  for sTrack in sTracksList:
                      sTrack = json.loads(sTrack)
                      sName = sTrack['title']
                      sAuthor = sTrack['user']['username']
                      sLink = sTrack['streamUrl']
                      sFile = os.getcwd() + "/" + sAuthor + " - " + sName + ".mp3"

                      print("\nAuthor: %s"   % (sAuthor))
                      print("Name:   %s" % (sName))
                      print("Link:   %s"   % (sLink))
                      print("Download... :"),
                      urlretrieve(sLink, sFile)
                      print("Done")

                      ####### id3tag (optional) #######
                      song = EasyMP3(sFile)
                      song['title'] = sName
                      song['artist'] = sAuthor
                      song['album'] = "SoundCloud"
                      song.save()
                      ##################################
              else:
                  print("\nNo track found...")
      else:
          affichemenu()


  if __name__ == "__main__":
      main(sys.argv[1:])