[vlc-commits] commit: lua: improve the apple trailer sd: ( Rémi Duraffort )

git at videolan.org git at videolan.org
Fri Aug 20 20:47:52 CEST 2010


vlc | branch: master | Rémi Duraffort <ivoire at videolan.org> | Fri Aug 20 20:46:26 2010 +0200| [130ff9a34434077cb185c4612d5795631137ffe7] | committer: 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.

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=130ff9a34434077cb185c4612d5795631137ffe7
---

 share/lua/playlist/appletrailers.lua |   51 +++++++++++++++++----------------
 share/lua/sd/appletrailers.lua       |   28 ++----------------
 2 files changed, 29 insertions(+), 50 deletions(-)

diff --git a/share/lua/playlist/appletrailers.lua b/share/lua/playlist/appletrailers.lua
index dd1a5f1..ad6437f 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.->(.-)</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
diff --git a/share/lua/sd/appletrailers.lua b/share/lua/sd/appletrailers.lua
index 3675c5d..244f30e 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



More information about the vlc-commits mailing list