Update search_youtube.lua to send Title image and description

This commit is contained in:
CheatCoder 2015-03-25 10:58:21 +01:00
parent 6b5ed82584
commit 02d72e0b62

View File

@ -1,12 +1,33 @@
do do
local BASE_URL = 'http://gdata.youtube.com/feeds/api/'
function get_yt_data (yt_code)
local url = BASE_URL..'/videos/'..yt_code..'?v=2&alt=jsonc'
local res,code = http.request(url)
if code ~= 200 then return "HTTP ERROR" end
local data = json:decode(res).data
return data
end
function send_youtube_data(data, receiver, link)
local title = data.title
local description = data.description
local uploader = data.uploader
local text = title..' ('..uploader..')\n'..description..'\n\nLink:' .. link
local image_url = data.thumbnail.hqDefault
local cb_extra = {receiver=receiver, url=image_url}
send_msg(receiver, text, send_photo_from_url_callback, cb_extra)
end
function searchYoutubeVideo(text) function searchYoutubeVideo(text)
local data = httpRequest('http://gdata.youtube.com/feeds/api/videos?max-results=1&alt=json&q=' .. URL.escape(text)) local data = httpRequest('http://gdata.youtube.com/feeds/api/videos?max-results=1&alt=json&q=' .. URL.escape(text))
if not data then if not data then
print("HTTP Error") print("HTTP Error")
return nil return nil
elseif not data.feed.entry then elseif not data.feed.entry then
return "YouTube video not found!" return "YouTube video not found!"
end end
return data.feed.entry[1].link[1].href return data.feed.entry[1].link[1].href
end end
@ -19,16 +40,20 @@ end
function run(msg, matches) function run(msg, matches)
local text = msg.text:sub(string.len(matches[1]) + 1,-1) local text = msg.text:sub(string.len(matches[1]) + 1,-1)
return searchYoutubeVideo(text) local link = searchYoutubeVideo(text)
local yt_code = link:match("?v=([_A-Za-z0-9-]+)")
local data = get_yt_data(yt_code)
local receiver = get_receiver(msg)
send_youtube_data(data, receiver, link)
end end
return { return {
description = "Search video on youtube and send it.", description = "Search video on youtube and send it.",
usage = "!youtube [term]: Search for a youtube video and send it.", usage = "!youtube [term]: Search for a youtube video and send it.",
patterns = { patterns = {
"^!youtube" "^!youtube"
}, },
run = run run = run
} }
end end