Soyez le premier à donner votre avis sur cette source.
Snippet vu 2 851 fois - Téléchargée 13 fois
#!/usr/bin/python # -*- coding: utf-8 -*- import mechanize import cookielib import urllib import bs4 as BeautifulSoup import time,sys,os import zipfile class Connection: def __init__(self): self.nomArtiste="" self.listeAlbum=[] # Browser self.br = mechanize.Browser() # Cookie Jar self.cj = cookielib.LWPCookieJar() self.br.set_cookiejar(self.cj) # Browser options self.br.set_handle_equiv(True) self.br.set_handle_redirect(True) self.br.set_handle_referer(True) self.br.set_handle_robots(False) def saisirArtiste(self): print "Saisir le nom de l'artiste rechercher" recherche=raw_input("Recherche: t") self.nomArtisteDossier=recherche.title() self.nomArtiste=recherche.split() assemble="" for mot in self.nomArtiste: assemble=assemble+"-"+mot self.nomArtiste=assemble def rechercheArtiste(self): r = self.br.open('http://mp3boo.me/search'+self.nomArtiste) self.html = r.read() self.soup = BeautifulSoup.BeautifulSoup(self.html) h2=self.soup.find_all('h2') h2=str(h2) if h2[5]=='0': print "Erreur dans la recherche n" return False def htmlParser1(self): self.albumdiv=self.soup.find_all('div',attrs={"class":u"album"}) for self.div in self.albumdiv: div=self.div.find('a') titre=div.text lien=str(div).split()[1][6:-1] self.listeAlbum.append([{'titre':titre},{'lien':lien}]) def htmlParser2(self): print "nRecherche du lien et telechargementnn" self.soup = BeautifulSoup.BeautifulSoup(self.html) self.lienZip=self.soup.find_all('div',attrs={"class":"download-album"}) self.lienZip=str(self.lienZip).split()[4][24:-2] #print self.lienZip def selectionnerAlbum(self): affichage=self.nomArtiste.split('-') affichage=" ".join(affichage) print "nn==== %s ===="%affichage.title() print "==========="+"="*len(affichage) for i,album in enumerate(self.listeAlbum): print str(i+1)+"-"+album[0]['titre'] choixOk=False while(choixOk is False): self.choix=raw_input("n Selectionner un album:t") if int(self.choix)-1 <0 or int(self.choix)-1>= len(self.listeAlbum): print "Le n° d'album n'existe pas" else: self.lienPage=self.listeAlbum[int(self.choix)-1][1]['lien'] return True def lienAlbum(self): #print self.lienPage r = self.br.open(self.lienPage) self.html = r.read() def telechargement(self): self.nomFichier=self.listeAlbum[int(self.choix)-1][0]['titre']+".zip" print "Debut du telechargement" print"========================" print self.nomFichier+':' urllib.urlretrieve(self.lienZip,self.nomFichier,self.reporthook) print "nFin du telechargement nn" return self.nomFichier def reporthook(self,count, block_size, total_size): global start_time calculBlock=CalculBlock() if count == 0: start_time = time.time() return duration = time.time() - start_time progress_size = int(count * block_size) speed = int(progress_size / (1024 * duration)) percent = int(count * block_size * 100 / total_size) calculBlock.calcul(percent) sys.stdout.write("r %d MB/ %d MB, %d KB/s, %s %d%% %s" % (progress_size / (1024 * 1024),total_size/(1024*1024) ,speed, calculBlock.ConvertirDuree(duration),percent,calculBlock.affichage())) sys.stdout.flush() class CalculBlock: def __init__(self): self.nombreOk="#" self.nombreNo="-" self.progressBar="[]" def affichage(self): self.progressBar="["+self.nombreOk*"#"+self.nombreNo*"-"+"]" return self.progressBar def calcul(self,percent): nb=30 self.nombreOk=percent*nb/100 self.nombreNo=nb-self.nombreOk def ConvertirDuree(self,duration): return time.strftime('%Hh %Mmin %Ssec', time.gmtime(duration)) class Decompression: def extractionFichier(self,fichier,artiste): password="www.mp3boo.com" zfile = zipfile.ZipFile(fichier) dossier=artiste+" : "+fichier[:-4] dirname=os.getcwd()+"/"+dossier os.mkdir(dirname) for name in zfile.namelist(): zfile.setpassword(password) print "Decompression de " + name + " dans " + dossier zfile.extract(name, dirname) #Programme Principale artisteTrouver=False connection=Connection() decompression=Decompression() while artisteTrouver is False: connection.saisirArtiste() artisteTrouver=connection.rechercheArtiste() connection.htmlParser1() lien=connection.selectionnerAlbum() connection.lienAlbum() connection.htmlParser2() fichier=connection.telechargement() decompression.extractionFichier(fichier,connection.nomArtisteDossier)
25 mai 2015 à 18:48
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.