]> git.sesse.net Git - vlc/commitdiff
Fetch art urls from free.fr for most channels. This should avoid seeing funky images...
authorFrançois Revol <revol@free.fr>
Fri, 26 Aug 2011 14:13:31 +0000 (16:13 +0200)
committerJean-Baptiste Kempf <jb@videolan.org>
Mon, 29 Aug 2011 13:14:35 +0000 (15:14 +0200)
Signed-off-by: François Revol <revol@free.fr>
Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
share/lua/sd/freebox.lua

index a908648ef08f8e11fe45ba6af32bf8bc67fec409..844cb8dcfa1607dade5f66acd05cea106343b8d0 100644 (file)
@@ -25,7 +25,48 @@ function descriptor()
 end
 
 function main()
-    local fd, msg = vlc.stream( "http://mafreebox.freebox.fr/freeboxtv/playlist.m3u" )
+    local logos = {}
+
+    -- fetch urls for basic channels logos
+    local fd, msg = vlc.stream( "http://free.fr/adsl/pages/television/services-de-television/acces-a-plus-250-chaines/bouquet-basique.html" )
+    if not fd then
+        vlc.msg.warn(msg)
+        -- not fatal
+    else
+        local channel, logourl
+        local line = fd:readline()
+        while line ~= nil do
+            if( string.find( line, "tv%-chaine%-" ) ) then
+                _, _, channel, logourl = string.find( line, "\"tv%-chaine%-(%d+)\".*<img%s*src=\"([^\"]*)\"" )
+                -- fix spaces
+                logourl = string.gsub( logourl, " ", "%%20" )
+                logos[channel] = "http://free.fr" .. logourl
+            end
+            line = fd:readline()
+        end
+    end
+
+    -- fetch urls for optional channels logos
+    local fd, msg = vlc.stream( "http://www.free.fr/adsl/pages/television/services-de-television/acces-a-plus-250-chaines/en-option.html" )
+    if not fd then
+        vlc.msg.warn(msg)
+        -- not fatal
+    else
+        local channel, logourl
+        local line = fd:readline()
+        while line ~= nil do
+            if( string.find( line, "tv%-chaine%-" ) ) then
+                _, _, channel, logourl = string.find( line, "\"tv%-chaine%-(%d+)\".*<img%s*src=\"([^\"]*)\"" )
+                -- fix spaces
+                logourl = string.gsub( logourl, " ", "%%20" )
+                logos[channel] = "http://free.fr" .. logourl
+            end
+            line = fd:readline()
+        end
+    end
+
+    -- fetch the playlist
+    fd, msg = vlc.stream( "http://mafreebox.freebox.fr/freeboxtv/playlist.m3u" )
     if not fd then
         vlc.msg.warn(msg)
         return nil
@@ -35,19 +76,21 @@ function main()
         return nil
     end
     line = fd:readline()
-    local duration, artist, name
+    local duration, artist, name, arturl
     local options={"deinterlace=1"}
     while line ~= nil do
         if( string.find( line, "#EXTINF" ) ) then
             _, _, duration, artist, name = string.find( line, ":(%w+),(%w+)%s*-%s*(.+)" )
+            arturl = logos[artist]
         elseif( string.find( line, "#EXTVLCOPT" ) ) then
             _, _, option = string.find( line, ":(.+)" )
             table.insert( options, option )
         else
-            vlc.sd.add_item( {path=line,duration=duration,artist=artist,title=name,options=options} )
+            vlc.sd.add_item( {path=line,duration=duration,artist=artist,title=name,arturl=arturl,options=options} )
             duration = nil
             artist = nil
             name = nil
+            arturl = nil
             options={"deinterlace=1"}
         end
         line = fd:readline()