From 337ef38509784ccdbd2eba52ec929aced8d30501 Mon Sep 17 00:00:00 2001 From: Akamaru Date: Thu, 16 Apr 2015 20:13:07 +0200 Subject: [PATCH] Added wikipedia plugin --- plugins/wiki.lua | 70 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 plugins/wiki.lua diff --git a/plugins/wiki.lua b/plugins/wiki.lua new file mode 100644 index 0000000..19518a3 --- /dev/null +++ b/plugins/wiki.lua @@ -0,0 +1,70 @@ +require("./plugins/google") + +function firstresult(results) + return results[1][2] +end + +function wikiapilink(wikiurl) + local wikipattern="^http://de.wikipedia.org/wiki/(.*)$" + local matches = { string.match(wikiurl, wikipattern) } + local queryterm=matches[1] + local apilink = "http://de.wikipedia.org/w/index.php?action=raw&title="..queryterm + return apilink +end + + +function getwikifromapi(apilink) + -- Do the request + local res, code = https.request(apilink) + if code ~=200 then return "Ein Fehler ist aufgetreten" end + local data = res + local wikitext=data + return wikitext +end + +function plaintext(wikitext) + local plaintext=string.gsub(wikitext,"{{Infobox.-\n}}\n","") + plaintext=string.gsub(wikitext,"{{Medienbox.-\n}}\n","") + plaintext=string.gsub(wikitext,"","") + plaintext=string.gsub(plaintext,"Datei:.-]]","") + plaintext=string.gsub(plaintext,"{{.-}}","") + plaintext=string.gsub(plaintext,"[%[%|%]%]]","") + plaintext=string.gsub(plaintext,".-","") + local firstsectionindex=string.find(plaintext,"==") + if firstsectionindex~=nil then + plaintext=string.sub(plaintext,1,firstsectionindex-1) + end + return plaintext +end + +function formatwikiforsending(wikitext,url) + -- local stringtosend=title.."\n===" + local stringtosend=plaintext(wikitext).."\n" + stringtosend=stringtosend.."- "..url + return stringtosend +end + + +function scrapewiki(results) + local url=firstresult(results) + local tosend=formatwikiforsending(getwikifromapi(wikiapilink(url)),url) + return tosend +end + +function run(msg, matches) + vardump(matches) + local results = googlethat(matches[1].." site:de.wikipedia.org") + return scrapewiki(results) +end + + +return { + description = "Sendet einen Wikipedia-Artikel", + usage = "/wiki Suchwort", + patterns = { + "^/wiki (.*)$", + "^%.[w|W]iki (.*)$", + "de.wikipedia.org/wiki/([A-Za-z0-9-_-]+)" + }, + run = run + } \ No newline at end of file