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

midi

开发平台:

Unix_Linux

  1. --[[
  2.     Translate MegaVideo video webpages URLs to the corresponding FLV URL.
  3.  $Id$
  4.  Copyright © 2008 the VideoLAN team
  5.  This program is free software; you can redistribute it and/or modify
  6.  it under the terms of the GNU General Public License as published by
  7.  the Free Software Foundation; either version 2 of the License, or
  8.  (at your option) any later version.
  9.  This program is distributed in the hope that it will be useful,
  10.  but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12.  GNU General Public License for more details.
  13.  You should have received a copy of the GNU General Public License
  14.  along with this program; if not, write to the Free Software
  15.  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  16. --]]
  17. -- Probe function.
  18. function probe()
  19.     return vlc.access == "http"
  20.         and string.match( vlc.path, "megavideo.com" ) 
  21. end
  22. -- Parse function.
  23. function parse()
  24.     -- we have to get the xml
  25.     if string.match( vlc.path, "www.megavideo.com.*&v=.*&u=.*" ) then
  26.         _,_,id = string.find( vlc.path, "www.megavideo.com.*v=([^&]*)" )
  27.         path = "http://www.megavideo.com/xml/videolink.php?v=" .. id
  28.         return { { path = path } }
  29.     end
  30.     while true
  31.     do 
  32.         line = vlc.readline()
  33.         if not line then break end
  34.         -- we got the xml
  35.         if string.match( line, "<ROWS><ROW url="" )
  36.         then
  37.             xml = ""
  38.             while line do
  39.                 -- buffer the full xml
  40.                 xml = xml .. line .. 'n'
  41.                 line = vlc.readline()
  42.             end
  43.             -- now gets the encoded url
  44.             _,_,s = string.find( xml, ".*ROW url="(.-)"" )
  45.             path = ""
  46.             i = 1
  47.             while s:byte(i) do
  48.                 c = s:byte(i)
  49.                 if c % 4 < 2 then mod = 0 else mod = 4 end
  50.                 if c < 16 and c > 3 then key = 61 + mod
  51.                 elseif c < 96 and c > 67 then key = 189 + mod
  52.                 elseif c < 20 and c > 6 then key = 65
  53.                 else vlc.msg.err("Oops, please report URL to developers")
  54.                 end
  55.                 i = i + 1
  56.                 path = path .. string.char(key - c)
  57.             end
  58.         end
  59.         if path then break end
  60.     end
  61.     if path then
  62.         return { { path = path } }
  63.     else
  64.         return { }
  65.     end
  66. end