end\r
end\r
\r
-\r
# un module d'importation pour le site "www.allocine.fr"\r
class Allocine < Basemodule\r
\r
def createConnexion\r
- @connexion = Net::HTTP::new('www.allocine.fr').start if @connexion == nil || !@connexion.started?\r
+ begin\r
+ @connexion = Net::HTTP::new('www.allocine.fr').start if @connexion == nil || !@connexion.started?\r
+ rescue \r
+ Puts "[!] Impossible de se connecter à Allocine. Retry.."\r
+ retry\r
+ end\r
end\r
\r
def fermerConnexion \r
# voir le parent.\r
def rechercherFilm(titre)\r
createConnexion\r
-\r
+ \r
begin\r
reponse = nil\r
begin\r
\r
# Voir le parent.\r
def load(id, film) \r
+ loadPath("/film/fichefilm_gen_cfilm=#{id}.html")\r
+ end\r
+ \r
+ def loadURL(url, film)\r
+ loadPath(URI.parse(url).path, film)\r
+ end\r
+ \r
+ # Voir le parent.\r
+ def loadPath(path, film)\r
createConnexion\r
\r
html = nil\r
begin\r
- html = @connexion.get("/film/fichefilm_gen_cfilm=#{id}.html").body \r
+ html = @connexion.get(path).body \r
rescue Exception => e\r
p e\r
puts "[!] Erreur lors du chargement de #{film.fichiers[0]}, retry.."\r
createConnexion\r
retry\r
end\r
- \r
- /<img src="(.*?)" border="0" alt="" class="affichette" \/>/ =~ html\r
- unless $1.nil?\r
- @threadImage = Thread::start($1){|imageUrl|\r
- nbRetry = 0\r
- begin\r
- imageUrl = URI.parse(imageUrl) \r
- connexionImage = Net::HTTP::new(imageUrl.host).start\r
- image = connexionImage.get(imageUrl.path).body\r
- f = File::new($repBase + "/" + $repAffichette + film.id.to_s + ".jpg", 'w').binmode\r
- f.write(image)\r
- f.close\r
- connexionImage.finish\r
- rescue Exception => e\r
- puts e.message\r
- puts e.backtrace \r
- puts "[!] Erreur lors du chargement de l'image '#{imageUrl}', retry.." \r
- retry if (nbRetry += 1) < 5 \r
- end\r
- }\r
- end\r
-\r
+ \r
+ puts "Pompage de #{film.titre} (#{film.fichiers[0]}) ..."\r
+ \r
#convertit le code latin-1 en UTF8 \r
html = Iconv.iconv("UTF-8", "ISO-8859-1", html)[0]\r
+ \r
+ if take?("image")\r
+ /<img src="(.*?)" border="0" alt="" class="affichette" \/>/ =~ html\r
+ unless $1.nil?\r
+ @threadImage = Thread::start($1){|imageUrl|\r
+ nbRetry = 0\r
+ begin\r
+ imageUrlParsed = URI.parse(imageUrl) \r
+ connexionImage = Net::HTTP::new(imageUrlParsed.host).start\r
+ image = connexionImage.get(imageUrlParsed.path).body\r
+ f = File::new($repBase + "/" + $repAffichette + film.id.to_s + ".jpg", 'w').binmode\r
+ f.write(image)\r
+ f.close\r
+ connexionImage.finish\r
+ rescue Exception => e\r
+ puts e.message\r
+ puts e.backtrace \r
+ puts "[!] Erreur lors du chargement de l'image '#{imageUrl}', retry.." \r
+ retry if (nbRetry += 1) < 5 \r
+ end\r
+ }\r
+ end\r
+ end\r
+\r
#url\r
- film.url = "http://www.allocine.fr/film/fichefilm_gen_cfilm=#{id}.html"\r
- \r
- # Titre\r
- /<title>(.*?)<\/title>/ =~ html\r
- film.titre = $1 unless $1.nil?\r
- \r
- puts "Movie found : #{film.titre} (#{film.fichiers[0]})"\r
- \r
- # Année\r
- /<h4>Année de production : (\d+)<\/h4>/ =~ html\r
- film.annee = $1 unless $1.nil?\r
- \r
- # Réalisateurs\r
- /<h4>Réalisé par(.*?)<\/h4>/ =~ html\r
- $1.scan(/\s*<a class="link1" href=".*?">(.*?)<\/a>\s*/m){|a|\r
- film.realisateurs << Personne::ajouter(a[0]) unless a[0].nil?\r
- } unless $1.nil?\r
- \r
- # Acteurs\r
- /<h4>Avec(.*?)<\/h4>/ =~ html\r
- $1.scan(/\s*<a class="link1" href="\/personne\/fichepersonne_gen_cpersonne=\d+\.html">(.+?)<\/a>\s*/m){|a|\r
- film.acteurs << Personne::ajouter(a[0]) unless a[0].nil? \r
- } unless $1.nil? \r
- \r
- # Pays\r
- /<h4>Film (.*?)\. <\/h4>/ =~ html\r
- $1.split(',').each{|pays|\r
- film.pays << Pays::ajouter(pays) unless pays.nil?\r
- } unless $1.nil? \r
- \r
- # Duree (capture des heures et des minutes séparement vue que c'est le bordel sur allocine\r
- /<h4>Durée :(?:.*?)(\d+)h/ =~ html\r
- heure = $1.nil? ? 0 : $1.to_i\r
- \r
- /<h4>Durée :(?:.*?)(\d+)min/ =~ html\r
- min = $1.nil? ? 0 : $1.to_i\r
- \r
- film.duree = heure * 60 + min\r
- \r
- # Critiques presse et spectateur\r
- /Presse.*etoile_([012345]).*Spectateurs.*etoile_([012345])"/m =~ html\r
- film.critiquePresse = $1 unless $1.nil?\r
- film.critiqueSpectateur = $2 unless $2.nil?\r
- \r
- # Genre\r
- /<h4>Genre : (.*?)<\/h4>/ =~ html\r
- $1.scan(/<a href="\/film\/alaffiche_genre_gen_genre=.*?" class="link1">(.+?)<\/a>/m){|g|\r
- film.genres << Genre::ajouter(g[0]) unless g[0].nil?\r
- } unless $1.nil? \r
- \r
- # Synopsis \r
- /Synopsis.*?<h4>(.*?)<\/h4>/m =~ html\r
- unless $1.nil?\r
- film.synopsis = $1\r
- film.synopsis.gsub!(/<br\s*\/>|<br\s*>/, "\n")\r
- film.synopsis.virerBalisesHTML!\r
- end\r
- \r
- # Budget \r
- /Budget<\/b> : (.+?) millions d'euros<\/h4>/ =~ html\r
- film.budget = $1 unless $1.nil?\r
+ if take?("url")\r
+ film.url = "http://www.allocine.fr" + path\r
+ end\r
+ \r
+ if take?("titre")\r
+ # Titre\r
+ /<title>(.*?)<\/title>/ =~ html\r
+ film.titre = $1 unless $1.nil?\r
+ end\r
+ \r
+ if take?("annee") \r
+ # Année\r
+ /<h4>Année de production : (\d+)<\/h4>/ =~ html\r
+ film.annee = $1 unless $1.nil?\r
+ end\r
+ \r
+ if take?("realisateurs")\r
+ # Réalisateurs\r
+ film.realisateurs.clear\r
+ /<h4>Réalisé par(.*?)<\/h4>/ =~ html\r
+ $1.scan(/\s*<a class="link1" href=".*?">(.*?)<\/a>\s*/m){|a|\r
+ film.realisateurs << Personne::ajouter(a[0]) unless a[0].nil?\r
+ } unless $1.nil?\r
+ end\r
+ \r
+ if take?("acteurs")\r
+ # Acteurs\r
+ film.acteurs.clear\r
+ /<h4>Avec(.*?)<\/h4>/ =~ html\r
+ $1.scan(/\s*<a class="link1" href="\/personne\/fichepersonne_gen_cpersonne=\d+\.html">(.+?)<\/a>\s*/m){|a|\r
+ film.acteurs << Personne::ajouter(a[0]) unless a[0].nil? \r
+ } unless $1.nil? \r
+ end\r
+ \r
+ if take?("pays")\r
+ # Pays\r
+ film.pays.clear\r
+ /<h4>Film (.*?)\. <\/h4>/ =~ html\r
+ $1.split(',').each{|pays|\r
+ film.pays << Pays::ajouter(pays) unless pays.nil?\r
+ } unless $1.nil? \r
+ end\r
+ \r
+ if take?("duree")\r
+ # Duree (capture des heures et des minutes séparement vue que c'est le bordel sur allocine\r
+ /<h4>Durée :(?:.*?)(\d+)h/ =~ html\r
+ heure = $1.nil? ? 0 : $1.to_i \r
+ /<h4>Durée :(?:.*?)(\d+)min/ =~ html\r
+ min = $1.nil? ? 0 : $1.to_i \r
+ film.duree = heure * 60 + min\r
+ end\r
+ \r
+ if take?("critiquenote")\r
+ # Critiques presse et spectateur\r
+ /Presse.*etoile_([012345]).*Spectateurs.*etoile_([012345])"/m =~ html\r
+ film.critiquePresse = $1 unless $1.nil?\r
+ film.critiqueSpectateur = $2 unless $2.nil?\r
+ end\r
+ \r
+ if take?("genre")\r
+ # Genre\r
+ film.genres.clear\r
+ /<h4>Genre : (.*?)<\/h4>/ =~ html\r
+ $1.scan(/<a href="\/film\/alaffiche_genre_gen_genre=.*?" class="link1">(.+?)<\/a>/m){|g|\r
+ film.genres << Genre::ajouter(g[0]) unless g[0].nil?\r
+ } unless $1.nil? \r
+ end\r
+ \r
+ if take?("synopsis")\r
+ # Synopsis \r
+ /Synopsis.*?<h4>(.*?)<\/h4>/m =~ html\r
+ unless $1.nil?\r
+ film.synopsis = $1\r
+ film.synopsis.gsub!(/<br\s*\/>|<br\s*>/, "\n")\r
+ film.synopsis.virerBalisesHTML!\r
+ end\r
+ end\r
+ \r
+ if take?("budget")\r
+ # Budget \r
+ /Budget<\/b> : (.+?) millions d'euros<\/h4>/ =~ html\r
+ film.budget = $1 unless $1.nil?\r
+ end\r
\r
fermerConnexion\r
end \r