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

midi

开发平台:

Unix_Linux

  1. --[[
  2.  $Id$
  3.  Copyright © 2007 the VideoLAN team
  4.  This program is free software; you can redistribute it and/or modify
  5.  it under the terms of the GNU General Public License as published by
  6.  the Free Software Foundation; either version 2 of the License, or
  7.  (at your option) any later version.
  8.  This program is distributed in the hope that it will be useful,
  9.  but WITHOUT ANY WARRANTY; without even the implied warranty of
  10.  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  11.  GNU General Public License for more details.
  12.  You should have received a copy of the GNU General Public License
  13.  along with this program; if not, write to the Free Software
  14.  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  15. --]]
  16. function get_url_param( url, name )
  17.     local _,_,ret = string.find( url, "[&?]"..name.."=([^&]*)" )
  18.     return ret
  19. end
  20. -- Probe function.
  21. function probe()
  22.     return vlc.access == "http"
  23.         and string.match( vlc.path, "video.google.com" ) 
  24.         and ( string.match( vlc.path, "videoplay" )
  25.             or string.match( vlc.path, "videofeed" ) )
  26. end
  27. function get_arg( line, arg )
  28.     return string.gsub( line, "^.*"..arg.."="(.-)".*$", "%1" )
  29. end
  30. -- Parse function.
  31. function parse()
  32.     local docid = get_url_param( vlc.path, "docid" ) 
  33.     if string.match( vlc.path, "videoplay" ) then
  34.         return { { path = "http://video.google.com/videofeed?docid=" .. docid } }
  35.     elseif string.match( vlc.path, "videofeed" ) then
  36.         local path = nil
  37.         local arturl
  38.         local duration
  39.         local name
  40.         local description
  41.         while true
  42.         do
  43.             local line = vlc.readline()
  44.             if not line then break end
  45.             if string.match( line, "media:content.*flv" )
  46.             then
  47.                 local _,_,s = string.find( line, "<media:content(.-)/>" )
  48.                 path = vlc.strings.resolve_xml_special_chars(get_arg( s, "url" ))
  49.                 duration = get_arg( s, "duration" )
  50.             end
  51.             if string.match( line, "media:thumbnail" )
  52.             then
  53.                 local _,_,s = string.find( line, "<media:thumbnail(.-)/>" )
  54.                 arturl = vlc.strings.resolve_xml_special_chars(get_arg( s, "url" ))
  55.             end
  56.             if string.match( line, "media:title" )
  57.             then
  58.                 _,_,name = string.find( line, "<media:title>(.-)</media:title>" )
  59.             end
  60.             if string.match( line, "media:description" )
  61.             then
  62.                 _,_,description = string.find( line, "<media:description>(.-)</media:description>" )
  63.             end
  64.         end
  65.         return { { path = path; name = name; arturl = arturl; duration = duration; description = description } }
  66.     end
  67. end