X-Git-Url: http://git.euphorik.ch/?a=blobdiff_plain;f=src%2Fmodules%2Fallocine.rb;h=1a28000f705b5de3bfeb01e8a6686d309e4f0b3e;hb=2cf96462fb75a5e95cf70ac288e8ffd08aad29de;hp=5a4e759a51646b1902ca5d55b125bfd26a3edf2b;hpb=5b3fa6fac8a53d1ce7d43d6c506db104a42c206a;p=pompage.git diff --git a/src/modules/allocine.rb b/src/modules/allocine.rb index 5a4e759..1a28000 100644 --- a/src/modules/allocine.rb +++ b/src/modules/allocine.rb @@ -20,7 +20,7 @@ module Net end end -# un module d'importation pour le site "www.allocine.fr" +# Un module d'importation pour le site "www.allocine.fr". class Allocine < Basemodule def createConnexion @@ -37,7 +37,7 @@ class Allocine < Basemodule @connexion = nil end - # voir le parent. + # Voir le parent. def rechercherFilm(titre) createConnexion @@ -68,10 +68,15 @@ class Allocine < Basemodule reponses = {} unless titre.nil? or titre.empty? - r = html.scan(/(.*?)<\/a>(?:<\/h4>
 (.*?)<\/h5>){0,1}(?:


<\/h4>){0,1}(?:

de (.*?)<\/h4>){0,1}(?:

 avec (.*?)<\/h4>){0,1}(?:

 \((.*?)\)<\/h4>){0,1}/) - + r = html.scan(/

(.*?)<\/a><\/h4>(?:
 (.*?)<\/a><\/h5>)?(?:(\d*?){4}<\/h4><\/div>)?(?:de (.*?)<\/h5><\/div>)?(?:avec (.*?)<\/h5><\/div>)?/) + # f[0] : l'id allocine du film + # f[1] : nom + # f[2] : nom original + # f[3] : année + # f[4] : réalisateur + # f[5] : acteurs r.each{|f| - reponses[f[1].virerBalisesHTML + (f[2] != nil ? " " + f[2].virerBalisesHTML : "") + (f[3] != nil ? " de " + f[3].virerBalisesHTML : "") + (f[4] != nil ? " avec " + f[4].virerBalisesHTML : "") + (f[5] != nil ? " (" + f[5].virerBalisesHTML + ")" : "")] = f[0] + reponses[f[1].virerBalisesHTML + (f[2] != nil ? " " + f[2].virerBalisesHTML : "") + (f[4] != nil ? " de " + f[4].virerBalisesHTML : "") + (f[5] != nil ? " avec " + f[5].virerBalisesHTML : "") + (f[3] != nil ? " (" + f[3].virerBalisesHTML + ")" : "")] = f[0] } end reponses @@ -79,14 +84,14 @@ class Allocine < Basemodule # Voir le parent. def load(id, film) - loadPath("/film/fichefilm_gen_cfilm=#{id}.html") + loadPath("/film/fichefilm_gen_cfilm=#{id}.html", film) end + # Voir le parent. def loadURL(url, film) loadPath(URI.parse(url).path, film) end - # Voir le parent. def loadPath(path, film) createConnexion @@ -103,10 +108,11 @@ class Allocine < Basemodule puts "Pompage de #{film.titre} (#{film.fichiers[0]}) ..." - #convertit le code latin-1 en UTF8 + # convertit le code latin-1 en UTF8 html = Iconv.iconv("UTF-8", "ISO-8859-1", html)[0] - - if take?("image") + + # pompage de l'image dans un thread séparé + if take?("image") && ($force || !film.possedeImage?) // =~ html unless $1.nil? @threadImage = Thread::start($1){|imageUrl| @@ -114,10 +120,7 @@ class Allocine < Basemodule begin imageUrlParsed = URI.parse(imageUrl) connexionImage = Net::HTTP::new(imageUrlParsed.host).start - image = connexionImage.get(imageUrlParsed.path).body - f = File::new($repBase + "/" + $repAffichette + film.id.to_s + ".jpg", 'w').binmode - f.write(image) - f.close + film.setImage(connexionImage.get(imageUrlParsed.path).body) connexionImage.finish rescue Exception => e puts e.message @@ -129,24 +132,24 @@ class Allocine < Basemodule end end - #url - if take?("url") + if take?("url") && ($force || film.url == nil) + #url film.url = "http://www.allocine.fr" + path end if take?("titre") # Titre /(.*?)<\/title>/ =~ html - film.titre = $1 unless $1.nil? + film.titre = $1 end - if take?("annee") + if take?("annee") && ($force || film.annee == nil) # Année /<h4>Année de production : (\d+)<\/h4>/ =~ html film.annee = $1 unless $1.nil? end - if take?("realisateurs") + if take?("realisateurs") && ($force || film.realisateurs.empty?) # Réalisateurs film.realisateurs.clear /<h4>Réalisé par(.*?)<\/h4>/ =~ html @@ -155,7 +158,7 @@ class Allocine < Basemodule } unless $1.nil? end - if take?("acteurs") + if take?("acteurs") && ($force || film.acteurs.empty?) # Acteurs film.acteurs.clear /<h4>Avec(.*?)<\/h4>/ =~ html @@ -164,16 +167,16 @@ class Allocine < Basemodule } unless $1.nil? end - if take?("pays") + if take?("pays") && ($force || film.pays.empty?) # Pays film.pays.clear /<h4>Film (.*?)\. <\/h4>/ =~ html $1.split(',').each{|pays| - film.pays << Pays::ajouter(pays) unless pays.nil? + film.pays << Pays::ajouter(pays.strip) unless pays.nil? } unless $1.nil? end - if take?("duree") + if take?("duree") && ($force || film.duree == nil) # Duree (capture des heures et des minutes séparement vue que c'est le bordel sur allocine /<h4>Durée :(?:.*?)(\d+)h/ =~ html heure = $1.nil? ? 0 : $1.to_i @@ -182,14 +185,14 @@ class Allocine < Basemodule film.duree = heure * 60 + min end - if take?("critiquenote") + if take?("critiquenote") && ($force || film.critiquePresse == nil || film.critiqueSpectateur == nil) # Critiques presse et spectateur /Presse.*etoile_([012345]).*Spectateurs.*etoile_([012345])"/m =~ html film.critiquePresse = $1 unless $1.nil? film.critiqueSpectateur = $2 unless $2.nil? end - if take?("genre") + if take?("genres") && ($force || film.genres.empty?) # Genre film.genres.clear /<h4>Genre : (.*?)<\/h4>/ =~ html @@ -198,7 +201,7 @@ class Allocine < Basemodule } unless $1.nil? end - if take?("synopsis") + if take?("synopsis") && ($force || film.synopsis == nil) # Synopsis /Synopsis.*?<h4>(.*?)<\/h4>/m =~ html unless $1.nil? @@ -208,16 +211,17 @@ class Allocine < Basemodule end end - if take?("budget") + if take?("budget") && ($force || film.budget == nil) # Budget /Budget<\/b> : (.+?) millions d'euros<\/h4>/ =~ html film.budget = $1 unless $1.nil? end fermerConnexion - end + end def finish + # on attend que tous les threads de pompage d'image aient terminé @threadImage.join if defined? @threadImage end end \ No newline at end of file