ADD mise à jour de la liste des films
[pompage.git] / src / film.rb
index a282441..24e37b8 100644 (file)
@@ -1,7 +1,4 @@
-# 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
@@ -20,19 +17,21 @@ class String
    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
@@ -47,13 +46,21 @@ class Film
       @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
@@ -80,6 +87,7 @@ class Film
            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
@@ -102,7 +110,7 @@ class Film
          end\r
       end\r
       \r
-      @@module.load(@choix[tabNoms[choix-1]], self)\r
+      @mod.load(@choix[tabNoms[choix-1]], self)\r
       \r
       return 1\r
    end\r
@@ -123,10 +131,10 @@ class Film
       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
@@ -135,11 +143,11 @@ class Film
          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
@@ -147,19 +155,40 @@ class Film
       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
@@ -210,5 +239,40 @@ class Film
 \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