MOD Petites modifs peux significatives
[pompage.git] / src / modules / allocine.rb
index 5a4e759..c26c214 100644 (file)
@@ -20,7 +20,7 @@ module Net
    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
@@ -37,7 +37,7 @@ class Allocine  < Basemodule
       @connexion = nil\r
    end\r
    \r
-   # voir le parent.\r
+   # Voir le parent.\r
    def rechercherFilm(titre)\r
       createConnexion\r
       \r
@@ -79,14 +79,14 @@ class Allocine  < Basemodule
    \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
@@ -103,10 +103,11 @@ class Allocine  < Basemodule
       \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
@@ -114,10 +115,7 @@ class Allocine  < Basemodule
                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
@@ -129,24 +127,24 @@ class Allocine  < Basemodule
          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
@@ -155,7 +153,7 @@ class Allocine  < Basemodule
          } 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
@@ -164,7 +162,7 @@ class Allocine  < Basemodule
          } 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 (.*?)\.&nbsp;<\/h4>/ =~ html\r
@@ -173,7 +171,7 @@ class Allocine  < Basemodule
          } 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
@@ -182,14 +180,14 @@ class Allocine  < Basemodule
          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
@@ -198,7 +196,7 @@ class Allocine  < Basemodule
          } 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
@@ -208,16 +206,17 @@ class Allocine  < Basemodule
          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