-# Représente un Film.\r
-# Permet de charger des données depuis allocine.fr\r
-# Permet d'effectuer des recherches depuis allocine.fr\r
-# TODO : rendre la classe indépendant de la source de donnée pour pouvoir utiliser d'autres sites comme par exemple imdb.com\r
+# coding: utf-8\r
\r
require 'pays.rb'\r
require 'genre.rb'\r
end\r
end\r
\r
+# Représente un Film.\r
+# Permet de charger des données depuis allocine.fr\r
+# Permet d'effectuer des recherches depuis allocine.fr\r
class Film\r
- \r
- def Film::setModule(m)\r
- @@module = m\r
- end\r
- \r
+ \r
# toutes les données membres sont accessibles par défaut (écriture/lecture)\r
- attr_accessor :id, :titre, :url, :fichiers, :annee, :realisateurs, :acteurs, :pays, :duree, :critiquePresse, :critiqueSpectateur, :genres, :synopsis, :budget\r
+ attr_accessor :id, :titre, :url, :fichiers, :mod, :annee, :realisateurs, :acteurs, :pays, :duree, :critiquePresse, :critiqueSpectateur, :genres, :synopsis, :budget\r
\r
# Constructeur. N'entreprend aucune action (chargement), crée juste un film vide.\r
# p1 [String] : le fichier correspondant au film\r
- def initialize(fichier)\r
- @fichiers = [fichier] # le chemin des fichiers est relatif au repertoire de base\r
+ def initialize(fichier, mod)\r
+ @fichiers = [] # le chemin des fichiers est relatif au repertoire de base\r
+ @fichiers << fichier if fichier != nil && fichier != ''\r
+ \r
+ @mod = mod\r
\r
@id = 0\r
@titre = ''\r
@synopsis = nil\r
@budget = nil \r
@budgetUnite = 'euro'\r
- @url\r
+ @url = nil\r
\r
@nbReponses = 0\r
\r
# mémorise les tuples {nom => id} dans le cas ou il y a plusieurs choix de films après une recherche\r
@choix = {}\r
end\r
+ \r
+ def titre=(t)\r
+ if t == nil\r
+ @titre = ""\r
+ else\r
+ @titre = t\r
+ end\r
+ end\r
\r
# Est-ce qu'il y a eu plusieurs réponses pour ce film lors de la cherche sur le net ?\r
def plusieursReponses?\r
end \r
\r
# Demande à l'utilisateur de faire un choix.\r
- # ret : true si le conflit à été résolu sinon false\r
+ # ret : 1 si le conflit à été résolu, 2 si le film est à ignorer, 3 si tout les films sont à ignorer\r
def reglerConflitPlusieursReponses\r
@nbReponses = 1\r
\r
puts "#{i}. #{n}"\r
i += 1\r
}\r
+ puts "______"\r
puts "A. Passer et l'ajouter"\r
puts "B. Ignorer"\r
+ puts "C. Tout ignorer"\r
choix = STDIN.gets\r
\r
if /A/i =~ choix\r
- return true\r
+ return 1\r
elsif /B/i =~ choix\r
- return false\r
+ return 2\r
+ elsif /C/i =~ choix\r
+ return 3\r
end\r
\r
choix = choix.to_i\r
end\r
end\r
\r
- @@module.load(@choix[tabNoms[choix-1]], self)\r
+ @mod.load(@choix[tabNoms[choix-1]], self)\r
\r
- return true\r
+ return 1\r
end\r
\r
# Ajoute un fichier comme faisant partie du film\r
titre = $1.gsub(/[_\.]/, ' ')\r
#remplace les suites d'espaces par un seul\r
titre.gsub!(/ {2,}/,' ')\r
- titre.gsub!(/\[.*?\]/,'')\r
- titre.gsub!(/\(.*?\)/,'')\r
- titre.gsub!(/\{.*?\}/,'')\r
- #vire les espaces au début et à la fin\r
+ titre.gsub!(/\[.*?\]/,' ')\r
+ titre.gsub!(/\(.*?\)/,' ')\r
+ titre.gsub!(/\{.*?\}/,' ')\r
+ # vire les espaces au début et à la fin\r
titre.strip!\r
\r
@titre = titre.dup\r
return self\r
end\r
\r
- reponses = @@module.rechercherFilm(titre)\r
+ reponses = @mod.rechercherFilm(titre)\r
@nbReponses = reponses.size\r
\r
if @nbReponses == 1\r
- @@module.load(reponses.values[0], self)\r
+ @mod.load(reponses.values[0], self)\r
else\r
@choix = reponses \r
end\r
self\r
end\r
\r
+ def cheminImage\r
+ return $repBase + "/" + $repAffichette + @id.to_s + ".jpg";\r
+ end\r
+ \r
+ def setImage(image)\r
+ f = File::new(cheminImage, 'w').binmode\r
+ f.write(image)\r
+ f.close\r
+ end\r
+ \r
+ def possedeImage?\r
+ return File::exist?(cheminImage)\r
+ end\r
+ \r
+ # Met à jour un ou plusieurs champs correspondant à 'champ'.\r
+ def update(champ)\r
+ return if @url == nil || @url == ""\r
+ @mod.setChamp(champ)\r
+ @mod.loadURL(@url, self)\r
+ end\r
+ \r
# Renvoie un film sous la forme d'un élément XML .\r
# ret [REXML::Element] : un element xml <film>\r
def getXml\r
\r
racine = REXML::Element::new('film')\r
racine.add_attribute('id', @id.to_s)\r
- \r
+\r
fichiers = REXML::Element::new('fichiers')\r
@fichiers.each{|f|\r
fichiers.add(REXML::Element::new('fichier').add_text(f)) \r
}\r
- racine.add(fichiers) \r
- \r
+ racine.add(fichiers)\r
+\r
racine.add(REXML::Element::new('titre').add_text(@titre))\r
racine.add(REXML::Element::new('annee').add_text(@annee))\r
\r
\r
racine\r
end\r
+\r
+ def to_s \r
+ acc = "'#{@titre}'\n" +\r
+ " id = #{@id}\n" +\r
+ " annee = #{@annee}\n" +\r
+ " réalisateurs :\n"\r
+ @realisateurs.each{|r|\r
+ acc += " - " + r.to_s\r
+ }\r
+ acc += " acteurs :\n"\r
+ @acteurs.each{|a|\r
+ acc += " - " + a.to_s\r
+ }\r
+ acc += " pays :\n"\r
+ @pays.each{|p|\r
+ acc += " - " + p.to_s\r
+ }\r
+ acc += " genres :\n"\r
+ @genres.each{|g|\r
+ acc += " - " + g.to_s\r
+ }\r
+ acc += " fichiers :\n"\r
+ @fichiers.each{|f|\r
+ acc += " - " + f + "\n"\r
+ }\r
+ \r
+ acc += " durée : #{@duree}\n"\r
+ acc += " critique presse : #{@critiquePresse}\n"\r
+ acc += " critique specatateur : #{@critiqueSpectateur}\n"\r
+ acc += " synopsis : #{@synopsis}\n"\r
+ acc += " budget : #{@budget} #{@budgetUnite}\n"\r
+ acc += " url : #{@url}\n" \r
+\r
+ return acc\r
+ end\r
end\r
-
\ No newline at end of file
+ \r