Merge branch 'api_plugins'
This commit is contained in:
commit
8c8ba6ff64
29
miku/plugins/chucknorris.lua
Normal file
29
miku/plugins/chucknorris.lua
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
local chucknorris = {}
|
||||||
|
|
||||||
|
chucknorris.command = 'cn'
|
||||||
|
|
||||||
|
function chucknorris:init(config)
|
||||||
|
chucknorris.triggers = utilities.triggers(self.info.username, config.cmd_pat):t('cn', true).table
|
||||||
|
chucknorris.doc = [[*
|
||||||
|
]]..config.cmd_pat..[[cn*: Postet einen zufälligen Chuck-Norris-Witz]]
|
||||||
|
end
|
||||||
|
|
||||||
|
function chucknorris:get_joke()
|
||||||
|
local url = 'http://api.icndb.com/jokes/random'
|
||||||
|
local res, code = http.request(url)
|
||||||
|
if code ~= 200 then return nil end
|
||||||
|
local data = json.decode(res)
|
||||||
|
local text = data.value.joke
|
||||||
|
return text
|
||||||
|
end
|
||||||
|
|
||||||
|
function chucknorris:action(msg, config)
|
||||||
|
local text = chucknorris:get_joke()
|
||||||
|
if not text then
|
||||||
|
utilities.send_reply(self, msg, config.errors.connection)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
utilities.send_reply(self, msg, unescape(text))
|
||||||
|
end
|
||||||
|
|
||||||
|
return chucknorris
|
30
miku/plugins/dogify.lua
Normal file
30
miku/plugins/dogify.lua
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
local dogify = {}
|
||||||
|
|
||||||
|
function dogify:init(config)
|
||||||
|
dogify.triggers = utilities.triggers(self.info.username, config.cmd_pat):t('dogify', true).table
|
||||||
|
dogify.doc = [[*
|
||||||
|
]]..config.cmd_pat..[[dogify* _<text/den/du/willst>_: Wow, much doge!
|
||||||
|
]]
|
||||||
|
end
|
||||||
|
|
||||||
|
dogify.command = 'dogify text/den/du/willst'
|
||||||
|
|
||||||
|
function dogify:action(msg, config, matches)
|
||||||
|
local input = utilities.input_from_msg(msg)
|
||||||
|
if not input then
|
||||||
|
utilities.send_reply(self, msg, dogify.doc, true)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
utilities.send_typing(self, msg.chat.id, 'upload_photo')
|
||||||
|
local path = input:gsub(" ", "%%20")
|
||||||
|
local photo_url = 'http://dogr.io/'..path..'.png?split=false&.png'
|
||||||
|
local file = download_to_file(photo_url)
|
||||||
|
if not file then
|
||||||
|
utilities.send_reply(self, msg, config.errors.connection)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
utilities.send_photo(self, msg.chat.id, file, nil, msg.message_id)
|
||||||
|
end
|
||||||
|
|
||||||
|
return dogify
|
44
miku/plugins/mal_user.lua
Normal file
44
miku/plugins/mal_user.lua
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
local mal_user = {}
|
||||||
|
|
||||||
|
function mal_user:init(config)
|
||||||
|
mal_user.triggers = {
|
||||||
|
"^/malu (.+)$",
|
||||||
|
"myanimelist.net/profile/(.*)$"
|
||||||
|
}
|
||||||
|
mal_user.doc = [[*
|
||||||
|
]]..config.cmd_pat..[[malu* _<User>_: Sendet Infos über einen MyAnimeList-User
|
||||||
|
]]
|
||||||
|
end
|
||||||
|
|
||||||
|
mal_user.command = 'malu <User>'
|
||||||
|
|
||||||
|
function mal_user:get_infos(user)
|
||||||
|
local url = 'https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20xml%20where%20url%3D%22http%3A%2F%2Fmyanimelist.net%2Fmalappinfo.php%3Fu%3D'..user..'%22&format=json&diagnostics=true&callback='
|
||||||
|
local res, code = https.request(url)
|
||||||
|
if code ~= 200 then return nil end
|
||||||
|
local data = json.decode(res).query.results.myanimelist.myinfo
|
||||||
|
if not data then return nil end
|
||||||
|
|
||||||
|
local name = data.user_name
|
||||||
|
local watching = data.user_watching
|
||||||
|
local pause = data.user_onhold
|
||||||
|
local dropped = data.user_dropped
|
||||||
|
local complete = data.user_completed
|
||||||
|
local planed = data.user_plantowatch
|
||||||
|
local mal_url = 'http://myanimelist.net/profile/'..data.user_name
|
||||||
|
local text = '<b>'..name..'</b> schaut derzeit <b>'..watching..' Animes</b>, hat <b>'..pause..' pausiert</b>, <b>'..dropped..' abgebrochen</b> und <b>'..complete..' beendet</b>. <b>'..planed..'</b> stehen auf der Watchlist.\n<a href="'..mal_url..'">Profil aufrufen</a>'
|
||||||
|
|
||||||
|
return text
|
||||||
|
end
|
||||||
|
|
||||||
|
function mal_user:action(msg, config, matches)
|
||||||
|
local user = matches[1]
|
||||||
|
local text = mal_user:get_infos(user)
|
||||||
|
if not text then
|
||||||
|
utilities.send_reply(self, msg, config.errors.results)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
utilities.send_reply(self, msg, text, 'HTML')
|
||||||
|
end
|
||||||
|
|
||||||
|
return mal_user
|
57
miku/plugins/myfigurecollection.lua
Normal file
57
miku/plugins/myfigurecollection.lua
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
local mfc = {}
|
||||||
|
|
||||||
|
function mfc:init(config)
|
||||||
|
mfc.triggers = {
|
||||||
|
"^/[Mm][Ff][Cc] (.+)$",
|
||||||
|
"myfigurecollection.net/user/(.+)$",
|
||||||
|
"myfigurecollection.net/collection/(.+)$"
|
||||||
|
}
|
||||||
|
mfc.doc = [[*
|
||||||
|
]]..config.cmd_pat..[[mfc* _<User>_: Zeigt den zuletzt hinzugefügten Artikel eines MyFigureCollection-Users
|
||||||
|
]]
|
||||||
|
end
|
||||||
|
|
||||||
|
mfc.command = 'mfc <User>'
|
||||||
|
|
||||||
|
local makeOurDate = function(dateString)
|
||||||
|
local pattern = "(%d+)%-(%d+)%-(%d+)"
|
||||||
|
local year, month, day = dateString:match(pattern)
|
||||||
|
if day == "00" then
|
||||||
|
return month..'.'..year
|
||||||
|
else
|
||||||
|
return day..'.'..month..'.'..year
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function mfc:get_infos(user)
|
||||||
|
local url = 'http://myfigurecollection.net/api.php?type=json&mode=collection&username='..user
|
||||||
|
local res, code = http.request(url)
|
||||||
|
if code ~= 200 then return nil end
|
||||||
|
local data = json.decode(res).collection.owned
|
||||||
|
if not data then return nil end
|
||||||
|
|
||||||
|
local title = data.item[1].data.name
|
||||||
|
local owned = data.num_items
|
||||||
|
local profile_url = 'http://de.myfigurecollection.net/collection/'..user
|
||||||
|
local art = data.item[1].root.name
|
||||||
|
local category = data.item[1].category.name
|
||||||
|
local date = makeOurDate(data.item[1].data.release_date)
|
||||||
|
local price = '¥'..data.item[1].data.price
|
||||||
|
local url = 'http://de.myfigurecollection.net/item/'..data.item[1].data.id
|
||||||
|
|
||||||
|
local text = 'Letzter Artikel aus <b>'..user..'\'s</b> <a href="'..profile_url..'">Sammlung</a> ('..owned..' Artikel):\n<a href="'..url..'">'..title..'</a>\nArt: '..art..' ('..category..')\n<i>Erschien am '..date..' für '..price..'</i>'
|
||||||
|
|
||||||
|
return text
|
||||||
|
end
|
||||||
|
|
||||||
|
function mfc:action(msg, config, matches)
|
||||||
|
local user = matches[1]
|
||||||
|
local text = mfc:get_infos(user)
|
||||||
|
if not text then
|
||||||
|
utilities.send_reply(self, msg, config.errors.results)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
utilities.send_reply(self, msg, text, 'HTML')
|
||||||
|
end
|
||||||
|
|
||||||
|
return mfc
|
59
miku/plugins/nicovideo.lua
Normal file
59
miku/plugins/nicovideo.lua
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
local nicovideo = {}
|
||||||
|
|
||||||
|
nicovideo.triggers = {
|
||||||
|
"nicovideo.jp/watch/(sm%d+)",
|
||||||
|
"nicovideo.jp/watch/(%d+)",
|
||||||
|
"nico.ms/(sm%d+)"
|
||||||
|
}
|
||||||
|
|
||||||
|
local makeOurDate = function(dateString)
|
||||||
|
local pattern = "(%d+)%-(%d+)%-(%d+)T"
|
||||||
|
local year, month, day = dateString:match(pattern)
|
||||||
|
if month == "00" then
|
||||||
|
return year
|
||||||
|
elseif day == "00" then
|
||||||
|
return month..'.'..year
|
||||||
|
else
|
||||||
|
return day..'.'..month..'.'..year
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function nicovideo:get_video(id)
|
||||||
|
local url = 'https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20xml%20where%20url%3D%22http%3A%2F%2Fext.nicovideo.jp%2Fapi%2Fgetthumbinfo%2F'..id..'%22&format=json'
|
||||||
|
local res, code = https.request(url)
|
||||||
|
if code ~= 200 then return nil end
|
||||||
|
local data = json.decode(res).query.results.nicovideo_thumb_response.thumb
|
||||||
|
if not data then return nil end
|
||||||
|
|
||||||
|
local title = data.title
|
||||||
|
local date = makeOurDate(data.first_retrieve)
|
||||||
|
if data.user_nickname then
|
||||||
|
user = data.user_nickname
|
||||||
|
else
|
||||||
|
user = data.ch_name
|
||||||
|
end
|
||||||
|
local views = comma_value(data.view_counter)
|
||||||
|
local dura = data.length
|
||||||
|
local favs = comma_value(data.mylist_counter)
|
||||||
|
local comm = comma_value(data.comment_num)
|
||||||
|
local pic = data.thumbnail_url
|
||||||
|
|
||||||
|
local text = '<b>'..title..'</b>\nHochgeladen am '..date..' von <b>'..user..'</b>, <i>'..views..'x angesehen, Länge: '..dura..', '..favs..'x favoritisiert, '..comm..' Kommentare</i>'
|
||||||
|
|
||||||
|
return text, pic
|
||||||
|
end
|
||||||
|
|
||||||
|
function nicovideo:action(msg, config, matches)
|
||||||
|
local id = matches[1]
|
||||||
|
local text, pic_url = nicovideo:get_video(id)
|
||||||
|
if not text then
|
||||||
|
utilities.send_reply(self, msg, config.errors.results)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
utilities.send_typing(self, msg.chat.id, 'upload_photo')
|
||||||
|
local file = download_to_file(pic_url, 'nicovideo_thumb.png')
|
||||||
|
utilities.send_photo(self, msg.chat.id, file, nil, msg.message_id)
|
||||||
|
utilities.send_reply(self, msg, text, 'HTML')
|
||||||
|
end
|
||||||
|
|
||||||
|
return nicovideo
|
Reference in New Issue
Block a user