[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