59 lines
1.8 KiB
Lua
59 lines
1.8 KiB
Lua
local nicovideo = {}
|
|
|
|
nicovideo.triggers = {
|
|
"nicovideo.jp/watch/(sm%d+)",
|
|
"nicovideo.jp/watch/(%d+)",
|
|
"nico.ms/(sm%d+)"
|
|
}
|
|
|
|
local makeOurDate = function(dateString)
|
|
local pattern = "(%d+)%-(%d+)%-(%d+)T"
|
|
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
|
|
|
|
function nicovideo:get_video(id)
|
|
local url = 'https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20xml%20where%20url%3D%22http%3A%2F%2Fext.nicovideo.jp%2Fapi%2Fgetthumbinfo%2F'..id..'%22&format=json'
|
|
local res, code = https.request(url)
|
|
if code ~= 200 then return nil end
|
|
local data = json.decode(res).query.results.nicovideo_thumb_response.thumb
|
|
if not data then return nil end
|
|
|
|
local title = data.title
|
|
local date = makeOurDate(data.first_retrieve)
|
|
if data.user_nickname then
|
|
user = data.user_nickname
|
|
else
|
|
user = data.ch_name
|
|
end
|
|
local views = comma_value(data.view_counter)
|
|
local dura = data.length
|
|
local favs = comma_value(data.mylist_counter)
|
|
local comm = comma_value(data.comment_num)
|
|
local pic = data.thumbnail_url
|
|
|
|
local text = '<b>'..title..'</b>\nHochgeladen am '..date..' von <b>'..user..'</b>, <i>'..views..'x angesehen, Länge: '..dura..', '..favs..'x favoritisiert, '..comm..' Kommentare</i>'
|
|
|
|
return text, pic
|
|
end
|
|
|
|
function nicovideo:action(msg, config, matches)
|
|
local id = matches[1]
|
|
local text, pic_url = nicovideo:get_video(id)
|
|
if not text then
|
|
utilities.send_reply(msg, config.errors.results)
|
|
return
|
|
end
|
|
utilities.send_typing(msg.chat.id, 'upload_photo')
|
|
local file = download_to_file(pic_url, 'nicovideo_thumb.png')
|
|
utilities.send_photo(msg.chat.id, file, nil, msg.message_id)
|
|
utilities.send_reply(msg, text, 'HTML')
|
|
end
|
|
|
|
return nicovideo |