ADD Ajout de la possibilité de mettre à jour des champs de la bd
[pompage.git] / src / modules / allocine.rb
index 23a26b8..5a4e759 100644 (file)
@@ -20,7 +20,6 @@ module Net
    end\r
 end\r
 \r
-\r
 # un module d'importation pour le site "www.allocine.fr"\r
 class Allocine  < Basemodule\r
    \r
@@ -28,7 +27,7 @@ class Allocine  < Basemodule
       begin\r
          @connexion = Net::HTTP::new('www.allocine.fr').start if @connexion == nil || !@connexion.started?\r
       rescue \r
-         Puts "Impossible de se connecter à Allocine. Retry.."\r
+         Puts "[!] Impossible de se connecter à Allocine. Retry.."\r
          retry\r
       end\r
    end\r
@@ -80,11 +79,20 @@ class Allocine  < Basemodule
    \r
    # Voir le parent.\r
    def load(id, film)   \r
+      loadPath("/film/fichefilm_gen_cfilm=#{id}.html")\r
+   end\r
+   \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
       html = nil\r
       begin\r
-         html = @connexion.get("/film/fichefilm_gen_cfilm=#{id}.html").body \r
+         html = @connexion.get(path).body \r
       rescue Exception => e\r
          p e\r
          puts "[!] Erreur lors du chargement de #{film.fichiers[0]}, retry.."\r
@@ -92,92 +100,119 @@ class Allocine  < Basemodule
          createConnexion\r
          retry\r
       end\r
-         \r
-      /<img src="(.*?)" border="0" alt="" class="affichette" \/>/ =~ html\r
-      unless $1.nil?\r
-         @threadImage = Thread::start($1){|imageUrl|\r
-            nbRetry = 0\r
-            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
-               connexionImage.finish\r
-            rescue Exception => e\r
-               puts e.message\r
-               puts e.backtrace    \r
-               puts "[!] Erreur lors du chargement de l'image '#{imageUrl}', retry.."        \r
-               retry if (nbRetry += 1) < 5               \r
-            end\r
-         }\r
-      end\r
-\r
+      \r
+      puts "Pompage de #{film.titre} (#{film.fichiers[0]}) ..."\r
+      \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
+         /<img src="(.*?)" border="0" alt="" class="affichette" \/>/ =~ html\r
+         unless $1.nil?\r
+            @threadImage = Thread::start($1){|imageUrl|\r
+               nbRetry = 0\r
+               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
+                  connexionImage.finish\r
+               rescue Exception => e\r
+                  puts e.message\r
+                  puts e.backtrace    \r
+                  puts "[!] Erreur lors du chargement de l'image '#{imageUrl}', retry.."        \r
+                  retry if (nbRetry += 1) < 5               \r
+               end\r
+            }\r
+         end\r
+      end\r
+\r
       #url\r
-      film.url = "http://www.allocine.fr/film/fichefilm_gen_cfilm=#{id}.html"\r
-      \r
-      # Titre\r
-      /<title>(.*?)<\/title>/ =~ html\r
-      film.titre = $1 unless $1.nil?\r
-      \r
-      puts "Movie found : #{film.titre} (#{film.fichiers[0]})"\r
-      \r
-      # Année\r
-      /<h4>Année de production : (\d+)<\/h4>/ =~ html\r
-      film.annee = $1 unless $1.nil?\r
-      \r
-      # Réalisateurs\r
-      /<h4>Réalisé par(.*?)<\/h4>/ =~ html\r
-      $1.scan(/\s*<a class="link1" href=".*?">(.*?)<\/a>\s*/m){|a|\r
-         film.realisateurs << Personne::ajouter(a[0]) unless a[0].nil?\r
-      } unless $1.nil?\r
-      \r
-      # Acteurs\r
-      /<h4>Avec(.*?)<\/h4>/ =~ html\r
-      $1.scan(/\s*<a class="link1" href="\/personne\/fichepersonne_gen_cpersonne=\d+\.html">(.+?)<\/a>\s*/m){|a|\r
-         film.acteurs << Personne::ajouter(a[0]) unless a[0].nil? \r
-      } unless $1.nil? \r
-                \r
-      # Pays\r
-      /<h4>Film (.*?)\.&nbsp;<\/h4>/ =~ html\r
-      $1.split(',').each{|pays|\r
-         film.pays << Pays::ajouter(pays) unless pays.nil?\r
-      } unless $1.nil? \r
-      \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
-      \r
-      /<h4>Durée :(?:.*?)(\d+)min/ =~ html\r
-      min = $1.nil? ? 0 : $1.to_i\r
-         \r
-      film.duree = heure * 60 + min\r
-      \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
-      \r
-      # Genre\r
-      /<h4>Genre : (.*?)<\/h4>/ =~ html\r
-      $1.scan(/<a href="\/film\/alaffiche_genre_gen_genre=.*?" class="link1">(.+?)<\/a>/m){|g|\r
-         film.genres << Genre::ajouter(g[0]) unless g[0].nil?\r
-      } unless $1.nil?     \r
-      \r
-      # Synopsis            \r
-      /Synopsis.*?<h4>(.*?)<\/h4>/m =~ html\r
-      unless $1.nil?\r
-         film.synopsis = $1\r
-         film.synopsis.gsub!(/<br\s*\/>|<br\s*>/, "\n")\r
-         film.synopsis.virerBalisesHTML!\r
-      end\r
-      \r
-      # Budget       \r
-      /Budget<\/b> : (.+?) millions d'euros<\/h4>/ =~ html\r
-      film.budget = $1 unless $1.nil?\r
+      if take?("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
+      end\r
+      \r
+      if take?("annee")         \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
+         # Réalisateurs\r
+         film.realisateurs.clear\r
+         /<h4>Réalisé par(.*?)<\/h4>/ =~ html\r
+         $1.scan(/\s*<a class="link1" href=".*?">(.*?)<\/a>\s*/m){|a|\r
+            film.realisateurs << Personne::ajouter(a[0]) unless a[0].nil?\r
+         } unless $1.nil?\r
+      end\r
+      \r
+      if take?("acteurs")\r
+         # Acteurs\r
+         film.acteurs.clear\r
+         /<h4>Avec(.*?)<\/h4>/ =~ html\r
+         $1.scan(/\s*<a class="link1" href="\/personne\/fichepersonne_gen_cpersonne=\d+\.html">(.+?)<\/a>\s*/m){|a|\r
+            film.acteurs << Personne::ajouter(a[0]) unless a[0].nil? \r
+         } unless $1.nil? \r
+      end\r
+           \r
+      if take?("pays")\r
+         # Pays\r
+         film.pays.clear\r
+         /<h4>Film (.*?)\.&nbsp;<\/h4>/ =~ html\r
+         $1.split(',').each{|pays|\r
+            film.pays << Pays::ajouter(pays) unless pays.nil?\r
+         } unless $1.nil? \r
+      end\r
+      \r
+      if take?("duree")\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
+         /<h4>Durée :(?:.*?)(\d+)min/ =~ html\r
+         min = $1.nil? ? 0 : $1.to_i         \r
+         film.duree = heure * 60 + min\r
+      end\r
+      \r
+      if take?("critiquenote")\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
+         # Genre\r
+         film.genres.clear\r
+         /<h4>Genre : (.*?)<\/h4>/ =~ html\r
+         $1.scan(/<a href="\/film\/alaffiche_genre_gen_genre=.*?" class="link1">(.+?)<\/a>/m){|g|\r
+            film.genres << Genre::ajouter(g[0]) unless g[0].nil?\r
+         } unless $1.nil?     \r
+      end\r
+      \r
+      if take?("synopsis")\r
+         # Synopsis            \r
+         /Synopsis.*?<h4>(.*?)<\/h4>/m =~ html\r
+         unless $1.nil?\r
+            film.synopsis = $1\r
+            film.synopsis.gsub!(/<br\s*\/>|<br\s*>/, "\n")\r
+            film.synopsis.virerBalisesHTML!\r
+         end\r
+      end\r
+      \r
+      if take?("budget")\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