anevia_streams.lua
上传用户:kjfoods
上传日期:2020-07-06
资源大小:29949k
文件大小:4k
源码类别:

midi

开发平台:

Unix_Linux

  1. --[[
  2.  $Id$
  3.  Parse list of available streams on Anevia Toucan servers.
  4.  The URI http://ipaddress:554/list_streams.idp describes a list of
  5.  available streams on the server.
  6.  Copyright © 2009 M2X BV
  7.  Authors: Jean-Paul Saman <jpsaman@videolan.org>
  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.  This program is distributed in the hope that it will be useful,
  13.  but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15.  GNU General Public License for more details.
  16.  You should have received a copy of the GNU General Public License
  17.  along with this program; if not, write to the Free Software
  18.  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  19. --]]
  20. -- Probe function.
  21. function probe()
  22.     return vlc.access == "http"
  23.         and string.match( vlc.path, "list_streams.idp" )
  24. end
  25. -- Parse function.
  26. function parse()
  27.     p = {}
  28.     _,_,server = string.find( vlc.path, "(.*)/list_streams.idp" )
  29.     while true do
  30.         line = vlc.readline()
  31.         if not line then break end
  32.         if string.match( line, "<streams[-]list> </stream[-]list>" ) then
  33.             break
  34.         elseif string.match( line, "<streams[-]list xmlns="(.*)">" ) then
  35.             while true do
  36.                 line = vlc.readline()
  37.                 if not line then break end
  38.                 if string.match( line, "<streamer name="(.*)"> </streamer>" ) then
  39.                     break;
  40.                 elseif string.match( line, "<streamer name="(.*)">" ) then
  41.                     _,_,streamer = string.find( line, "name="(.*)"" )
  42.                     while true do
  43.                         line = vlc.readline()
  44.                         if not line then break end
  45.                         -- ignore <host name=".." /> tags
  46.                         -- ignore <port number=".." /> tags
  47.                         if string.match( line, "<input name="(.*)">" ) then
  48.                             _,_,path = string.find( line, "name="(.*)"" )
  49.                             while true do
  50.                                 line = vlc.readline()
  51.                                 if not line then break end
  52.                                 if string.match( line, "<stream id="(.*)" />" ) then
  53.                                     _,_,media = string.find( line, "id="(.*)"" )
  54.                                     video = "rtsp://" .. tostring(server) .. "/" .. tostring(path) .. "/" .. tostring(media)
  55.                                     vlc.msg.dbg( "adding to playlist " .. tostring(video) )
  56.                                     table.insert( p, { path = video; name = media, url = video } )
  57.                                 end
  58. --                              end of input tag found
  59.                                 if string.match( line, "</input>" ) then
  60.                                     break
  61.                                 end
  62.                             end
  63.                         end
  64.                     end
  65.                     if not line then break end
  66. --                  end of streamer tag found
  67.                     if string.match( line, "</streamer>" ) then
  68.                         break
  69.                     end
  70.                 end
  71.                 if not line then break end
  72. --              end of streams-list tag found
  73.                 if string.match( line, "</streams-list>" ) then
  74.                     break
  75.                 end
  76.             end
  77.         end
  78.     end
  79.     return p
  80. end