From: RĂ©mi Duraffort Date: Fri, 20 Aug 2010 18:46:26 +0000 (+0200) Subject: lua: improve the apple trailer sd: X-Git-Tag: 1.2.0-pre1~5379 X-Git-Url: https://git.sesse.net/?p=vlc;a=commitdiff_plain;h=130ff9a34434077cb185c4612d5795631137ffe7 lua: improve the apple trailer sd: * fetch the list of video for one item only if required * use the provided thumbnail if available. --- diff --git a/share/lua/playlist/appletrailers.lua b/share/lua/playlist/appletrailers.lua index dd1a5f1246..ad6437fd95 100644 --- a/share/lua/playlist/appletrailers.lua +++ b/share/lua/playlist/appletrailers.lua @@ -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.->(.-)" ) - then - title = vlc.strings.decode_uri( find( line, "(.-)<" ) ) + 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 diff --git a/share/lua/sd/appletrailers.lua b/share/lua/sd/appletrailers.lua index 3675c5d9cb..244f30e5d6 100644 --- a/share/lua/sd/appletrailers.lua +++ b/share/lua/sd/appletrailers.lua @@ -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