]> git.sesse.net Git - vlc/blob - share/lua/sd/freebox.lua
0ba209ba6b063877eef6062ecb4f1da025611027
[vlc] / share / lua / sd / freebox.lua
1 --[[
2  $Id$
3
4  Copyright © 2010 VideoLAN and AUTHORS
5
6  Authors: Fabio Ritrovato <sephiroth87 at videolan dot org>
7
8  This program is free software; you can redistribute it and/or modify
9  it under the terms of the GNU General Public License as published by
10  the Free Software Foundation; either version 2 of the License, or
11  (at your option) any later version.
12
13  This program is distributed in the hope that it will be useful,
14  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  GNU General Public License for more details.
17
18  You should have received a copy of the GNU General Public License
19  along with this program; if not, write to the Free Software
20  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
21 --]]
22
23 function descriptor()
24     return { title="Freebox TV" }
25 end
26
27 function main()
28     local fd, msg = vlc.stream( "http://mafreebox.freebox.fr/freeboxtv/playlist.m3u" )
29     if not fd then
30         vlc.msg.warn(msg)
31         return nil
32     end
33     local line=  fd:readline()
34     if line ~= "#EXTM3U" then
35         return nil
36     end
37     local loading = vlc.sd.add_item( {path="vlc://nop",title="Loading..."} )
38     line = fd:readline()
39     local duration, artist, name
40     local options={"deinterlace=1"}
41     while line ~= nil do
42         if( string.find( line, "#EXTINF" ) ) then
43             _, _, duration, artist, name = string.find( line, ":(%w+),(%w+)%s*-%s*(.+)" )
44         elseif( string.find( line, "#EXTVLCOPT" ) ) then
45             _, _, option = string.find( line, ":(.+)" )
46             table.insert( options, option )
47         else
48             vlc.sd.add_item( {path=line,duration=duration,artist=artist,title=name,options=options} )
49             duration = nil
50             artist = nil
51             name = nil
52             options={"deinterlace=1"}
53         end
54         line = fd:readline()
55     end
56     vlc.sd.remove_item( loading )
57 end