1 # TODO: cache definitions
\r
5 class DeMauroPlugin < Plugin
\r
10 @dmurl = "http://www.demauroparavia.it/"
\r
14 def help(plugin, topic="")
\r
15 return "demauro <parola> => fornisce il link della definizione della parola dal dizionario De Mauro/Paravia"
\r
18 def demauro(m, params)
\r
19 parola = params[:parola]
\r
20 url = @dmurl + "cerca?stringa=#{url_encode(parola)}"
\r
21 uri = URI.parse(url)
\r
22 http = @bot.httputil.get_proxy(uri)
\r
26 http.start() { |http|
\r
27 resp = http.get(uri)
\r
32 loc = resp['location']
\r
33 if loc =~ /#{@dmurl}\d+/
\r
41 debug "HttpUtil.get exception: #{e}, while trying to get #{uri}"
\r
46 if xml=~ /Non ho trovato occorrenze per/
\r
47 m.reply "Parola non trovata"
\r
50 xml.gsub(/href="(\d+)"/) { |match|
\r
51 debug match.to_a.join(" || ")
\r
52 defurls << "#{@dmurl}#{$1}"
\r
57 defurls.each { |url|
\r
58 uri = URI.parse(url)
\r
59 http = @bot.httputil.get_proxy(uri)
\r
61 debug "Scanning #{url}"
\r
62 http.start() { |http|
\r
63 resp = http.get(uri)
\r
67 matched = /<span class="lemma">(.*)<\/span><br\/><span class="qualifica".*?>(.*?)<\/span><br\/>/.match(resp.body)
\r
68 dirtylemma = matched[1]
\r
70 lemma = dirtylemma.gsub(/<\/?span(?: class="pipelemma")?>/,"")
\r
72 lemma = lemma.gsub(/<sup>1<\/sup>/,'¹').gsub(/<sup>2<\/sup>/,'²').gsub(/<sup>3<\/sup>/,'³')
\r
73 lemma = lemma.gsub(/<sup>4<\/sup>/,'⁴').gsub(/<sup>5<\/sup>/,'⁵').gsub(/<sup>6<\/sup>/,'⁶')
\r
74 lemma = lemma.gsub(/<sup>7<\/sup>/,'⁷').gsub(/<sup>8<\/sup>/,'⁸').gsub(/<sup>9<\/sup>/,'⁹')
\r
76 lemma += " #{qual} (#{uri})"
\r
79 debug resp.to_a.join("\r")
\r
83 debug "Exception '#{e}' while trying to get and parse #{uri}"
\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