Youtube のコメントを見る Chrome 拡張を作ってみたが、もし公開するなら API鍵を拡張の中に含めないほうがいいらしいので、OpenWRT の Lua CGI で中継できるのかどうか試行してみた。
しかし、使おうと思った luci.httpclient が https の処理に nixio.tls を必要とするのに、OpenWRT の nixio は tls 抜きで作られており、うまくいかなかった。
とりあえず wget を呼ぶとかいうアホくさいことをして、動くことだけ確認したところでもうやめた。
#!/usr/bin/lua
local nixio = require("nixio")
local host = nixio.getenv("HTTP_HOST") or ""
if host ~= "example.com" then
return
end
local method = nixio.getenv("REQUEST_METHOD") or ""
if method ~= "GET" then
return
end
local q = nixio.getenv("QUERY_STRING") or ""
local vid = string.match(q, "^vid=([0-9A-Za-z_-]+)$")
local vidlen = string.len(vid or "")
if vidlen == 11 then
local pipe = io.popen("wget -q -O - 'https://www.googleapis.com/youtube/v3/commentThreads?maxResults=10&order=relevance&part=snippet&textFormat=plaintext&key=XXXXX&videoId=" .. vid .. "'")
local json = pipe:read("*a")
local result = {pipe:close()}
print("Access-Control-Allow-Origin: https://www.youtube.com\r")
print("Content-Type: application/json; charset=UTF-8\r")
print("\r")
if result[1] and type(json) == "string" and json:len() > 1 then
print(json)
else
print('{"items":[]}')
end
end