6 require "basemodule.rb"
8 # un mixin pour allocine
9 class Allocine
< Basemodule
12 def rechercherFilm(titre
)
13 Thread
.current
["connexion"] = Net
::HTTP::new('www.allocine.fr') if Thread
.current
["connexion"].nil?
14 connexion
= Thread
.current
["connexion"]
19 reponse
, donneesHtml
= connexion
.get("/recherche/?rub=1&motcle=#{CGI::escape(Iconv.iconv("ISO-8859-1", "UTF-8", titre)[0])}")
22 puts
"[!] Connexion lost
, retry.."
26 #convertit le code latin-1 en UTF8
27 donneesHtml = Iconv.iconv("UTF-8
", "ISO-8859-1
", donneesHtml)[0]
29 #si pas trouvé alors on enlève un mot à la fin
30 if /.*?Pas de résultats.*?/ =~ donneesHtml || ! donneesHtml
.include?("<h3><b>Films <h4>")
31 /(.*?)[^ ]+?$/ =~ titre
.strip
37 end while not titre
.nil? and not titre
.empty
?
40 unless titre
.nil? or titre
.empty
?
42 r
= donneesHtml
.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}/)
45 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]
53 Thread
.current
["connexion"] = Net
::HTTP::new('www.allocine.fr') if Thread
.current
["connexion"].nil?
54 connexion
= Thread
.current
["connexion"]
56 r
, ficheHtml
= connexion
.get("/film/fichefilm_gen_cfilm=#{id}.html")
58 #convertit le code latin-1 en UTF8
59 ficheHtml
= Iconv
.iconv("UTF-8", "ISO-8859-1", ficheHtml
)[0]
62 film
.url
= "http://www.allocine.fr/film/fichefilm_gen_cfilm=#{id}.html"
65 /<title>(.*?)<\/title
>/ =~ ficheHtml
66 film
.titre
= $1 unless $1.nil?
68 puts
"Movie found : #{film.titre} (#{film.fichiers[0]})"
71 /<h4>Année de production : (\d+)<\/h4
>/ =~ ficheHtml
72 film
.annee
= $1 unless $1.nil?
75 /<h4>Réalisé par(.*?)<\/h4
>/ =~ ficheHtml
76 $1.scan(/\s*<a class="link1" href=".*?">(.*?)<\/a
>\s
*/m
){|a
|
77 film
.realisateurs
<< Personne
::ajouter(a
[0]) unless a
[0].nil?
81 /<h4>Avec(.*?)<\/h4
>/ =~ ficheHtml
82 $1.scan(/\s*<a class="link1" href="\/personne\
/fichepersonne_gen_cpersonne=\d+\.html">(.+?)<\/a
>\s
*/m
){|a
|
83 film
.acteurs
<< Personne
::ajouter(a
[0]) unless a
[0].nil?
87 /<h4>Film (.*?)\. <\/h4
>/ =~ ficheHtml
88 $1.split(',').each
{|pays
|
89 film
.pays
<< Pays
::ajouter(pays
) unless pays
.nil?
92 # Duree (capture des heures et des minutes séparement vue que c'est le bordel sur allocine
93 /<h4>Durée :(?:.*?)(\d+)h/ =~ ficheHtml
94 heure
= $1.nil? ? 0 : $1.to_i
96 /<h4>Durée :(?:.*?)(\d+)min/ =~ ficheHtml
97 min
= $1.nil? ? 0 : $1.to_i
99 film
.duree
= heure
* 60 + min
101 # Critiques presse et spectateur
102 /Presse.*etoile_([012345]).*Spectateurs.*etoile_([012345])"/m
=~ ficheHtml
103 film
.critiquePresse
= $1 unless $1.nil?
104 film
.critiqueSpectateur
= $2 unless $2.nil?
107 /<h4>Genre : (.*?)<\/h4
>/ =~ ficheHtml
108 $1.scan(/<a href="\/film\
/alaffiche_genre_gen_genre=.*?" class="link1">(.+?)<\/a
>/m
){|g
|
109 film
.genres
<< Genre
::ajouter(g
[0]) unless g
[0].nil?
113 /Synopsis.*?<h4>(.*?)<\/h4
>/m
=~ ficheHtml
116 film
.synopsis
.gsub!
(/<br\s*\/>|<br\s
*>/, "\n")
117 film
.synopsis
.virerBalisesHTML!
121 /Budget<\/b
> : (.+
?) millions d
'euros<\/h4>/ =~ ficheHtml
122 film.budget = $1 unless $1.nil?