X-Git-Url: http://git.euphorik.ch/index.cgi?a=blobdiff_plain;f=src%2Fmodules%2Fallocine.rb;h=01764f82eed968800aa218e532add70e312a0d8d;hb=de6efc861c1f471125cb4d3ab3d0f82572b3d21b;hp=893f7ed8c28e10be37bf9a45992eae0678ef11bc;hpb=728b3f5df7b780aabdaf563f9d93dd3ef4421820;p=pompage.git diff --git a/src/modules/allocine.rb b/src/modules/allocine.rb index 893f7ed..01764f8 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,52 @@ require 'iconv' require "basemodule.rb" +# 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? + @connexion = Net::HTTP::new('www.allocine.fr').start if @connexion == nil || !@connexion.started? end - # Voir le parent. + 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?("