3 class DeMauroPlugin < Plugin
\r
8 @dmurl = "http://www.demauroparavia.it/"
\r
12 def help(plugin, topic="")
\r
13 return "demauro <parola> => fornisce il link della definizione della parola dal dizionario De Mauro/Paravia"
\r
16 def demauro(m, params)
\r
17 parola = params[:parola]
\r
18 url = @dmurl + "cerca?stringa=#{url_encode(parola)}"
\r
19 uri = URI.parse(url)
\r
20 http = @bot.httputil.get_proxy(uri)
\r
24 http.start() { |http|
\r
25 resp = http.get(uri.request_uri())
\r
30 loc = resp['location']
\r
31 if loc =~ /#{@dmurl}\d+/
\r
39 debug "HttpUtil.get exception: #{e.inspect}, while trying to get #{uri}"
\r
40 debug e.backtrace.join("\n")
\r
41 m.reply "C'è stato un errore nella ricerca"
\r
45 if xml=~ /Non ho trovato occorrenze per/
\r
46 m.reply "Parola non trovata"
\r
49 xml.gsub(/href="(\d+)"/) { |match|
\r
50 debug match.to_a.join(" || ")
\r
51 defurls << "#{@dmurl}#{$1}"
\r
56 defurls.each { |url|
\r
57 uri = URI.parse(url)
\r
58 http = @bot.httputil.get_proxy(uri)
\r
60 debug "Scanning #{url}"
\r
61 http.start() { |http|
\r
62 resp = http.get(uri.request_uri())
\r
66 matched = /<span class="lemma">(.*)<\/span><br\/><span class="qualifica".*?>(.*?)<\/span><br\/>/.match(resp.body)
\r
67 dirtylemma = matched[1]
\r
69 lemma = dirtylemma.gsub(/<\/?span(?: class="pipelemma")?>/,"")
\r
71 lemma = lemma.gsub(/<sup>1<\/sup>/,'¹').gsub(/<sup>2<\/sup>/,'²').gsub(/<sup>3<\/sup>/,'³')
\r
72 lemma = lemma.gsub(/<sup>4<\/sup>/,'⁴').gsub(/<sup>5<\/sup>/,'⁵').gsub(/<sup>6<\/sup>/,'⁶')
\r
73 lemma = lemma.gsub(/<sup>7<\/sup>/,'⁷').gsub(/<sup>8<\/sup>/,'⁸').gsub(/<sup>9<\/sup>/,'⁹')
\r
75 lemma += " #{qual} (#{uri})"
\r
78 debug resp.to_a.join("\r")
\r
82 debug "Exception '#{e.inspect}' while trying to get and parse #{uri}"
\r
83 debug e.backtrace.join("\n")
\r
84 m.reply "C'è stato un errore nell'elaborazione del risultato"
\r
88 pre = lemmas.length > 1 ? "Lemmi trovati" : "Lemma trovato"
\r
89 m.reply "#{pre}: #{lemmas.join(' ; ')}"
\r
93 plugin = DeMauroPlugin.new
\r
94 plugin.map 'demauro :parola', :action => 'demauro'
\r