Portiere EINEN HAUFEN an Imageboard-Plugins, NSFW-Plugins, etc. Im Folgenden:
- boobs - danbooru - derpibooru(_nsfw) - e621 - gifeye - konachan(_nsfw) - riko & yagyuu >> moe - porndoge - pornhub_gif - pr0gramm - random_pic(_nsfw) - rule34 - sankakucomplex - yandere - z0r
This commit is contained in:
parent
d457b39b06
commit
345e33dcb0
68
miku/plugins/boobs.lua
Normal file
68
miku/plugins/boobs.lua
Normal file
@ -0,0 +1,68 @@
|
||||
local boobs = {}
|
||||
|
||||
boobs.triggers = {
|
||||
"^/([Bb][Oo][Oo][Bb][Ss])$",
|
||||
"^/([Bb][Uu][Tt][Tt][Ss])$"
|
||||
}
|
||||
|
||||
boobs.command = 'boobs, /butts'
|
||||
|
||||
-- Recursive function
|
||||
function boobs:getRandomButts(attempt)
|
||||
attempt = attempt or 0
|
||||
attempt = attempt + 1
|
||||
|
||||
local res,status = http.request("http://api.obutts.ru/noise/1")
|
||||
|
||||
if status ~= 200 then return nil end
|
||||
local data = json.decode(res)[1]
|
||||
|
||||
-- The OpenBoobs API sometimes returns an empty array
|
||||
if not data and attempt <= 3 then
|
||||
print('Keine Butts gefunden!')
|
||||
return getRandomButts(attempt)
|
||||
end
|
||||
|
||||
return 'http://media.obutts.ru/' .. data.preview
|
||||
end
|
||||
|
||||
function boobs:getRandomBoobs(attempt)
|
||||
attempt = attempt or 0
|
||||
attempt = attempt + 1
|
||||
|
||||
local res,status = http.request("http://api.oboobs.ru/noise/1")
|
||||
|
||||
if status ~= 200 then return nil end
|
||||
local data = json.decode(res)[1]
|
||||
|
||||
-- The OpenBoobs API sometimes returns an empty array
|
||||
if not data and attempt < 10 then
|
||||
print('Keine Boobs gefunden!')
|
||||
return getRandomBoobs(attempt)
|
||||
end
|
||||
|
||||
return 'http://media.oboobs.ru/' .. data.preview
|
||||
end
|
||||
|
||||
function boobs:action(msg, config, matches)
|
||||
local url
|
||||
|
||||
if matches[1]:match("[Bb][Oo][Oo][Bb][Ss]") then
|
||||
url = boobs:getRandomBoobs()
|
||||
end
|
||||
|
||||
if matches[1]:match("[Bb][Uu][Tt][Tt][Ss]") then
|
||||
url = boobs:getRandomButts()
|
||||
end
|
||||
|
||||
if url ~= nil then
|
||||
local file = download_to_file(url)
|
||||
utilities.send_photo(self, msg.chat.id, file, url)
|
||||
return
|
||||
else
|
||||
utilities.send_reply(self, msg, 'Nichts gefunden :(')
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
return boobs
|
112
miku/plugins/danbooru.lua
Normal file
112
miku/plugins/danbooru.lua
Normal file
@ -0,0 +1,112 @@
|
||||
local danbooru = {}
|
||||
|
||||
function danbooru:init(config)
|
||||
danbooru.triggers = {
|
||||
"^/dan$",
|
||||
"^/dan (d)$",
|
||||
"^/dan (w)$",
|
||||
"^/dan (m)$",
|
||||
"^/(dan) (.+)$",
|
||||
"(danbooru.donmai.us)/posts/([0-9]+)"
|
||||
}
|
||||
danbooru.doc = [[*
|
||||
]]..config.cmd_pat..[[dan*: Zufälliges Bild von Danbooru
|
||||
*]]..config.cmd_pat..[[dan* _<d/w/m>_: Zufälliges Bild von Danbooru (populär heute/in der Woche/im Monat)
|
||||
*]]..config.cmd_pat..[[dan* _<Tags>_: Sucht auf Danbooru mit diesen Tags
|
||||
]]
|
||||
end
|
||||
|
||||
danbooru.command = 'dan <Tags>'
|
||||
|
||||
local BASE_URL = "http://danbooru.donmai.us"
|
||||
local URL_NEW = "/posts.json"
|
||||
local URL_POP = "/explore/posts/popular.json"
|
||||
|
||||
local scale_day = "?scale=day"
|
||||
local scale_week = "?scale=week"
|
||||
local scale_month = "?scale=month"
|
||||
|
||||
function danbooru:get_post(url)
|
||||
local res, code = http.request(url)
|
||||
if code ~= 200 then return nil end
|
||||
local posts = json.decode(res)
|
||||
if not posts[1] then return nil end
|
||||
|
||||
return posts[math.random(#posts)]
|
||||
end
|
||||
|
||||
function danbooru:get_specific_post(id)
|
||||
local url = BASE_URL..'/posts/'..id..'.json'
|
||||
local res, code = http.request(url)
|
||||
if code ~= 200 then return nil end
|
||||
local db = json.decode(res)
|
||||
local link_image = BASE_URL..db.file_url
|
||||
return link_image
|
||||
end
|
||||
|
||||
function danbooru:action(msg, config, matches)
|
||||
if matches[1] == 'danbooru.donmai.us' and matches[2] then
|
||||
local url = danbooru:get_specific_post(matches[2])
|
||||
if not url then utilities.send_reply(self, msg, config.errors.connection) return end
|
||||
utilities.send_typing(self, msg.chat.id, 'upload_photo')
|
||||
local file = download_to_file(url)
|
||||
if string.ends(url, ".gif") or string.ends(url, ".zip") or string.ends(url, ".webm") then
|
||||
utilities.send_document(self, msg.chat.id, file)
|
||||
else
|
||||
utilities.send_photo(self, msg.chat.id, file)
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
|
||||
if matches[1] == "d" or matches[1] == "w" or matches[1] == "m" then
|
||||
url = BASE_URL..URL_POP
|
||||
else
|
||||
url = BASE_URL..URL_NEW
|
||||
end
|
||||
|
||||
if matches[1] == "d" then
|
||||
url = url..scale_day
|
||||
elseif matches[1] == "w" then
|
||||
url = url..scale_week
|
||||
elseif matches[1] == "m" then
|
||||
url = url..scale_month
|
||||
elseif matches[1] == "dan" and matches[2] then
|
||||
local tag = string.gsub(matches[2], " ", '_' )
|
||||
local tag = string.gsub(tag, ":", '%%3A' )
|
||||
url = url..'?tags='..tag
|
||||
end
|
||||
|
||||
local post = danbooru:get_post(url)
|
||||
|
||||
if post then
|
||||
local download_url = BASE_URL..post.large_file_url
|
||||
utilities.send_typing(self, msg.chat.id, 'upload_photo')
|
||||
local img = download_to_file(download_url)
|
||||
if string.ends(download_url, ".gif") or string.ends(download_url, ".zip") or string.ends(download_url, ".webm") then
|
||||
utilities.send_document(self, msg.chat.id, img)
|
||||
else
|
||||
utilities.send_photo(self, msg.chat.id, img)
|
||||
end
|
||||
|
||||
local txt = ''
|
||||
if post.tag_string_artist ~= '' then
|
||||
txt = 'Artist: ' .. post.tag_string_artist .. '\n'
|
||||
end
|
||||
if post.tag_string_character ~= '' then
|
||||
txt = txt .. 'Charakter: ' .. post.tag_string_character .. '\n'
|
||||
end
|
||||
if post.file_size ~= '' then
|
||||
txt = txt .. '[' .. math.ceil(post.file_size/1000) .. 'kb] ' .. BASE_URL .. post.file_url
|
||||
end
|
||||
if txt ~= '' then
|
||||
utilities.send_reply(self, msg, txt)
|
||||
end
|
||||
return
|
||||
else
|
||||
utilities.send_reply(self, msg, config.errors.results)
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
return danbooru
|
43
miku/plugins/derpibooru.lua
Normal file
43
miku/plugins/derpibooru.lua
Normal file
@ -0,0 +1,43 @@
|
||||
local derpibooru = {}
|
||||
|
||||
function derpibooru:init(config)
|
||||
derpibooru.triggers = utilities.triggers(self.info.username, config.cmd_pat):t('dp', true):t('derpibooru', true).table
|
||||
derpibooru.doc = [[*
|
||||
]]..config.cmd_pat..[[dp* _<Tags>_: Sucht auf Derpibooru mit diesen Tags]]
|
||||
end
|
||||
|
||||
derpibooru.command = 'dp <Tags>'
|
||||
|
||||
function derpibooru:get_dp(tag)
|
||||
local BASE_URL = 'https://derpiboo.ru/'
|
||||
local url = BASE_URL..'/search.json?q='..tag
|
||||
|
||||
local res, code = https.request(url)
|
||||
if code ~= 200 then return nil end
|
||||
local dp = json.decode(res).search
|
||||
if not dp[1] then return nil end
|
||||
|
||||
local i = math.random(#dp)
|
||||
local link_image = 'https:'..dp[i].image
|
||||
local source = 'https://derpiboo.ru/'..dp[i].id
|
||||
return link_image, source
|
||||
end
|
||||
|
||||
function derpibooru:action(msg, config)
|
||||
local input = utilities.input_from_msg(msg)
|
||||
if not input then
|
||||
utilities.send_reply(self, msg, derpibooru.doc, true)
|
||||
return
|
||||
end
|
||||
local tag = string.gsub(input, " ", '+' )
|
||||
local url, source = derpibooru:get_dp(tag)
|
||||
if not url 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(url)
|
||||
utilities.send_photo(self, msg.chat.id, file, source)
|
||||
end
|
||||
|
||||
return derpibooru
|
49
miku/plugins/derpibooru_nsfw.lua
Normal file
49
miku/plugins/derpibooru_nsfw.lua
Normal file
@ -0,0 +1,49 @@
|
||||
local derpibooru_nsfw = {}
|
||||
|
||||
function derpibooru_nsfw:init(config)
|
||||
if not cred_data.derpibooru_apikey then
|
||||
print('Fehlender Key: derpibooru_apikey.')
|
||||
print('derpibooru_nsfw.lua wird nicht aktiviert.')
|
||||
return
|
||||
end
|
||||
derpibooru_nsfw.triggers = utilities.triggers(self.info.username, config.cmd_pat):t('dp_nsfw', true):t('derpibooru_nsfw', true).table
|
||||
derpibooru_nsfw.doc = [[*
|
||||
]]..config.cmd_pat..[[dp_nsfw* _<Tags>_: Sucht auf Derpibooru mit diesen Tags (NSFW)]]
|
||||
end
|
||||
|
||||
derpibooru_nsfw.command = 'dp_nsfw <Tags>'
|
||||
|
||||
function derpibooru_nsfw:get_dp(tag)
|
||||
local BASE_URL = 'https://derpiboo.ru/'
|
||||
local apikey = cred_data.derpibooru_apikey
|
||||
local url = BASE_URL..'/search.json?key='..apikey..'&q='..tag
|
||||
|
||||
local res, code = https.request(url)
|
||||
if code ~= 200 then return nil end
|
||||
local dp = json.decode(res).search
|
||||
if not dp[1] then return nil end
|
||||
|
||||
local i = math.random(#dp)
|
||||
local link_image = 'https:'..dp[i].image
|
||||
local source = 'https://derpiboo.ru/'..dp[i].id
|
||||
return link_image, source
|
||||
end
|
||||
|
||||
function derpibooru_nsfw:action(msg, config)
|
||||
local input = utilities.input_from_msg(msg)
|
||||
if not input then
|
||||
utilities.send_reply(self, msg, derpibooru_nsfw.doc, true)
|
||||
return
|
||||
end
|
||||
local tag = string.gsub(input, " ", '+' )
|
||||
local url, source = derpibooru_nsfw:get_dp(tag)
|
||||
if not url 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(url)
|
||||
utilities.send_photo(self, msg.chat.id, file, source)
|
||||
end
|
||||
|
||||
return derpibooru_nsfw
|
40
miku/plugins/e621.lua
Normal file
40
miku/plugins/e621.lua
Normal file
@ -0,0 +1,40 @@
|
||||
local e621 = {}
|
||||
|
||||
function e621:init(config)
|
||||
e621.triggers = utilities.triggers(self.info.username, config.cmd_pat):t('e621', true).table
|
||||
e621.doc = [[*
|
||||
]]..config.cmd_pat..[[e621* _<Tags>_: Sucht auf e621 mit diesen Tags]]
|
||||
end
|
||||
|
||||
e621.command = 'e621 <Tags>'
|
||||
|
||||
function e621:get_e621(tag)
|
||||
local BASE_URL = 'https://e621.net'
|
||||
local url = BASE_URL..'/post/index.json?tags='..tag
|
||||
local res, code = https.request(url)
|
||||
if code ~= 200 then return nil end
|
||||
local data = json.decode(res)
|
||||
if not data[1] then return nil end
|
||||
|
||||
local i = math.random(#data)
|
||||
local link_image = data[i].file_url
|
||||
return link_image
|
||||
end
|
||||
|
||||
function e621:action(msg, config)
|
||||
local input = utilities.input_from_msg(msg)
|
||||
if not input then
|
||||
utilities.send_reply(self, msg, e621.doc, true)
|
||||
return
|
||||
end
|
||||
local url = e621:get_e621(input)
|
||||
if not url 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(url)
|
||||
utilities.send_photo(self, msg.chat.id, file, url)
|
||||
end
|
||||
|
||||
return e621
|
32
miku/plugins/gifeye.lua
Normal file
32
miku/plugins/gifeye.lua
Normal file
@ -0,0 +1,32 @@
|
||||
local gifeye = {}
|
||||
|
||||
function gifeye:init(config)
|
||||
gifeye.triggers = {
|
||||
"https?://gifeye.com/(%d+)$",
|
||||
"^/gifeye (%d+)$",
|
||||
"^/ge (%d+)$"
|
||||
}
|
||||
gifeye.doc = [[*
|
||||
]]..config.cmd_pat..[[ge* _<ID>_: Sendet Bild von Gifeye (NSFW)]]
|
||||
end
|
||||
|
||||
gifeye.command = 'ge <ID>'
|
||||
|
||||
function gifeye:action(msg, config, matches)
|
||||
local url = 'http://i.gifeye.com/'..matches[1]..'.gif'
|
||||
utilities.send_typing(self, msg.chat.id, 'upload_document')
|
||||
local file = download_to_file(url)
|
||||
if not file then
|
||||
utilities.send_reply(self, msg, config.errors.results)
|
||||
return
|
||||
end
|
||||
|
||||
if string.starts(msg.text_lower, '/ge') or string.starts(msg.text_lower, '/gifeye') then
|
||||
source = 'http://gifeye.com/'..matches[1]
|
||||
else
|
||||
source = nil
|
||||
end
|
||||
utilities.send_document(self, msg.chat.id, file, source)
|
||||
end
|
||||
|
||||
return gifeye
|
41
miku/plugins/konachan.lua
Normal file
41
miku/plugins/konachan.lua
Normal file
@ -0,0 +1,41 @@
|
||||
local konachan = {}
|
||||
|
||||
function konachan:init(config)
|
||||
konachan.triggers = utilities.triggers(self.info.username, config.cmd_pat):t('kc', true):t('konachan', true).table
|
||||
konachan.doc = [[*
|
||||
]]..config.cmd_pat..[[kc* _<Tags>_: Sucht auf Konachan mit diesen Tags]]
|
||||
end
|
||||
|
||||
konachan.command = 'kc <Tags>'
|
||||
|
||||
function konachan:get_kc(tag)
|
||||
local url = 'http://konachan.net/post.json?tags='..tag..'%20-rating:explicit'
|
||||
local res, code = http.request(url)
|
||||
if code ~= 200 then return nil end
|
||||
local data = json.decode(res)
|
||||
if not data[1] then return nil end
|
||||
|
||||
local i = math.random(#data)
|
||||
local link_image = data[i].file_url
|
||||
return link_image
|
||||
end
|
||||
|
||||
function konachan:action(msg, config)
|
||||
local input = utilities.input_from_msg(msg)
|
||||
if not input then
|
||||
utilities.send_reply(self, msg, konachan.doc, true)
|
||||
return
|
||||
end
|
||||
local tag = string.gsub(input, " ", '+' )
|
||||
local url = konachan:get_kc(tag)
|
||||
if not url 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(url)
|
||||
utilities.send_photo(self, msg.chat.id, file)
|
||||
utilities.send_reply(self, msg, url)
|
||||
end
|
||||
|
||||
return konachan
|
41
miku/plugins/konachan_nsfw.lua
Normal file
41
miku/plugins/konachan_nsfw.lua
Normal file
@ -0,0 +1,41 @@
|
||||
local konachan_nsfw = {}
|
||||
|
||||
function konachan_nsfw:init(config)
|
||||
konachan_nsfw.triggers = utilities.triggers(self.info.username, config.cmd_pat):t('kcn', true):t('konachan_nsfw', true).table
|
||||
konachan_nsfw.doc = [[*
|
||||
]]..config.cmd_pat..[[kcn* _<Tags>_: Sucht auf Konachan mit diesen Tags (NSFW)]]
|
||||
end
|
||||
|
||||
konachan_nsfw.command = 'kcn <Tags>'
|
||||
|
||||
function konachan_nsfw:get_kc(tag)
|
||||
local url = 'http://konachan.net/post.json?tags='..tag
|
||||
local res, code = http.request(url)
|
||||
if code ~= 200 then return nil end
|
||||
local data = json.decode(res)
|
||||
if not data[1] then return nil end
|
||||
|
||||
local i = math.random(#data)
|
||||
local link_image = data[i].file_url
|
||||
return link_image
|
||||
end
|
||||
|
||||
function konachan_nsfw:action(msg, config)
|
||||
local input = utilities.input_from_msg(msg)
|
||||
if not input then
|
||||
utilities.send_reply(self, msg, konachan_nsfw.doc, true)
|
||||
return
|
||||
end
|
||||
local tag = string.gsub(input, " ", '+' )
|
||||
local url = konachan_nsfw:get_kc(tag)
|
||||
if not url 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(url)
|
||||
utilities.send_photo(self, msg.chat.id, file)
|
||||
utilities.send_reply(self, msg, url)
|
||||
end
|
||||
|
||||
return konachan_nsfw
|
41
miku/plugins/moe.lua
Normal file
41
miku/plugins/moe.lua
Normal file
@ -0,0 +1,41 @@
|
||||
local moe = {}
|
||||
|
||||
function moe:init(config)
|
||||
moe.triggers = {
|
||||
"^/([Rr][Ii][Kk][Oo])$",
|
||||
"^/([Yy][Aa][Gg][Yy][Uu][Uu])$"
|
||||
}
|
||||
moe.doc = [[*
|
||||
]]..config.cmd_pat..[[riko*: Postet ein Bild von riko.moe
|
||||
*]]..config.cmd_pat..[[yagyuu*: Postet ein Bild von yagyuu.moe
|
||||
]]
|
||||
end
|
||||
|
||||
moe.command = 'riko, /yagyuu'
|
||||
|
||||
function moe:get_url(site_url)
|
||||
local res,code = http.request(site_url)
|
||||
if code ~= 200 then return nil end
|
||||
local photo_url = res:match("<img src%=\"(.-)\" alt")
|
||||
local photo_url = site_url..'/'..photo_url
|
||||
return photo_url
|
||||
end
|
||||
|
||||
function moe:action(msg, config, matches)
|
||||
if matches[1]:match('[Rr][Ii][Kk][Oo]') then
|
||||
site_url = 'http://riko.moe'
|
||||
elseif matches[1]:match('[Yy][Aa][Gg][Yy][Uu][Uu]') then
|
||||
site_url = 'http://yagyuu.moe'
|
||||
end
|
||||
|
||||
utilities.send_typing(self, msg.chat.id, 'upload_photo')
|
||||
local photo_url = moe:get_url(site_url)
|
||||
if not photo_url then
|
||||
utilities.send_reply(self, msg, config.errors.connection)
|
||||
return
|
||||
end
|
||||
local file = download_to_file(photo_url)
|
||||
utilities.send_photo(self, msg.chat.id, file)
|
||||
end
|
||||
|
||||
return moe
|
22
miku/plugins/porndoge.lua
Normal file
22
miku/plugins/porndoge.lua
Normal file
@ -0,0 +1,22 @@
|
||||
local porndoge = {}
|
||||
|
||||
function porndoge:init(config)
|
||||
porndoge.triggers = utilities.triggers(self.info.username, config.cmd_pat):t('pdoge', true).table
|
||||
porndoge.doc = [[*
|
||||
]]..config.cmd_pat..[[pdoge*]]
|
||||
end
|
||||
|
||||
porndoge.command = 'pdoge'
|
||||
|
||||
function porndoge:action(msg, config)
|
||||
utilities.send_typing(self, msg.chat.id, 'upload_photo')
|
||||
local url = 'https://porndoge.herokuapp.com/'
|
||||
local file = download_to_file(url, 'porndoge.png')
|
||||
if not file then
|
||||
utilities.send_reply(self, msg, config.errors.connection)
|
||||
return
|
||||
end
|
||||
utilities.send_photo(self, msg.chat.id, file)
|
||||
end
|
||||
|
||||
return porndoge
|
32
miku/plugins/pornhub_gif.lua
Normal file
32
miku/plugins/pornhub_gif.lua
Normal file
@ -0,0 +1,32 @@
|
||||
local pornhub = {}
|
||||
|
||||
function pornhub:init(config)
|
||||
pornhub.triggers = {
|
||||
"pornhub.com/gif/(.+)$",
|
||||
"^/phg (.+)$",
|
||||
"^/porngif (.+)$"
|
||||
}
|
||||
pornhub.doc = [[*
|
||||
]]..config.cmd_pat..[[phg* _<ID>_: Sendet GIF von PornHub (NSFW)]]
|
||||
end
|
||||
|
||||
pornhub.command = 'ge <ID>'
|
||||
|
||||
function pornhub:action(msg, config, matches)
|
||||
local url = 'http://img.pornhub.com/gif/'..matches[1]..'.gif'
|
||||
utilities.send_typing(self, msg.chat.id, 'upload_document')
|
||||
local file = download_to_file(url)
|
||||
if not file then
|
||||
utilities.send_reply(self, msg, config.errors.results)
|
||||
return
|
||||
end
|
||||
|
||||
if string.starts(msg.text_lower, '/phg') or string.starts(msg.text_lower, '/porngif') then
|
||||
source = 'http://www.pornhub.com/gif/'..matches[1]
|
||||
else
|
||||
source = nil
|
||||
end
|
||||
utilities.send_document(self, msg.chat.id, file, source)
|
||||
end
|
||||
|
||||
return pornhub
|
43
miku/plugins/pr0gramm.lua
Normal file
43
miku/plugins/pr0gramm.lua
Normal file
@ -0,0 +1,43 @@
|
||||
local pr0gramm = {}
|
||||
|
||||
function pr0gramm:init(config)
|
||||
pr0gramm.triggers = {
|
||||
"pr0gramm.com/.*/(%d+)",
|
||||
"^/[Pp][Rr]0 (%d+)$"
|
||||
}
|
||||
pr0gramm.doc = [[*
|
||||
]]..config.cmd_pat..[[pr0* _<ID>_: Sendet Bild von pr0gramm]]
|
||||
end
|
||||
|
||||
pr0gramm.command = 'pr0 <ID>'
|
||||
|
||||
function pr0gramm:get_post(id)
|
||||
local url = 'http://pr0gramm.com/api/items/get.json?id='..id
|
||||
local res, code = http.request(url)
|
||||
if code ~= 200 then return nil end
|
||||
local data = json.decode(res).items[1]
|
||||
if not data then return nil end
|
||||
|
||||
local img = data.image
|
||||
|
||||
return 'http://img.pr0gramm.com/'..img
|
||||
end
|
||||
|
||||
function pr0gramm:action(msg, config, matches)
|
||||
local id = matches[1]
|
||||
local url = pr0gramm:get_post(id)
|
||||
if not url 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(url)
|
||||
if string.match(url, ".gif") or string.match(url, ".zip") or string.match(url, ".webm") or string.match(url, ".mp4") then
|
||||
utilities.send_document(self, msg.chat.id, file)
|
||||
else
|
||||
utilities.send_photo(self, msg.chat.id, file)
|
||||
end
|
||||
end
|
||||
|
||||
return pr0gramm
|
63
miku/plugins/random_pic.lua
Normal file
63
miku/plugins/random_pic.lua
Normal file
@ -0,0 +1,63 @@
|
||||
local rpic = {}
|
||||
|
||||
function rpic:init(config)
|
||||
rpic.triggers = utilities.triggers(self.info.username, config.cmd_pat):t('rpic', true).table
|
||||
rpic.doc = [[*
|
||||
]]..config.cmd_pat..[[rpic* _<Thema>_
|
||||
*Themen:*
|
||||
- anime
|
||||
- mlp
|
||||
- doge
|
||||
- faktillion
|
||||
- faktastisch
|
||||
- gamefakt
|
||||
- faktglaublich]]
|
||||
end
|
||||
|
||||
rpic.command = 'rpic <Thema>'
|
||||
|
||||
function rpic:get_random_image(dir)
|
||||
files = scandir(dir)
|
||||
if not files[1] then return ': Keine Dateien vorhanden!' end
|
||||
file = files[math.random(#files)]
|
||||
return file
|
||||
end
|
||||
|
||||
function rpic:action(msg, config)
|
||||
local input = utilities.input_from_msg(msg)
|
||||
if not input then
|
||||
utilities.send_reply(self, msg, rpic.doc, true)
|
||||
return
|
||||
end
|
||||
|
||||
local pics = {
|
||||
["test"] = "../Festplatten/Dragoran/Mikubot/sfw/test/",
|
||||
["anime"] = "../Festplatten/Dragoran/Mikubot/sfw/anime/",
|
||||
["mlp"] = "../Festplatten/Dragoran/Mikubot/sfw/mlp/",
|
||||
["doge"] = "../Festplatten/Dragoran/Mikubot/sfw/doge/",
|
||||
["faktillon"] = "../Festplatten/Dragoran/Mikubot/sfw/faktillon/",
|
||||
["faktastisch"] = "../Festplatten/Dragoran/Mikubot/sfw/faktastisch/",
|
||||
["gamefakt"] = "../Festplatten/Dragoran/Mikubot/sfw/gamefakt/",
|
||||
["faktglaublich"] = "../Festplatten/Dragoran/Mikubot/sfw/faktglaublich/"
|
||||
}
|
||||
|
||||
if pics[input] then
|
||||
local img = pics[input]..rpic:get_random_image(pics[input])
|
||||
print("Sende... "..img)
|
||||
if string.ends(img, ".gif") or string.ends(img, ".mp4") then
|
||||
utilities.send_document(self, msg.chat.id, img)
|
||||
return
|
||||
elseif string.ends(img, ".jpg") or string.ends(img, ".jpeg") or string.ends(img, ".png") then
|
||||
utilities.send_photo(self, msg.chat.id, img)
|
||||
return
|
||||
else
|
||||
utilities.send_reply(self, msg, 'Fehler: '..img)
|
||||
return
|
||||
end
|
||||
else
|
||||
utilities.send_reply(self, msg, '*Dieses Thema gibt es nicht!*'..rpic.doc, true)
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
return rpic
|
54
miku/plugins/random_pic_nsfw.lua
Normal file
54
miku/plugins/random_pic_nsfw.lua
Normal file
@ -0,0 +1,54 @@
|
||||
local rpic_nsfw = {}
|
||||
|
||||
function rpic_nsfw:init(config)
|
||||
rpic_nsfw.triggers = utilities.triggers(self.info.username, config.cmd_pat):t('nsfw', true).table
|
||||
rpic_nsfw.doc = [[*
|
||||
]]..config.cmd_pat..[[nsfw* _<Thema>_
|
||||
*Themen:*
|
||||
- gif
|
||||
- rl
|
||||
- shimakaze]]
|
||||
end
|
||||
|
||||
rpic_nsfw.command = 'nsfw <Thema>'
|
||||
|
||||
function rpic_nsfw:get_random_image(dir)
|
||||
files = scandir(dir)
|
||||
if not files[1] then return ': Keine Dateien vorhanden!' end
|
||||
file = files[math.random(#files)]
|
||||
return file
|
||||
end
|
||||
|
||||
function rpic_nsfw:action(msg, config)
|
||||
local input = utilities.input_from_msg(msg)
|
||||
if not input then
|
||||
input = 'general'
|
||||
end
|
||||
|
||||
local pics = {
|
||||
["general"] = "../Festplatten/Dragoran/Mikubot/nsfw/",
|
||||
["gif"] = "../Festplatten/Dragoran/Mikubot/nsfw/gifs/",
|
||||
["rl"] = "../Festplatten/Dragoran/Mikubot/nsfw/rl/",
|
||||
["shimakaze"] = "../Festplatten/Dragoran/Mikubot/nsfw/Shimakaze/"
|
||||
}
|
||||
|
||||
if pics[input] then
|
||||
local img = pics[input]..rpic_nsfw:get_random_image(pics[input])
|
||||
print("Sende... "..img)
|
||||
if string.ends(img, ".gif") or string.ends(img, ".mp4") then
|
||||
utilities.send_document(self, msg.chat.id, img)
|
||||
return
|
||||
elseif string.ends(img, ".jpg") or string.ends(img, ".jpeg") or string.ends(img, ".png") then
|
||||
utilities.send_photo(self, msg.chat.id, img)
|
||||
return
|
||||
else
|
||||
utilities.send_reply(self, msg, 'Fehler: '..img)
|
||||
return
|
||||
end
|
||||
else
|
||||
utilities.send_reply(self, msg, '*Dieses Thema gibt es nicht!*'..rpic_nsfw.doc, true)
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
return rpic_nsfw
|
81
miku/plugins/rule34.lua
Normal file
81
miku/plugins/rule34.lua
Normal file
@ -0,0 +1,81 @@
|
||||
local rule34 = {}
|
||||
|
||||
function rule34:init(config)
|
||||
rule34.triggers = {
|
||||
"^/r34 (.+)$",
|
||||
"^/rule34 (.+)$",
|
||||
"https?://(rule34.xxx)/index.php%?page=post&s=view&id=(%d+)"
|
||||
}
|
||||
rule34.doc = [[*
|
||||
]]..config.cmd_pat..[[r34* _<Tags>_: Sucht auf Rule34 mit diesen Tags (NSFW)]]
|
||||
end
|
||||
|
||||
rule34.command = 'r34 <Tags>'
|
||||
|
||||
function rule34:get_r34_info(tag)
|
||||
local limit = 100 -- number of posts to return (higher = more choices for random, but longer load times, hard limit of 100 posts)
|
||||
local BASE_URL = 'https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20xml%20where%20url%3D%27http%3A%2F%2Frule34.xxx%2Findex.php%3Fpage%3Ddapi%26s%3Dpost%26q%3Dindex%26limit%3D'..limit..'%26tags%3D'
|
||||
local END_URL = '%27&format=json'
|
||||
local url = BASE_URL..tag..END_URL
|
||||
local res, code = https.request(url)
|
||||
if code ~= 200 then return nil end
|
||||
local r34 = json.decode(res).query.results.posts.post
|
||||
if not r34[1] then return nil end
|
||||
|
||||
|
||||
local i = math.random(#r34)
|
||||
local url = r34[i].file_url
|
||||
local source_url = 'http://rule34.xxx/index.php?page=post&s=view&id='..r34[i].id
|
||||
return url, source_url
|
||||
end
|
||||
|
||||
function rule34:get_r34_post(id)
|
||||
local url = 'https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20xml%20where%20url%3D%27http%3A%2F%2Frule34.xxx%2Findex.php%3Fpage%3Ddapi%26s%3Dpost%26q%3Dindex%26id%3D'..id..'%27&format=json'
|
||||
local res ,code = https.request(url)
|
||||
|
||||
if code ~= 200 then return nil end
|
||||
local r34 = json.decode(res).query.results.posts.post
|
||||
if not r34 then return nil end
|
||||
|
||||
local img_url = r34.file_url
|
||||
return img_url
|
||||
end
|
||||
|
||||
function rule34:action(msg, config, matches)
|
||||
if matches[1] == 'rule34.xxx' and matches[2] then
|
||||
local id = matches[2]
|
||||
local img_url = rule34:get_r34_post(id)
|
||||
if not img_url 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(img_url)
|
||||
if string.ends(img_url, ".gif") then
|
||||
utilities.send_document(self, msg.chat.id, file)
|
||||
else
|
||||
utilities.send_photo(self, msg.chat.id, file)
|
||||
end
|
||||
|
||||
else
|
||||
|
||||
local tag = string.gsub(matches[1], " ", '_')
|
||||
local tag = string.gsub(tag, ":", '%%3A')
|
||||
local tag = string.gsub(tag, "+", '%%2B')
|
||||
local url, id = rule34:get_r34_info(tag)
|
||||
if not url 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(url)
|
||||
if string.ends(url, ".gif") then
|
||||
utilities.send_document(self, msg.chat.id, file, id)
|
||||
else
|
||||
utilities.send_photo(self, msg.chat.id, file, id)
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
return rule34
|
52
miku/plugins/sankakucomplex.lua
Normal file
52
miku/plugins/sankakucomplex.lua
Normal file
@ -0,0 +1,52 @@
|
||||
local sankakucomplex = {}
|
||||
|
||||
function sankakucomplex:init(config)
|
||||
sankakucomplex.triggers = utilities.triggers(self.info.username, config.cmd_pat):t('sc', true):t('sankaku', true).table
|
||||
sankakucomplex.doc = [[*
|
||||
]]..config.cmd_pat..[[sc* _<Tags>_: Sucht auf Sankaku mit diesen Tags]]
|
||||
end
|
||||
|
||||
sankakucomplex.command = 'sc <Tags>'
|
||||
|
||||
function sankakucomplex:get_post(tag)
|
||||
local user = cred_data.sankaku_username
|
||||
local password = cred_data.sankaku_pw --Your SHA1 hashed password. (echo "choujin-steiner--YOUR-PASSWORD--" | sha1sum)
|
||||
local BASE_URL = 'https://chan.sankakucomplex.com'
|
||||
local url = BASE_URL..'/post/index.json?login='..user..'&password_hash='..password..'&tags='..tag
|
||||
local b,c = https.request(url)
|
||||
if c ~= 200 then return nil end
|
||||
local complex = json.decode(b)
|
||||
if not complex[1] then return nil end
|
||||
|
||||
local i = math.random(#complex)
|
||||
local link_image = 'https:'..complex[i].file_url
|
||||
return link_image
|
||||
end
|
||||
|
||||
function sankakucomplex:action(msg, config)
|
||||
local input = utilities.input_from_msg(msg)
|
||||
if not input then
|
||||
utilities.send_reply(self, msg, sankakucomplex.doc, true)
|
||||
return
|
||||
end
|
||||
|
||||
local tag = string.gsub(input, " ", '_' )
|
||||
local tag = string.gsub(tag, ":", '%%3A' )
|
||||
|
||||
local url = sankakucomplex:get_post(tag)
|
||||
if not url 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(url)
|
||||
if string.match(url, ".gif") or string.match(url, ".zip") or string.match(url, ".webm") or string.match(url, ".mp4") then
|
||||
utilities.send_document(self, msg.chat.id, file)
|
||||
else
|
||||
utilities.send_photo(self, msg.chat.id, file)
|
||||
end
|
||||
utilities.send_reply(self, msg, url)
|
||||
end
|
||||
|
||||
return sankakucomplex
|
44
miku/plugins/yandere.lua
Normal file
44
miku/plugins/yandere.lua
Normal file
@ -0,0 +1,44 @@
|
||||
local yandere = {}
|
||||
|
||||
function yandere:init(config)
|
||||
yandere.triggers = utilities.triggers(self.info.username, config.cmd_pat):t('yan', true):t('yandere', true).table
|
||||
yandere.doc = [[*
|
||||
]]..config.cmd_pat..[[yan* _<Tags>_: Sucht auf Yandere mit diesen Tags]]
|
||||
end
|
||||
|
||||
yandere.command = 'yan <Tags>'
|
||||
|
||||
function yandere:get_post(tag)
|
||||
local BASE_URL = 'https://yande.re'
|
||||
local url = BASE_URL..'/post.json?tags='..tag
|
||||
local b,c = https.request(url)
|
||||
print(url)
|
||||
if c ~= 200 then return nil end
|
||||
local yan = json.decode(b)
|
||||
if not yan[1] then return nil end
|
||||
|
||||
local i = math.random(#yan)
|
||||
local link_image = yan[i].file_url
|
||||
return link_image
|
||||
end
|
||||
|
||||
function yandere:action(msg, config)
|
||||
local input = utilities.input_from_msg(msg)
|
||||
if not input then
|
||||
utilities.send_reply(self, msg, yandere.doc, true)
|
||||
return
|
||||
end
|
||||
|
||||
local tag = string.gsub(input, " ", '_' )
|
||||
local url = yandere:get_post(tag)
|
||||
if not url 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(url)
|
||||
utilities.send_photo(self, msg.chat.id, file)
|
||||
utilities.send_reply(self, msg, url)
|
||||
end
|
||||
|
||||
return yandere
|
26
miku/plugins/z0r.lua
Normal file
26
miku/plugins/z0r.lua
Normal file
@ -0,0 +1,26 @@
|
||||
local z0r = {}
|
||||
|
||||
function z0r:init(config)
|
||||
z0r.triggers = {
|
||||
"https?://z0r.de/(%d+)$",
|
||||
"^/[Zz]0[Rr] (%d+)$"
|
||||
}
|
||||
z0r.doc = [[*
|
||||
]]..config.cmd_pat..[[z0r* _<ID>_: Sendet Loop von z0r]]
|
||||
end
|
||||
|
||||
z0r.command = 'z0r <ID>'
|
||||
|
||||
function z0r:action(msg, config, matches)
|
||||
local id = matches[1]
|
||||
utilities.send_typing(self, msg.chat.id, 'upload_video')
|
||||
local url = 'http://z0r.de/L/z0r-de_'..matches[1]..'.swf'
|
||||
local file = download_to_file(url)
|
||||
if not file then
|
||||
utilities.send_reply(self, msg, config.errors.connection)
|
||||
return
|
||||
end
|
||||
utilities.send_document(self, msg.chat.id, file)
|
||||
end
|
||||
|
||||
return z0r
|
Reference in New Issue
Block a user