X-Git-Url: http://git.euphorik.ch/index.cgi?a=blobdiff_plain;ds=inline;f=src%2Fmodules%2Fallocine.rb;h=1a28000f705b5de3bfeb01e8a6686d309e4f0b3e;hb=e67b74aaeadef2b83aadc30ecff4def6c888afa4;hp=e4173bbbbe1c8b599ced9664dd1c5eab90ce0431;hpb=202a3b4495bc486dc0f5bb6a34da66d5e34832bf;p=pompage.git diff --git a/src/modules/allocine.rb b/src/modules/allocine.rb index e4173bb..1a28000 100644 --- a/src/modules/allocine.rb +++ b/src/modules/allocine.rb @@ -1,33 +1,63 @@ +# coding: utf-8 + require 'net/http' +require 'uri' require 'cgi' require 'thread' require 'iconv' require "basemodule.rb" -# un mixin pour allocine +# 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 + 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) - Thread.current["connexion"] = Net::HTTP::new('www.allocine.fr') if Thread.current["connexion"].nil? - connexion = Thread.current["connexion"] + 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?("