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/miku/plugins/flickr.lua

72 lines
2.4 KiB
Lua

local flickr = {}
function flickr:init(config)
if not cred_data.flickr_apikey then
print('Fehlender Key: flickr_apikey.')
print('flickr.lua wird nicht aktiviert.')
return
end
flickr.triggers = {
'flickr.com/photos/([A-Za-z0-9-_-]+)/([0-9]+)'
}
end
local BASE_URL = 'https://api.flickr.com/services/rest'
local makeOurDate = function(dateString)
local pattern = '(%d+)%-(%d+)%-(%d+) (%d+)%:(%d+)%:(%d+)'
local year, month, day, hours, minutes, seconds = dateString:match(pattern)
return day..'.'..month..'.'..year..' um '..hours..':'..minutes..':'..seconds..' Uhr'
end
function flickr:get_flickr_photo_data (photo_id)
local apikey = cred_data.flickr_apikey
local url = BASE_URL..'/?method=flickr.photos.getInfo&api_key='..apikey..'&photo_id='..photo_id..'&format=json&nojsoncallback=1'
local res,code = https.request(url)
if code ~= 200 then return "HTTP-FEHLER" end
local data = json.decode(res).photo
return data
end
function flickr:send_flickr_photo_data(data)
local title = data.title._content
local username = data.owner.username
local taken = data.dates.taken
local views = data.views
if data.usage.candownload == 1 then
local text = '"'..title..'", aufgenommen am '..makeOurDate(taken)..' von '..username..' ('..comma_value(data.views)..' Aufrufe)'
local image_url = 'https://farm'..data.farm..'.staticflickr.com/'..data.server..'/'..data.id..'_'..data.originalsecret..'_o_d.'..data.originalformat
if data.originalformat == 'gif' then
return text, image_url, true
else
return text, image_url
end
else
return '<b>'..title..'</b>, aufgenommen '..taken..' von <b>'..username..'</b> <i>('..data.views..' Aufrufe)</i>\nBild konnte nicht gedownloadet werden (Keine Berechtigung)'
end
end
function flickr:action(msg, config, matches)
utilities.send_typing(msg.chat.id, 'upload_photo')
local data = flickr:get_flickr_photo_data(matches[2])
if not data then utilities.send_reply(msg, config.errors.connection) return end
local text, image_url, isgif = flickr:send_flickr_photo_data(data)
if image_url then
utilities.send_typing(msg.chat.id, 'upload_photo')
local file = download_to_file(image_url)
if isgif then
utilities.send_document(msg.chat.id, file, text, msg.message_id)
return
else
utilities.send_photo(msg.chat.id, file, text, msg.message_id)
return
end
else
utilities.send_reply(msg, text, 'HTML')
return
end
end
return flickr