[vlc-devel] [PATCH] Fetch art urls from free.fr for most channels. This should avoid seeing funky images instead.

François Revol revol at free.fr
Fri Aug 26 16:13:31 CEST 2011


Signed-off-by: François Revol <revol at free.fr>
---
 share/lua/sd/freebox.lua |   49 +++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 46 insertions(+), 3 deletions(-)

diff --git a/share/lua/sd/freebox.lua b/share/lua/sd/freebox.lua
index a908648..844cb8d 100644
--- a/share/lua/sd/freebox.lua
+++ b/share/lua/sd/freebox.lua
@@ -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()
-- 
1.7.5.4




More information about the vlc-devel mailing list