do local api_key = cred_data.tumblr_api_key local makeOurDate = function(dateString) local pattern = "(%d+)%-(%d+)%-(%d+)" 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 local function get_tumblr_text(data) local title = data.posts[1].title local post = unescape(data.posts[1].body) return title, post end local function get_tumblr_photo(data) local caption = data.posts[1].summary local image_url = data.posts[1].photos[1].original_size.url return caption, image_url end local function get_tumblr_video(data) local caption = data.posts[1].caption local video_url = data.posts[1].video_url return caption, video_url end local function get_tumblr_info(blog, post, receiver) local url = 'https://api.tumblr.com/v2/blog/'..blog..'.tumblr.com/posts?id='..post..'&api_key='..api_key..'&filter=text' local res,code = https.request(url) local data = json:decode(res).response if code ~= 200 then return "HTTP-Fehler" end if not data.posts then return "HTTP-Fehler" end -- General blog info, present on every type local blog_name = data.blog.title local created_at = makeOurDate(data.posts[1].date) local short_url = data.posts[1].short_url local typ = data.posts[1].type local text = blog_name..' am '..created_at..':\n' -- type-specific if typ == 'text' then local title, post = get_tumblr_text(data) text = text..title..'\n'..post..'\n'..short_url elseif typ == 'photo' then local caption, image_url = get_tumblr_photo(data) text = text..caption..'\n'..short_url local file = download_to_file(image_url) local cb_extra = {file_path=file} if string.ends(image_url, '.gif') then send_document(receiver, file, rmtmp_cb, cb_extra) else send_photo(receiver, file, rmtmp_cb, cb_extra) end elseif typ == 'video' then local caption, video_url = get_tumblr_video(data) text = text..caption..'\n'..video_url..'\n'..short_url else text = text..'Konnte Format nicht bestimmen (ist: '..typ..')' end return text end local function get_tumblr_blog(blog, receiver) local url = 'https://api.tumblr.com/v2/blog/'..blog..'.tumblr.com/info?api_key='..api_key local res,code = https.request(url) local data = json:decode(res).response.blog if code ~= 200 then return "HTTP-Fehler" end if not data then return "HTTP-Fehler" end local title = data.title if data.description == "" then description = '' else description = '\n'..data.description end if data.posts == 1 then posts = data.posts..' Post' else posts = data.posts..' Posts' end if data.likes then likes = ', '..data.likes..' Likes' else likes = '' end local text = title..description..'\n\n'..posts..likes..'\n' return text end local function run(msg, matches) local blog = matches[1] local post = matches[2] local receiver = get_receiver(msg) if not post then return get_tumblr_blog(blog, receiver) else return get_tumblr_info(blog, post, receiver) end end return { description = "Sendet Infos zu einem tumblr-Post oder -Blog", usage = "Link zu tumblr-Post oder -Blog", patterns = { "^https?://(.*).tumblr.com/post/(%d+)", "^https?://(.*).tumblr.com/image/(%d+)", "^https?://(.*).tumblr.com/?$" }, run = run } end