X-Git-Url: http://git.euphorik.ch/index.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Fmodules%2Fallocine.rb;h=1a28000f705b5de3bfeb01e8a6686d309e4f0b3e;hb=aaba068e2c52c67ba79edb55b4332bea66fda75f;hp=893f7ed8c28e10be37bf9a45992eae0678ef11bc;hpb=728b3f5df7b780aabdaf563f9d93dd3ef4421820;p=pompage.git diff --git a/src/modules/allocine.rb b/src/modules/allocine.rb index 893f7ed..1a28000 100644 --- a/src/modules/allocine.rb +++ b/src/modules/allocine.rb @@ -1,3 +1,5 @@ +# coding: utf-8 + require 'net/http' require 'uri' require 'cgi' @@ -6,32 +8,56 @@ require 'iconv' require "basemodule.rb" -# un module d'importation pour le site "www.allocine.fr" +# doc : http://www.ruby-doc.org/stdlib/libdoc/net/http/rdoc/index.html +Net::HTTP.version_1_2 + +# hack : http://arosien.blogspot.com/2007/06/increasing-rubys-netbufferedio-buffer.html +module Net + class BufferedIO + def rbuf_fill + timeout(@read_timeout) { @rbuf << @io.sysread(32768) } + end + end +end + +# Un module d'importation pour le site "www.allocine.fr". class Allocine < Basemodule def createConnexion - @connexion = Net::HTTP::new('www.allocine.fr') if @connexion.nil? + begin + @connexion = Net::HTTP::new('www.allocine.fr').start if @connexion == nil || !@connexion.started? + rescue + Puts "[!] Impossible de se connecter à Allocine. Retry.." + retry + end + end + + def fermerConnexion + @connexion.finish if defined? @connexion && @connexion.started? # on admet qu'après un load on a plus besoin de la connexion + @connexion = nil end # Voir le parent. def rechercherFilm(titre) createConnexion - - donneesHtml = nil + begin + reponse = nil begin - reponse, donneesHtml = @connexion.get("/recherche/?rub=1&motcle=#{CGI::escape(Iconv.iconv("ISO-8859-1", "UTF-8", titre)[0])}") + reponse = @connexion.get("/recherche/?rub=1&motcle=#{CGI::escape(Iconv.iconv("ISO-8859-1", "UTF-8", titre)[0])}") rescue Exception => e p e - puts "[!] Connexion lost, retry.." + puts "[!] Erreur lors de la recherche du titre #{titre}, retry.." + fermerConnexion + createConnexion retry end + + # convertit le code latin-1 en UTF8 + html = Iconv.iconv("UTF-8", "ISO-8859-1", reponse.body)[0] - #convertit le code latin-1 en UTF8 - donneesHtml = Iconv.iconv("UTF-8", "ISO-8859-1", donneesHtml)[0] - - #si pas trouvé alors on enlève un mot à la fin - if /.*?Pas de résultats.*?/ =~ donneesHtml || ! donneesHtml.include?("