X-Git-Url: http://git.euphorik.ch/?p=pompage.git;a=blobdiff_plain;f=src%2Fmodules%2Fallocine.rb;fp=src%2Fmodules%2Fallocine.rb;h=5a4e759a51646b1902ca5d55b125bfd26a3edf2b;hp=23a26b890ba26ba735f6ecfc7e50fb44f51182cb;hb=5b3fa6fac8a53d1ce7d43d6c506db104a42c206a;hpb=28e1ecf7c5b45d5deeb87d488f32d44e0ea2fd11 diff --git a/src/modules/allocine.rb b/src/modules/allocine.rb index 23a26b8..5a4e759 100644 --- a/src/modules/allocine.rb +++ b/src/modules/allocine.rb @@ -20,7 +20,6 @@ module Net end end - # un module d'importation pour le site "www.allocine.fr" class Allocine < Basemodule @@ -28,7 +27,7 @@ class Allocine < Basemodule begin @connexion = Net::HTTP::new('www.allocine.fr').start if @connexion == nil || !@connexion.started? rescue - Puts "Impossible de se connecter à Allocine. Retry.." + Puts "[!] Impossible de se connecter à Allocine. Retry.." retry end end @@ -80,11 +79,20 @@ class Allocine < Basemodule # Voir le parent. def load(id, film) + loadPath("/film/fichefilm_gen_cfilm=#{id}.html") + end + + def loadURL(url, film) + loadPath(URI.parse(url).path, film) + end + + # Voir le parent. + def loadPath(path, film) createConnexion html = nil begin - html = @connexion.get("/film/fichefilm_gen_cfilm=#{id}.html").body + html = @connexion.get(path).body rescue Exception => e p e puts "[!] Erreur lors du chargement de #{film.fichiers[0]}, retry.." @@ -92,92 +100,119 @@ class Allocine < Basemodule createConnexion retry end - - // =~ html - unless $1.nil? - @threadImage = Thread::start($1){|imageUrl| - nbRetry = 0 - 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 - connexionImage.finish - rescue Exception => e - puts e.message - puts e.backtrace - puts "[!] Erreur lors du chargement de l'image '#{imageUrl}', retry.." - retry if (nbRetry += 1) < 5 - end - } - end - + + puts "Pompage de #{film.titre} (#{film.fichiers[0]}) ..." + #convertit le code latin-1 en UTF8 html = Iconv.iconv("UTF-8", "ISO-8859-1", html)[0] + + if take?("image") + // =~ html + unless $1.nil? + @threadImage = Thread::start($1){|imageUrl| + nbRetry = 0 + 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 + connexionImage.finish + rescue Exception => e + puts e.message + puts e.backtrace + puts "[!] Erreur lors du chargement de l'image '#{imageUrl}', retry.." + retry if (nbRetry += 1) < 5 + end + } + end + end + #url - film.url = "http://www.allocine.fr/film/fichefilm_gen_cfilm=#{id}.html" - - # Titre - /(.*?)<\/title>/ =~ html - film.titre = $1 unless $1.nil? - - puts "Movie found : #{film.titre} (#{film.fichiers[0]})" - - # Année - /<h4>Année de production : (\d+)<\/h4>/ =~ html - film.annee = $1 unless $1.nil? - - # Réalisateurs - /<h4>Réalisé par(.*?)<\/h4>/ =~ html - $1.scan(/\s*<a class="link1" href=".*?">(.*?)<\/a>\s*/m){|a| - film.realisateurs << Personne::ajouter(a[0]) unless a[0].nil? - } unless $1.nil? - - # Acteurs - /<h4>Avec(.*?)<\/h4>/ =~ html - $1.scan(/\s*<a class="link1" href="\/personne\/fichepersonne_gen_cpersonne=\d+\.html">(.+?)<\/a>\s*/m){|a| - film.acteurs << Personne::ajouter(a[0]) unless a[0].nil? - } unless $1.nil? - - # Pays - /<h4>Film (.*?)\. <\/h4>/ =~ html - $1.split(',').each{|pays| - film.pays << Pays::ajouter(pays) unless pays.nil? - } unless $1.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 - - /<h4>Durée :(?:.*?)(\d+)min/ =~ html - min = $1.nil? ? 0 : $1.to_i - - film.duree = heure * 60 + min - - # Critiques presse et spectateur - /Presse.*etoile_([012345]).*Spectateurs.*etoile_([012345])"/m =~ html - film.critiquePresse = $1 unless $1.nil? - film.critiqueSpectateur = $2 unless $2.nil? - - # Genre - /<h4>Genre : (.*?)<\/h4>/ =~ html - $1.scan(/<a href="\/film\/alaffiche_genre_gen_genre=.*?" class="link1">(.+?)<\/a>/m){|g| - film.genres << Genre::ajouter(g[0]) unless g[0].nil? - } unless $1.nil? - - # Synopsis - /Synopsis.*?<h4>(.*?)<\/h4>/m =~ html - unless $1.nil? - film.synopsis = $1 - film.synopsis.gsub!(/<br\s*\/>|<br\s*>/, "\n") - film.synopsis.virerBalisesHTML! - end - - # Budget - /Budget<\/b> : (.+?) millions d'euros<\/h4>/ =~ html - film.budget = $1 unless $1.nil? + if take?("url") + film.url = "http://www.allocine.fr" + path + end + + if take?("titre") + # Titre + /<title>(.*?)<\/title>/ =~ html + film.titre = $1 unless $1.nil? + end + + if take?("annee") + # Année + /<h4>Année de production : (\d+)<\/h4>/ =~ html + film.annee = $1 unless $1.nil? + end + + if take?("realisateurs") + # Réalisateurs + film.realisateurs.clear + /<h4>Réalisé par(.*?)<\/h4>/ =~ html + $1.scan(/\s*<a class="link1" href=".*?">(.*?)<\/a>\s*/m){|a| + film.realisateurs << Personne::ajouter(a[0]) unless a[0].nil? + } unless $1.nil? + end + + if take?("acteurs") + # Acteurs + film.acteurs.clear + /<h4>Avec(.*?)<\/h4>/ =~ html + $1.scan(/\s*<a class="link1" href="\/personne\/fichepersonne_gen_cpersonne=\d+\.html">(.+?)<\/a>\s*/m){|a| + film.acteurs << Personne::ajouter(a[0]) unless a[0].nil? + } unless $1.nil? + end + + if take?("pays") + # Pays + film.pays.clear + /<h4>Film (.*?)\. <\/h4>/ =~ html + $1.split(',').each{|pays| + film.pays << Pays::ajouter(pays) unless pays.nil? + } unless $1.nil? + end + + if take?("duree") + # 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 + /<h4>Durée :(?:.*?)(\d+)min/ =~ html + min = $1.nil? ? 0 : $1.to_i + film.duree = heure * 60 + min + end + + if take?("critiquenote") + # 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") + # Genre + film.genres.clear + /<h4>Genre : (.*?)<\/h4>/ =~ html + $1.scan(/<a href="\/film\/alaffiche_genre_gen_genre=.*?" class="link1">(.+?)<\/a>/m){|g| + film.genres << Genre::ajouter(g[0]) unless g[0].nil? + } unless $1.nil? + end + + if take?("synopsis") + # Synopsis + /Synopsis.*?<h4>(.*?)<\/h4>/m =~ html + unless $1.nil? + film.synopsis = $1 + film.synopsis.gsub!(/<br\s*\/>|<br\s*>/, "\n") + film.synopsis.virerBalisesHTML! + end + end + + if take?("budget") + # Budget + /Budget<\/b> : (.+?) millions d'euros<\/h4>/ =~ html + film.budget = $1 unless $1.nil? + end fermerConnexion end