jeudi 16 février 2012

[Python snippet] SoundCloud Searcher & Downloader (Improvable)

# Name:    Soundcloud downloader & searcher (Based on Xartrick's Soundcloud Downloader)
# Version: 0.1
# Author:  nowz (Based on Xartrick's Soundcloud Downloader)


import os
import sys
import urllib2
import re

from urllib import urlretrieve

def fGetBetween(sString, sStart, sEnd):
 sSplit = sString.split(sStart)
 sSplit = sSplit[1].split(sEnd)
 
 return sSplit[0]
 
def fConvertString(sString):
 for i in range(32, 127):  
  sString = sString.replace("\\u00" + hex(i)[2 : 4].upper() + "amp;", chr(i)) # ASCII only
 
 return sString

def affichemenu():
    print ("------------------------(SEARCH)------------------------")
    print ("USAGE: %s search [what you search]" % (sys.argv[0]))
    print ("EXEMPLE: %s search Skrillex dubstep" % (sys.argv[0]))
    print ("-----------------------(DOWNLOAD)-----------------------")
    print ("USAGE: %s download [url]" % (sys.argv[0]))
    print ("EXEMPLE: %s download http://soundcloud.com/ill-gates/bassnectar-ill-gates-probable\n" % (sys.argv[0]))

def main(argv):
    if len(sys.argv) < 3:
        affichemenu()
        
    if len(sys.argv) >= 3:
        
        if sys.argv[1] == "search":
            search = "%20".join(str(i) for i in sys.argv[2:len(sys.argv)])
            search2 = " ".join(str(i) for i in sys.argv[2:len(sys.argv)])
            print ("[+] Recherche au sujet de : %s" % (search2))
            f = urllib2.urlopen("http://soundcloud.com/search?q[fulltext]=%s" % (search))
            data = f.read()
            gruik = re.findall("<a href=\"(.*)\">(.*)</a></h3>", data, re.I)
            number=0
            for i in gruik:
                print ("[#%s] Titre : %s \nLien: http://soundcloud.com%s" % (number+1, gruik[number][1], gruik[number][0]))
                number = number + 1
            
        elif sys.argv[1] == "download":
            sURL = sys.argv[2]
            oURL = urllib2.urlopen(sURL)
            sPage = oURL.read()
            sInformation = fGetBetween(sPage, "window.SC.bufferTracks.push({", "}});")
            sAuthor = fConvertString(fGetBetween(sInformation, '"username":"', '",'))
            sName = fConvertString(fGetBetween(sInformation, '"title":"', '",'))
            sLink = fGetBetween(sInformation, '"streamUrl":"', '",')
            sFile = os.getcwd() + "/" + sAuthor + " - " + sName + ".mp3"
            urlretrieve(sLink, sFile)
            print("\nAuthor: %s"   % (sAuthor))
            print("Name:   %s" % (sName))
            print("Link:   %s"   % (sLink)) 
            
        else:
            affichemenu()
        
    
    
if __name__ == "__main__":
    main(sys.argv[1:])

Aucun commentaire:

Enregistrer un commentaire