diff --git a/plugins/facebook.lua b/plugins/facebook.lua index 5f4e08a..8ce2b94 100644 --- a/plugins/facebook.lua +++ b/plugins/facebook.lua @@ -3,38 +3,167 @@ do -local BASE_URL = 'https://graph.facebook.com' +local BASE_URL = 'https://graph.facebook.com/v2.5' +local fb_access_token = cred_data.fb_access_token -function get_fb_data (fb_code) - local access_token = cred_data.fb_access_token - local url = BASE_URL..'/'..fb_code..'?access_token='..access_token..'&locale=de_DE' - local res,code = https.request(url) - if code ~= 200 then return "HTTP-FEHLER" end - local data = json:decode(res) - return data +local makeOurDate = function(dateString) + local pattern = "(%d+)%/(%d+)%/(%d+)" + local month, day, year = dateString:match(pattern) + return day..'.'..month..'.'..year end -function send_fb_data(data, receiver) +local function get_fb_id(name) + local url = BASE_URL..'/'..name..'?access_token='..fb_access_token..'&locale=de_DE' + local res,code = https.request(url) + if code ~= 200 then return nil end + local data = json:decode(res) + return data.id +end + +local function fb_post (id, story_id) + local url = BASE_URL..'/'..id..'_'..story_id..'?access_token='..fb_access_token..'&locale=de_DE&fields=from,name,story,message,link' + local res,code = https.request(url) + if code ~= 200 then return nil end + local data = json:decode(res) + local from = data.from.name local message = data.message local name = data.name - local link = data.link - local text = from..' hat gepostet:\n'..message..'\n'..name..' '..link + if data.link then + link = '\n'..data.name..':\n'..data.link + else + link = "" + end + + if data.story then + story = ' ('..data.story..')' + else + story = "" + end + + local text = from..story..':\n'..message..'\n'..link + return text +end + +local function send_facebook_photo(photo_id, receiver) + local url = BASE_URL..'/'..photo_id..'?access_token='..fb_access_token..'&locale=de_DE&fields=images,from,name' + local res,code = https.request(url) + if code ~= 200 then return nil end + local data = json:decode(res) + + local from = data.from.name + if data.name then + text = from..' hat ein Bild gepostet:\n'..data.name + else + text = from..' hat ein Bild gepostet:' + end + local image_url = data.images[1].source + local cb_extra = { + receiver=receiver, + url=image_url + } + send_msg(receiver, text, send_photo_from_url_callback, cb_extra) +end + +local function send_facebook_video(video_id, receiver) + local url = BASE_URL..'/'..video_id..'?access_token='..fb_access_token..'&locale=de_DE&fields=description,from,source,title' + local res,code = https.request(url) + if code ~= 200 then return nil end + local data = json:decode(res) + + local from = data.from.name + local description = data.description + local source = data.source + if data.title then + text = from..' hat ein Video gepostet:\n'..description..'\n'..source..'\n('..data.title..')' + else + text = from..' hat ein Video gepostet:\n'..description..'\n'..source + end send_msg(receiver, text, ok_cb, false) end -function run(msg, matches) - local fb_code = matches[2] - local data = get_fb_data(fb_code) - local receiver = get_receiver(msg) - send_fb_data(data, receiver) +local function facebook_info(name) + local url = BASE_URL..'/'..name..'?access_token='..fb_access_token..'&locale=de_DE&fields=about,name,birthday,category,founded,general_info,is_verified' + local res,code = https.request(url) + if code ~= 200 then return nil end + local data = json:decode(res) + + local name = data.name + if data.is_verified then + name = name..' ✅' + end + + local category = data.category + + if data.about then + about = '\n'..data.about + else + about = "" + end + + if data.general_info then + general_info = '\n'..data.general_info + else + general_info = "" + end + + if data.birthday and data.founded then + birth = '\nGeburtstag: '..makeOurDate(data.birthday) + elseif data.birthday and not data.founded then + birth = '\nGeburtstag: '..makeOurDate(data.birthday) + elseif data.founded and not data.birthday then + birth = '\nGegründet: '..data.founded + else + birth = "" + end + + local text = name..' ('..category..')'..about..general_info..birth + return text +end + +local function run(msg, matches) + if matches[1] == 'permalink' or matches[2] == 'posts' then + story_id = matches[3] + if not matches[4] then + id = get_fb_id(matches[1]) + else + id = matches[4] + end + return fb_post(id, story_id) + elseif matches[1] == 'photo' or matches[2] == 'photos' then + if not matches[4] then + photo_id = matches[2] + else + photo_id = matches[4] + end + local receiver = get_receiver(msg) + send_facebook_photo(photo_id, receiver) + elseif matches[1] == 'video' or matches[2] == 'videos' then + if not matches[3] then + video_id = matches[2] + else + video_id = matches[3] + end + local receiver = get_receiver(msg) + send_facebook_video(video_id, receiver) + else + return facebook_info(matches[1]) + end end return { - description = "Sendet Facebook-Post.", - usage = {"Link zu einem Facebook-Post"}, - patterns = {"facebook.com/([A-Za-z0-9-_-]+)/posts/([0-9-]+)","facebook.com/permalink.([a-z-]+)%?story_fbid=([0-9-]+)"}, - run = run + description = "Sendet Facebook-Post, -Foto, -Video oder -Info", + usage = "URL zu öffentlichem Facebook-Post, -Foto, -Video oder -Info", + patterns = { + "facebook.com/([A-Za-z0-9-._-]+)/(posts)/(%d+)", + "facebook.com/(permalink).php%?(story_fbid)=(%d+)&id=(%d+)", + "facebook.com/(photo).php%?fbid=(%d+)", + "facebook.com/([A-Za-z0-9-._-]+)/(photos)/a.(%d+[%d%.]*)/(%d+)", + "facebook.com/(video).php%?v=(%d+)", + "facebook.com/([A-Za-z0-9-._-]+)/(videos)/(%d+[%d%.]*)", + "facebook.com/([A-Za-z0-9-._-]+)" + }, + run = run } -end +end \ No newline at end of file diff --git a/plugins/pluginsold/facebook.lua b/plugins/pluginsold/facebook.lua new file mode 100644 index 0000000..5f4e08a --- /dev/null +++ b/plugins/pluginsold/facebook.lua @@ -0,0 +1,40 @@ +-- This is a proprietary plugin, property of Andreas Bielawski, (c) 2015 +-- DO NOT USE WITHOUT PERMISSION + +do + +local BASE_URL = 'https://graph.facebook.com' + +function get_fb_data (fb_code) + local access_token = cred_data.fb_access_token + local url = BASE_URL..'/'..fb_code..'?access_token='..access_token..'&locale=de_DE' + local res,code = https.request(url) + if code ~= 200 then return "HTTP-FEHLER" end + local data = json:decode(res) + return data +end + +function send_fb_data(data, receiver) + local from = data.from.name + local message = data.message + local name = data.name + local link = data.link + local text = from..' hat gepostet:\n'..message..'\n'..name..' '..link + send_msg(receiver, text, ok_cb, false) +end + +function run(msg, matches) + local fb_code = matches[2] + local data = get_fb_data(fb_code) + local receiver = get_receiver(msg) + send_fb_data(data, receiver) +end + +return { + description = "Sendet Facebook-Post.", + usage = {"Link zu einem Facebook-Post"}, + patterns = {"facebook.com/([A-Za-z0-9-_-]+)/posts/([0-9-]+)","facebook.com/permalink.([a-z-]+)%?story_fbid=([0-9-]+)"}, + run = run +} + +end diff --git a/plugins/facebook_photo.lua b/plugins/pluginsold/facebook_photo.lua similarity index 100% rename from plugins/facebook_photo.lua rename to plugins/pluginsold/facebook_photo.lua diff --git a/plugins/facebook_video.lua b/plugins/pluginsold/facebook_video.lua similarity index 100% rename from plugins/facebook_video.lua rename to plugins/pluginsold/facebook_video.lua diff --git a/plugins/rss_old.lua b/plugins/pluginsold/rss_old.lua similarity index 100% rename from plugins/rss_old.lua rename to plugins/pluginsold/rss_old.lua