[vlc-devel] [PATCH 1/4] Revert "Remove freebox.lua"

Rafaël Carré funman at videolan.org
Thu Nov 14 20:07:51 CET 2013


This reverts commit 2a437534a4262a5c80fe9c3754338345abb72d1b.
---
 share/Makefile.am        |   2 +
 share/lua/sd/README.txt  |   2 +-
 share/lua/sd/freebox.lua | 105 +++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 108 insertions(+), 1 deletion(-)
 create mode 100644 share/lua/sd/freebox.lua

diff --git a/share/Makefile.am b/share/Makefile.am
index 2659dfd..654f3ac 100644
--- a/share/Makefile.am
+++ b/share/Makefile.am
@@ -149,6 +149,7 @@ nobase_vlclib_DATA = \
 	lua/playlist/youtube_homepage.luac \
 	lua/playlist/zapiks.luac \
 	lua/sd/fmc.luac \
+	lua/sd/freebox.luac \
 	lua/sd/icecast.luac \
 	lua/sd/jamendo.luac \
 	lua/sd/metachannels.luac \
@@ -240,6 +241,7 @@ EXTRA_DIST += \
 	lua/playlist/zapiks.lua \
 	lua/sd/README.txt \
 	lua/sd/fmc.lua \
+	lua/sd/freebox.lua \
 	lua/sd/icecast.lua \
 	lua/sd/jamendo.lua \
 	lua/sd/metachannels.lua
diff --git a/share/lua/sd/README.txt b/share/lua/sd/README.txt
index e9be4de..d384b20 100644
--- a/share/lua/sd/README.txt
+++ b/share/lua/sd/README.txt
@@ -3,7 +3,7 @@ $Id$
 
 See lua/README.txt for generic documentation about Lua usage in VLC.
 
-Examples: See fmc.lua, frenchtv.lua
+Examples: See fmc.lua, freebox.lua, frenchtv.lua
 
 VLC Lua SD modules should define two functions:
  * descriptor(): returns a table with information about the module.
diff --git a/share/lua/sd/freebox.lua b/share/lua/sd/freebox.lua
new file mode 100644
index 0000000..add48d6
--- /dev/null
+++ b/share/lua/sd/freebox.lua
@@ -0,0 +1,105 @@
+--[[
+ $Id$
+
+ Copyright © 2010 VideoLAN and AUTHORS
+
+ Authors: Fabio Ritrovato <sephiroth87 at videolan dot org>
+
+ 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
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+--]]
+
+function descriptor()
+    return { title="Freebox TV" }
+end
+
+function main()
+    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
+    end
+    local line=  fd:readline()
+    if line ~= "#EXTM3U" then
+        return nil
+    end
+    line = fd:readline()
+    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,
+                              arturl = arturl,
+                              uiddata = line,
+                              meta = {["Listing Type"]="tv"},
+                              options = options })
+            duration = nil
+            artist = nil
+            name = nil
+            arturl = nil
+            options={"deinterlace=1"}
+        end
+        line = fd:readline()
+    end
+end
-- 
1.8.3.2




More information about the vlc-devel mailing list