#!/usr/bin/env lua require 'tokyocabinet' json = require 'json' http = require 'lcurl' CACHE = "/home/bie/tmp.db" cache = tokyocabinet.bdbnew() cache:open(CACHE, cache.OWRITER + cache.OREADER) function oembed(url) local cached = cache:get(url) if cached then local data = json.decode(cached) return data.html end local body = "" local result = http.easy{url=url, writefunction=function(s) body = body .. s end}:perform() if result:getinfo(http.INFO_RESPONSE_CODE) == 200 then cache:put(url, body) local data = json.decode(body) return data.html else return ("Klarte ikke embedde %s :("):format(url) end end function twitter(id) return oembed("https://publish.twitter.com/oembed?url=" .. id) end function youtube(id) return oembed("http://www.youtube.com/oembed?url=" .. id) end function soundcloud(id) return oembed("https://soundcloud.com/oembed?format=json&url=" .. id) end function vimeo(id) return oembed("https://developer.vimeo.com/apis/oembed.json?url=" .. id) end function twitch(id) return oembed("https://api.twitch.tv/v4/oembed?url=" .. id) end function instagram(id) return oembed("https://api.instagram.com/oembed?url=" .. id) end function flickr(id) return oembed("https://www.flickr.com/services/oembed?url=" .. id) end function facebook(id) return oembed("https://www.facebook.com/plugins/video/oembed.json?url=" .. id) end -- if arg[1] then -- print(arg[1]) -- io.input(arg[1]) -- end for line in io.lines() do line = line:gsub("$%s*twitter:%s*(.*)", twitter) line = line:gsub("$%s*youtube:%s*(.*)", youtube) line = line:gsub("$%s*soundcloud:%s*(.*)", soundcloud) line = line:gsub("$%s*twitch:%s*(.*)", twitch) line = line:gsub("$%s*vimeo:%s*(.*)", vimeo) line = line:gsub("$%s*instagram:%s*(.*)", instagram) line = line:gsub("$%s*flickr:%s*(.*)", flickr) line = line:gsub("$%s*facebook:%s*(.*)", facebook) print(line) end