Commit 130ff9a3 authored by Rémi Duraffort's avatar Rémi Duraffort

lua: improve the apple trailer sd:

 * fetch the list of video for one item only if required
 * use the provided thumbnail if available.
parent 3b98bdf8
......@@ -23,7 +23,7 @@
-- Probe function.
function probe()
return vlc.access == "http"
and string.match( vlc.path, "www.apple.com/trailers" )
and string.match( vlc.path, "trailers.apple.com" )
end
function find( haystack, needle )
......@@ -33,36 +33,37 @@ end
-- Parse function.
function parse()
p = {}
local playlist = {}
local description = ''
local art_url = ''
while true
do
line = vlc.readline()
if not line then break end
for path in string.gmatch( line, "http://movies.apple.com/movies/.-%.mov" ) do
path = vlc.strings.decode_uri( path )
if string.match( path, "320" ) then
extraname = " (320p)"
elseif string.match( path, "480" ) then
extraname = " (480p)"
elseif string.match( path, "640" ) then
extraname = " (640p)"
elseif string.match( path, "720" ) then
extraname = " (720p)"
elseif string.match( path, "1080" ) then
extraname = " (1080p)"
else
extraname = ""
end
table.insert( p, { path = path; name = title..extraname; description = description; url = vlc.path; options = ":http-user-agent=\"QuickTime\"" } )
if string.match( line, "class=\".-first" ) then
description = find( line, "h%d.->(.-)</h%d")
end
if string.match( line, "<title>" )
then
title = vlc.strings.decode_uri( find( line, "<title>(.-)<" ) )
if string.match( line, 'img src=') then
for img in string.gmatch(line, '<img src="(http://.*\.jpg)" ') do
art_url = img
end
for i,value in pairs(playlist) do
if value.arturl == '' then
playlist[i].arturl = art_url
else break end
end
end
if string.match( line, "<meta name=\"Description\"" )
then
description = vlc.strings.resolve_xml_special_chars( find( line, "name=\"Description\" content=\"(.-)\"" ) )
if string.match( line, "class=\"hd\".-\.mov") then
for urlline,resolution in string.gmatch(line, "class=\"hd\".-href=\"(.-.mov)\".-(%d+.-p)") do
urlline = string.gsub( urlline, "_"..resolution, "_h"..resolution )
table.insert( playlist, { path = urlline,
name = description .. " (" .. resolution .. ")",
arturl = art_url,
options = {":http-user-agent=QuickTime/7.2", ":demux=avformat,ffmpeg",":play-and-pause"} } )
end
end
end
return p
return playlist
end
......@@ -32,7 +32,6 @@ end
function main()
fd = vlc.stream( "http://trailers.apple.com/trailers/home/feeds/just_hd.json" )
if not fd then return nil end
options = {":http-user-agent=QuickTime/7.2",":demux=avformat,ffmpeg",":play-and-pause"}
line = fd:readline()
while line ~= nil
do
......@@ -45,31 +44,10 @@ function main()
end
url = find( line, "location\":\"(.-)\"")
playlist = vlc.stream( "http://trailers.apple.com"..url.."includes/playlists/web.inc" )
if not playlist then
vlc.msg.info("Didn't get playlist...")
end
node = vlc.sd.add_node( {title=title,arturl=art} )
node = vlc.sd.add_item( {title = title,
path = "http://trailers.apple.com"..url.."includes/playlists/web.inc",
arturl = art})
playlistline = playlist:readline()
description =""
if not playlistline then vlc.msg.info("Empty playlists-file") end
while playlistline ~= nil
do
if string.match( playlistline, "class=\".-first" ) then
description = find( playlistline, "h%d.->(.-)</h%d")
end
if string.match( playlistline, "class=\"hd\".-\.mov") then
for urlline,resolution in string.gmatch(playlistline, "class=\"hd\".-href=\"(.-.mov)\".-(%d+.-p)") do
urlline = string.gsub( urlline, "_"..resolution, "_h"..resolution )
node:add_subitem( {path = urlline,
title=title.." "..description.." ("..resolution..")",
options=options, arturl=art })
end
end
playlistline = playlist:readline()
end
end
line = fd:readline()
end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment