Added wikipedia plugin

This commit is contained in:
Akamaru 2015-04-16 20:13:07 +02:00
parent 22cff42b7b
commit 337ef38509

70
plugins/wiki.lua Normal file
View File

@ -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,"<ref.->.-</ref>","")
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
}