6 require 'constantes.rb'
8 require 'modules/allocine.rb'
10 # ajout de deux méthodes à la classe String
13 return gsub(/<(.*?)>/, '')
21 # Permet de charger des données depuis allocine.fr
22 # Permet d'effectuer des recherches depuis allocine.fr
25 # toutes les données membres sont accessibles par défaut (écriture/lecture)
26 attr_accessor
:id, :titre, :url, :fichiers, :mod, :annee, :realisateurs, :acteurs, :pays, :duree, :critiquePresse, :critiqueSpectateur, :genres, :synopsis, :budget
28 # Constructeur. N'entreprend aucune action (chargement), crée juste un film vide.
29 # p1 [String] : le fichier correspondant au film
30 def initialize(fichier
, mod
)
31 @fichiers = [] # le chemin des fichiers est relatif au repertoire de base
32 @fichiers << fichier
if fichier !
= nil && fichier !
= ''
44 @critiqueSpectateur = nil
53 # mémorise les tuples {nom => id} dans le cas ou il y a plusieurs choix de films après une recherche
65 # Est-ce qu'il y a eu plusieurs réponses pour ce film lors de la cherche sur le net ?
66 def plusieursReponses
?
67 return @nbReponses > 1
70 # Est-ce qu'il y a eu plusieurs réponses pour ce film lors de la cherche sur le net ?
75 # Demande à l'utilisateur de faire un choix.
76 # ret : 1 si le conflit à été résolu, 2 si le film est à ignorer, 3 si tout les films sont à ignorer
77 def reglerConflitPlusieursReponses
80 puts
" -> " +
@fichiers[0]
81 puts
"Fais ton choix jeune padawan (un caractère et pas plus)"
91 puts
"A. Passer et l'ajouter"
93 puts
"C. Tout ignorer"
105 if choix
> 0 && choix
<= tabNoms
.length
109 puts
"Choix pas bon !!
"
113 @mod.load(@choix[tabNoms[choix-1]], self)
118 # Ajoute un fichier comme faisant partie du film
119 def addFichier(fichier)
120 if !@fichiers.include?(fichier
)
125 # Charge les informations du films à partir d'allocine.fr
128 #extrait le nom à partir du nom du fichier
129 /^.*?([^\/]*?)\
.(.{3,4})$/ =~
@fichiers[0]
130 #remplace undescores et points par des espaces
131 titre
= $1.gsub(/[_\.]/, ' ')
132 #remplace les suites d'espaces par un seul
133 titre
.gsub!
(/ {2,}/,' ')
134 titre
.gsub!
(/\[.*?\]/,' ')
135 titre
.gsub!
(/\(.*?\)/,' ')
136 titre
.gsub!
(/\{.*?\}/,' ')
137 #vire les espaces au début et à la fin
146 reponses
= @mod.rechercherFilm(titre
)
147 @nbReponses = reponses
.size
150 @mod.load(reponses
.values
[0], self)
159 return $repBase +
"/" +
$repAffichette +
@id.to_s +
".jpg";
163 f
= File
::new(cheminImage
, 'w').binmode
169 return File
::exist?(cheminImage
)
172 # Met à jour un ou plusieurs champs correspondant à 'champ'.
174 return if @url == nil || @url == ""
176 @mod.loadURL(@url, self)
179 # Renvoie un film sous la forme d'un élément XML .
180 # ret [REXML::Element] : un element xml <film>
183 racine
= REXML
::Element::new('film')
184 racine
.add_attribute('id', @id.to_s
)
186 fichiers
= REXML
::Element::new('fichiers')
188 fichiers
.add(REXML
::Element::new('fichier').add_text(f
))
192 racine
.add(REXML
::Element::new('titre').add_text(@titre))
193 racine
.add(REXML
::Element::new('annee').add_text(@annee))
195 realisateurs
= REXML
::Element::new('realisateurs')
196 @realisateurs.each
{|r
|
197 realisateurs
.add(REXML
::Element::new('realisateur').add_text(r
.nom
))
199 racine
.add(realisateurs
)
201 acteurs
= REXML
::Element::new('acteurs')
203 acteurs
.add(REXML
::Element::new('acteur').add_text(a
.nom
))
207 lespays
= REXML
::Element::new('lespays')
209 lespays
.add(REXML
::Element::new('pays').add_text(p
.nom
))
213 racine
.add(REXML
::Element::new('duree').add_text(@duree.to_s
))
215 racine
.add(REXML
::Element::new('critiquePresse').add_text(@critiquePresse))
216 racine
.add(REXML
::Element::new('critiqueSpectateur').add_text(@critiqueSpectateur))
218 genres
= REXML
::Element::new('genres')
220 genres
.add(REXML
::Element::new('genre').add_text(g
.nom
))
224 synopsisElement
= REXML
::Element::new('synopsis')
225 unless @synopsis.nil?
226 @synopsis.split("\n").each
{|s
|
228 synopsisElement
.add(REXML
::Element::new('p').add_text(s
))
231 racine
.add(synopsisElement
)
233 budgetElement
= REXML
::Element::new('budget')
234 budgetElement
.add_text(@budget)
235 budgetElement
.add_attribute('unite', @budgetUnite)
236 racine
.add(budgetElement
)
238 racine
.add(REXML
::Element::new('url').add_text(@url))