end\r
end\r
\r
-# un module d'importation pour le site "www.allocine.fr"\r
+# Un module d'importation pour le site "www.allocine.fr".\r
class Allocine < Basemodule\r
\r
def createConnexion\r
@connexion = nil\r
end\r
\r
- # voir le parent.\r
+ # Voir le parent.\r
def rechercherFilm(titre)\r
createConnexion\r
\r
\r
reponses = {}\r
unless titre.nil? or titre.empty?\r
- r = html.scan(/<a href="\/film\/fichefilm_gen_cfilm=(\d+)\.html" class="link1">(.*?)<\/a>(?:<\/h4><h5 style="color: #666666"> (.*?)<\/h5>){0,1}(?:<h4><br \/><\/h4>){0,1}(?:<h4 style="color: #666666"> de (.*?)<\/h4>){0,1}(?:<h4 style="color: #666666"> avec (.*?)<\/h4>){0,1}(?:<h4 style="color: #666666"> \((.*?)\)<\/h4>){0,1}/)\r
-\r
+ r = html.scan(/<h4><a href="\/film\/fichefilm_gen_cfilm=(\d+)\.html".*?>(.*?)<\/a><\/h4>(?:<h5><a .*?> (.*?)<\/a><\/h5>)?(?:<div.*?><h4.*?>(\d*?){4}<\/h4><\/div>)?(?:<div.*?><h5.*?>de (.*?)<\/h5><\/div>)?(?:<div.*?><h5.*?>avec (.*?)<\/h5><\/div>)?/)\r
+ # 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
r.each{|f|\r
- 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]\r
+ 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]\r
}\r
end\r
reponses\r
\r
# Voir le parent.\r
def load(id, film) \r
- loadPath("/film/fichefilm_gen_cfilm=#{id}.html")\r
+ loadPath("/film/fichefilm_gen_cfilm=#{id}.html", film)\r
end\r
\r
+ # Voir le parent.\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
\r
puts "Pompage de #{film.titre} (#{film.fichiers[0]}) ..."\r
\r
- #convertit le code latin-1 en UTF8 \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
+ \r
+ # pompage de l'image dans un thread séparé\r
+ if take?("image") && ($force || !film.possedeImage?)\r
/<img src="(.*?)" border="0" alt="" class="affichette" \/>/ =~ html\r
unless $1.nil?\r
@threadImage = Thread::start($1){|imageUrl|\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
+ film.setImage(connexionImage.get(imageUrlParsed.path).body)\r
connexionImage.finish\r
rescue Exception => e\r
puts e.message\r
end\r
end\r
\r
- #url\r
- if take?("url")\r
+ if take?("url") && ($force || film.url == nil)\r
+ #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
+ film.titre = $1\r
end\r
\r
- if take?("annee") \r
+ if take?("annee") && ($force || film.annee == nil) \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
+ if take?("realisateurs") && ($force || film.realisateurs.empty?) \r
# Réalisateurs\r
film.realisateurs.clear\r
/<h4>Réalisé par(.*?)<\/h4>/ =~ html\r
} unless $1.nil?\r
end\r
\r
- if take?("acteurs")\r
+ if take?("acteurs") && ($force || film.acteurs.empty?) \r
# Acteurs\r
film.acteurs.clear\r
/<h4>Avec(.*?)<\/h4>/ =~ html\r
} unless $1.nil? \r
end\r
\r
- if take?("pays")\r
+ if take?("pays") && ($force || film.pays.empty?) \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
+ film.pays << Pays::ajouter(pays.strip) unless pays.nil?\r
} unless $1.nil? \r
end\r
\r
- if take?("duree")\r
+ if take?("duree") && ($force || film.duree == nil) \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
film.duree = heure * 60 + min\r
end\r
\r
- if take?("critiquenote")\r
+ if take?("critiquenote") && ($force || film.critiquePresse == nil || film.critiqueSpectateur == nil) \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
+ if take?("genres") && ($force || film.genres.empty?) \r
# Genre\r
film.genres.clear\r
/<h4>Genre : (.*?)<\/h4>/ =~ html\r
} unless $1.nil? \r
end\r
\r
- if take?("synopsis")\r
+ if take?("synopsis") && ($force || film.synopsis == nil) \r
# Synopsis \r
/Synopsis.*?<h4>(.*?)<\/h4>/m =~ html\r
unless $1.nil?\r
end\r
end\r
\r
- if take?("budget")\r
+ if take?("budget") && ($force || film.budget == nil) \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
+ end\r
\r
def finish\r
+ # on attend que tous les threads de pompage d'image aient terminé\r
@threadImage.join if defined? @threadImage\r
end\r
end
\ No newline at end of file