Browse Source

dailymotion.lua: update for website changes

pull/50/head
Pierre Ynard 10 years ago
parent
commit
9475988ca4
  1. 87
      share/lua/playlist/dailymotion.lua

87
share/lua/playlist/dailymotion.lua

@ -4,7 +4,7 @@
$Id$ $Id$
Copyright © 2007-2011 the VideoLAN team Copyright © 2007-2016 the VideoLAN team
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
@ -32,9 +32,6 @@ end
-- Parse function. -- Parse function.
function parse() function parse()
prefres = vlc.var.inherit(nil, "preferred-resolution")
while true while true
do do
line = vlc.readline() line = vlc.readline()
@ -49,56 +46,46 @@ function parse()
description = vlc.strings.resolve_xml_special_chars( description ) description = vlc.strings.resolve_xml_special_chars( description )
end end
end end
if string.match( line, "<meta name=\"author\"" ) then
_,_,artist = string.find( line, "content=\"(.-)\"" )
artist = vlc.strings.resolve_xml_special_chars( artist )
end
if string.match( line, "<link rel=\"thumbnail\" type=\"image/jpeg\"" ) then if string.match( line, "<link rel=\"thumbnail\" type=\"image/jpeg\"" ) then
_,_,arturl = string.find( line, "href=\"(.-)\"" ) _,_,arturl = string.find( line, "href=\"(.-)\"" )
end end
end
page_embed = string.gsub(vlc.path, "dailymotion.com/video/", "dailymotion.com/embed/video/")
page_url = vlc.stream(vlc.access .. "://" .. page_embed )
if not page_url then return nil end
page = page_url:read( 65653 )
hd1080url = string.match( page, "\"stream_h264_hd1080_url\"%s*:%s*\"([^\"]*)\"")
hdurl = string.match( page, "\"stream_h264_hd_url\"%s*:%s*\"([^\"]*)\"")
hqurl = string.match( page, "\"stream_h264_hq_url\"%s*:%s*\"([^\"]*)\"")
baseurl = string.match( page, "\"stream_h264_url\"%s*:%s*\"([^\"]*)\"")
ldurl = string.match( page, "\"stream_h264_ld_url\"%s*:%s*\"([^\"]*)\"")
livehlsurl = string.match( page, "\"stream_live_hls_url\"%s*:%s*\"([^\"]*)\"")
arr_videos_urls = {}
if hd1080url then table.insert(arr_videos_urls,hd1080url) end
if hdurl then table.insert(arr_videos_urls,hdurl) end
if hqurl then table.insert(arr_videos_urls,hqurl) end
if baseurl then table.insert(arr_videos_urls,baseurl) end
if ldurl then table.insert(arr_videos_urls,baseurl) end
if string.match( line, "var config = {" ) then
artist = string.match( line, '"username":"([^"]+)"' )
local streams = string.match( line, "\"qualities\":{(.-%])}" )
if streams then
local prefres = vlc.var.inherit(nil, "preferred-resolution")
local file = nil
local live = nil
for height,stream in string.gmatch( streams, "\"(%w+)\":%[(.-)%]" ) do
-- Apparently formats are listed in increasing quality
-- order, so we take the first, lowest quality as
-- fallback, then pick the last one that matches.
if string.match( height, "^(%d+)$" ) and ( ( not file ) or prefres < 0 or tonumber( height ) <= prefres ) then
local f = string.match( stream, '"type":"video\\/[^"]+","url":"([^"]+)"' )
if f then
file = f
end
end
if not live then
live = string.match( stream, '"type":"application\\/x%-mpegURL","url":"([^"]+)"' )
end
end
-- Pick live streaming only as a fallback
path = file or live
if path then
path = string.gsub( path, "\\/", "/")
end
end
end
end
if livehlsurl then if not path then
return { { path = livehlsurl:gsub("\\/", "/"); name = name; description = description; url = vlc.path; arturl = arturl ; artist = artist} } vlc.msg.err("Couldn't extract the video URL from dailymotion")
else return { }
if table.getn(arr_videos_urls) > 0 then end
for i=1 , table.getn(arr_videos_urls) do
video_url_out = arr_videos_urls[i]:gsub("\\/", "/")
if prefres < 0 then return { { path = path; name = name; description = description; url = vlc.path; arturl = arturl; artist = artist } }
break
end
height = string.match( video_url_out, "/cdn/%w+%-%d+x(%d+)/video/" )
if not height or tonumber(height) <= prefres then
break
end
end
return { { path = video_url_out; name = name; description = description; url = vlc.path; arturl = arturl; artist = artist} }
else
vlc.msg.err("Couldn't extract the video URL from dailymotion")
return { }
end
end
end end

Loading…
Cancel
Save