From 6e4ff13e5960fb31f7f3057a9c018365946775d0 Mon Sep 17 00:00:00 2001 From: Akamaru Date: Tue, 28 Jun 2016 14:20:18 +0200 Subject: [PATCH] Urban Dictionary Plugin neu geschrieben --- plugins/urban_dictionary.lua | 66 ++++++++++++++++++++---------------- 1 file changed, 37 insertions(+), 29 deletions(-) diff --git a/plugins/urban_dictionary.lua b/plugins/urban_dictionary.lua index 3f6f842..edc0280 100644 --- a/plugins/urban_dictionary.lua +++ b/plugins/urban_dictionary.lua @@ -1,42 +1,50 @@ -function getUrbanDictionary(text) - local topic = string.match(text, "/ud (.+)") or string.match(text, "http://([A-Za-z0-9-_-]+).urbanup.com/") or string.match(text, "http://www.urbandictionary.com/define.php[?]term=([A-Za-z0-9-_-]+)") - topic = url_encode(topic) - b = http.request("http://api.urbandictionary.com/v0/define?term=" .. topic) - res = json:decode(b) - local definition = nil - if #res.list > 0 then - definition = res.list[1].word..": "..res.list[1].definition.."\n".. res.list[1].permalink - else - definition = nil - end - return definition -end +do -function url_encode(str) - if (str) then - str = string.gsub (str, "\n", "\r\n") - str = string.gsub (str, "([^%w %-%_%.%~])", - function (c) return string.format ("%%%02X", string.byte(c)) end) - str = string.gsub (str, " ", "+") +local function getUrbanDictionary(term) + local url = 'http://api.urbandictionary.com/v0/define?term='..term + local res,code = http.request(url) + local data = json:decode(res) + if code ~= 200 then return "HTTP-Fehler" end + if not data then return "Nichts gefunden!" end + + local word = data.list[1].word + local dev = data.list[1].definition + local exam = data.list[1].example + local url = data.list[1].permalink + if data.sounds[1] then + sound = data.sounds[1] end - return str -end - -function run(msg, matches) - local text = getUrbanDictionary(msg.text) - if (text == nil) then - return '"'..matches[1]..'" nicht gefunden.' + + local text = unescape(word..'\n'..dev..'\n\nBeispiel: "'..exam..'"\n')..url + + if data.sounds[1] then + return text, sound else return text end end +local function run(msg, matches) + local term = string.gsub(matches[1], ' ', '%%20') + local text, sound = getUrbanDictionary(term) + local receiver = get_receiver(msg) + if sound then + local file = download_to_file(sound, term..'.mp3') + send_audio(receiver, file, ok_cb, false) + end + return text +end + return { description = "Zeigt eine Urban Dictionary Definition", usage = {"#ud [Begriff]"}, - patterns = {"^#ud (.*)$", + patterns = {"^#[Uu][Dd] (.*)$", "^http://([A-Za-z0-9-_-]+).urbanup.com/", - "^http://www.urbandictionary.com/define.php[?]term=([A-Za-z0-9-_-]+)" + "^http://www.urbandictionary.com/define.php%?term=([A-Za-z0-9-_-]+)" }, run = run -} \ No newline at end of file +} + +--by Akamaru [https://ponywave.de] + +end \ No newline at end of file