From bd7264f496a13ed9dec5f8c99959f8dff5f64733 Mon Sep 17 00:00:00 2001 From: yago Date: Wed, 4 Feb 2015 22:15:49 +0100 Subject: [PATCH] XKCD url sussport --- plugins/xkcd.lua | 36 ++++++++++++++++++++++++++---------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/plugins/xkcd.lua b/plugins/xkcd.lua index 3882d2d..6757c3b 100644 --- a/plugins/xkcd.lua +++ b/plugins/xkcd.lua @@ -1,12 +1,12 @@ - -function get_xkcd() - -- Get the latest num +function get_last_id() local res,code = https.request("http://xkcd.com/info.0.json") if code ~= 200 then return "HTTP ERROR" end local data = json:decode(res) - math.randomseed(os.time()) - i = math.random(1, data.num) -- Latest - local res,code = http.request("http://xkcd.com/"..i.."/info.0.json") + return data.num +end + +function get_xkcd(id) + local res,code = http.request("http://xkcd.com/"..id.."/info.0.json") if code ~= 200 then return "HTTP ERROR" end local data = json:decode(res) local link_image = data.img @@ -16,6 +16,14 @@ function get_xkcd() return link_image, data.title end + +function get_xkcd_random() + local last = get_last_id() + math.randomseed(os.time()) + i = math.random(1, data.num) + return get_xkcd(i) +end + function send_title(cb_extra, success, result) if success then send_msg(cb_extra[1], cb_extra[2], ok_cb, false) @@ -24,15 +32,23 @@ end function run(msg, matches) local receiver = get_receiver(msg) - url, title = get_xkcd() + if matches[1] == "!xkcd" then + url, title = get_xkcd_random() + else + url, title = get_xkcd(matches[1]) + end file_path = download_to_file(url) send_photo(receiver, file_path, send_title, {receiver, title}) return false end return { - description = "Send random comic image from xkcd", - usage = "!xkcd", - patterns = {"^!xkcd$"}, + description = "Send comic images from xkcd", + usage = {"!xkcd (id): Send an xkcd image and tigle. If not id, send a random one"}, + patterns = { + "^!xkcd$", + "^!xkcd (%d+)", + "xkcd.com/(%d+)" + }, run = run } \ No newline at end of file