vanhofen
5 years ago
2 changed files with 3 additions and 156 deletions
@ -1,154 +0,0 @@ |
|||||
-- 03.03.2016 |
|
||||
-- Copyright (C) 2011-2013 Anton Burdinuk |
|
||||
-- clark15b@gmail.com |
|
||||
-- https://tsdemuxer.googlecode.com/svn/trunk/xupnpd |
|
||||
|
|
||||
cfg.vimeo_video_count=100 |
|
||||
cfg.vimeo_fmt='1080p' -- quality: 1080p 720p 360p 270p |
|
||||
|
|
||||
function pop(cmd) |
|
||||
local f = assert(io.popen(cmd, 'r')) |
|
||||
local s = assert(f:read('*a')) |
|
||||
f:close() |
|
||||
return s |
|
||||
end |
|
||||
|
|
||||
function https_download(url) |
|
||||
local clip_page = pop("curl -k " .. url) |
|
||||
return clip_page |
|
||||
end |
|
||||
|
|
||||
function vimeo_parse_feed(feed_url) |
|
||||
local t={} |
|
||||
|
|
||||
local feed_data=http.download(feed_url) |
|
||||
|
|
||||
if feed_data then |
|
||||
local x=json.decode(feed_data) |
|
||||
|
|
||||
feed_data=nil |
|
||||
|
|
||||
if x then |
|
||||
local idx=1 |
|
||||
for i,j in ipairs(x) do |
|
||||
t[idx]={ ['title']=j.title, ['link']=j.url, ['logo']=j.thumbnail_medium } |
|
||||
idx=idx+1 |
|
||||
end |
|
||||
end |
|
||||
end |
|
||||
|
|
||||
return t |
|
||||
end |
|
||||
|
|
||||
-- username, channel/channelname, group/groupname, album/album_id |
|
||||
function vimeo_updatefeed(feed,friendly_name) |
|
||||
local rc=false |
|
||||
|
|
||||
local feed_url='http://vimeo.com/api/v2/'..feed..'/videos.json' |
|
||||
local feed_name='vimeo_'..string.gsub(feed,'/','_') |
|
||||
local feed_m3u_path=cfg.feeds_path..feed_name..'.m3u' |
|
||||
local tmp_m3u_path=cfg.tmp_path..feed_name..'.m3u' |
|
||||
|
|
||||
local x=rss_merge(vimeo_parse_feed(feed_url),rss_parse_m3u(feed_m3u_path),cfg.vimeo_video_count) |
|
||||
|
|
||||
-- local x=vimeo_parse_feed(feed_url) |
|
||||
|
|
||||
if x then |
|
||||
local dfd=io.open(tmp_m3u_path,'w+') |
|
||||
if dfd then |
|
||||
dfd:write('#EXTM3U name=\"',friendly_name or feed_name,'\" type=mp4 plugin=vimeo\n') |
|
||||
|
|
||||
for i,j in ipairs(x) do |
|
||||
if j.logo then |
|
||||
dfd:write('#EXTINF:0 logo=',j.logo,' ,',j.title,'\n',j.link,'\n') |
|
||||
else |
|
||||
dfd:write('#EXTINF:0 ,',j.title,'\n',j.link,'\n') |
|
||||
end |
|
||||
end |
|
||||
dfd:close() |
|
||||
|
|
||||
if util.md5(tmp_m3u_path)~=util.md5(feed_m3u_path) then |
|
||||
if os.execute(string.format('mv %s %s',tmp_m3u_path,feed_m3u_path))==0 then |
|
||||
if cfg.debug>0 then print('Vimeo feed \''..feed_name..'\' updated') end |
|
||||
rc=true |
|
||||
end |
|
||||
else |
|
||||
util.unlink(tmp_m3u_path) |
|
||||
end |
|
||||
end |
|
||||
end |
|
||||
|
|
||||
return rc |
|
||||
end |
|
||||
|
|
||||
-- send '\r\n' before data |
|
||||
function vimeo_sendurl(vimeo_url,range) |
|
||||
|
|
||||
if plugin_sendurl_from_cache(vimeo_url,range) then return end |
|
||||
|
|
||||
local url=vimeo_get_video_url(vimeo_url) |
|
||||
|
|
||||
if url==nil then |
|
||||
if cfg.debug>0 then print('Vimeo clip '..vimeo_url..' is not found') end |
|
||||
|
|
||||
plugin_sendfile('www/corrupted.mp4') |
|
||||
else |
|
||||
if cfg.debug>0 then print('Vimeo Real URL: '..url) end |
|
||||
|
|
||||
plugin_sendurl(vimeo_url,url,range) |
|
||||
end |
|
||||
|
|
||||
end |
|
||||
|
|
||||
function vimeo_get_video_url(vimeo_url) |
|
||||
|
|
||||
local url=nil |
|
||||
|
|
||||
local vimeo_id=string.match(vimeo_url,'.+/(%w+)$') |
|
||||
local config=plugin_download('http://player.vimeo.com/video/'..vimeo_id..'/config') |
|
||||
-- workaround for https https://player.vimeo.com/video/ |
|
||||
if config == nil then |
|
||||
config = https_download('https://player.vimeo.com/video/'..vimeo_id..'/config') |
|
||||
end |
|
||||
|
|
||||
if config then |
|
||||
local x=json.decode(config) |
|
||||
|
|
||||
config=nil |
|
||||
local best = 0 |
|
||||
for k,v in pairs(x.request.files.progressive) do |
|
||||
if v.quality == cfg.vimeo_fmt then -- "1080p" "720p" |
|
||||
url=v.url |
|
||||
break |
|
||||
end |
|
||||
local quali = tonumber(v.height) |
|
||||
if quali > best then |
|
||||
url=v.url |
|
||||
best = quali |
|
||||
end |
|
||||
end |
|
||||
end |
|
||||
if url then |
|
||||
if url and url:sub(1, 6) == 'https:' then |
|
||||
local url2 = 'http' .. url:sub(6, #url) |
|
||||
url=url2 |
|
||||
end |
|
||||
return url |
|
||||
end |
|
||||
|
|
||||
return nil |
|
||||
|
|
||||
end |
|
||||
|
|
||||
plugins['vimeo']={} |
|
||||
plugins.vimeo.name="Vimeo" |
|
||||
plugins.vimeo.desc="<i>username</i>, channel/<i>channelname</i>, group/<i>groupname</i>, album/<i>album_id</i>" |
|
||||
plugins.vimeo.sendurl=vimeo_sendurl |
|
||||
plugins.vimeo.updatefeed=vimeo_updatefeed |
|
||||
plugins.vimeo.getvideourl=vimeo_get_video_url |
|
||||
|
|
||||
plugins.vimeo.ui_config_vars= |
|
||||
{ |
|
||||
{ "input", "vimeo_video_count", "int" }, |
|
||||
{ "select", "vimeo_fmt" } |
|
||||
} |
|
Loading…
Reference in new issue