]> git.sesse.net Git - vlc/commitdiff
appletrailer: sort the elements of the playlist.
authorRémi Duraffort <ivoire@videolan.org>
Sun, 22 Aug 2010 07:09:57 +0000 (09:09 +0200)
committerRémi Duraffort <ivoire@videolan.org>
Sun, 22 Aug 2010 07:09:57 +0000 (09:09 +0200)
share/lua/playlist/appletrailers.lua

index ad6437fd956c4ddc55a720bd377736bf448671d8..434300f830c6b926852c8073edb694698cfa2697 100644 (file)
@@ -3,7 +3,7 @@
    movie URL
 
  $Id$
- Copyright © 2007 the VideoLAN team
+ Copyright © 2007-2010 the VideoLAN team
 
  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
@@ -31,6 +31,27 @@ function find( haystack, needle )
     return r
 end
 
+function sort(a, b)
+    if(a == nil) then return false end
+    if(b == nil) then return false end
+
+    local str_a
+    local str_b
+
+    if(string.find(a.name, '%(') == 1) then
+        str_a = tonumber(string.sub(a.name, 2, string.find(a.name, 'p') - 1))
+        str_b = tonumber(string.sub(b.name, 2, string.find(b.name, 'p') - 1))
+    else
+        str_a = string.sub(a.name, 1, string.find(a.name, '%(') - 2)
+        str_b = string.sub(b.name, 1, string.find(b.name, '%(') - 2)
+        if(str_a == str_b) then
+            str_a = tonumber(string.sub(a.name, string.len(str_a) + 3, string.find(a.name, 'p', string.len(str_a) + 3) - 1))
+            str_b = tonumber(string.sub(b.name, string.len(str_b) + 3, string.find(b.name, 'p', string.len(str_b) + 3) - 1))
+        end
+    end
+    if(str_a > str_b) then return false else return true end
+end
+
 -- Parse function.
 function parse()
     local playlist = {}
@@ -43,7 +64,7 @@ function parse()
         if not line then break end
 
         if string.match( line, "class=\".-first" ) then
-            description = find( line, "h%d.->(.-)</h%d")
+            description = find( line, "h%d.->(.-)</h%d") .. ' '
         end
         if string.match( line, 'img src=') then
             for img in string.gmatch(line, '<img src="(http://.*\.jpg)" ') do
@@ -59,11 +80,13 @@ function parse()
             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 .. ")",
+                                          name = description ..  '(' .. resolution .. ')',
                                           arturl = art_url,
                                           options = {":http-user-agent=QuickTime/7.2", ":demux=avformat,ffmpeg",":play-and-pause"} } )
             end
         end
     end
+
+    table.sort(playlist, sort)
     return playlist
 end