This repository has been archived on 2021-04-24. You can view files and clone it, but cannot push or open issues or pull requests.
Mikubot-2/otouto/plugins/media.lua
Andreas Bielawski 153da30435 - File-ID-Caching ausgegliedert
- Images cached jetzt auch File-IDs
2016-07-05 19:21:37 +02:00

59 lines
2.0 KiB
Lua

local media = {}
local HTTP = require('socket.http')
local HTTPS = require('ssl.https')
local redis = (loadfile "./otouto/redis.lua")()
local utilities = require('otouto.utilities')
local mimetype = (loadfile "./otouto/mimetype.lua")()
media.triggers = {
"(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(gif))$",
"^(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(mp4))$",
"(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(pdf))$",
"(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(ogg))$",
"(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(zip))$",
"(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(tar.gz))$",
"(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(7z))$",
"(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(mp3))$",
"(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(rar))$",
"(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(wmv))$",
"(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(doc))$",
"^(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(avi))$",
"(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(wav))$",
"(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(apk))$",
"(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(webm))$",
"^(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(ogv))$",
"(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(webp))$"
}
function media:action(msg)
local url = matches[1]
local ext = matches[2]
local receiver = msg.chat.id
local file, last_modified, nocache = get_cached_file(url, nil, msg.chat.id, 'upload_document', self)
local mime_type = mimetype.get_content_type_no_sub(ext)
if ext == 'gif' then
print('send gif')
result = utilities.send_document(self, receiver, file, nil, msg.message_id)
elseif mime_type == 'audio' then
print('send_audio')
result = utilities.send_audio(self, receiver, file, nil, msg.message_id)
elseif mime_type == 'video' then
print('send_video')
result = utilities.send_video(self, receiver, file, nil, msg.message_id)
else
print('send_file')
result = utilities.send_document(self, receiver, file, nil, msg.message_id)
end
if nocache then return end
if not result then return end
-- Cache File-ID und Last-Modified-Header in Redis
cache_file(result, url, last_modified)
end
return media