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

midi

开发平台:

Unix_Linux

  1. --[[
  2.   Parse YouTube homepage and browse pages. Next step is to recode firefox
  3.   in VLC ... using Lua of course ;)
  4.  $Id$
  5.  Copyright © 2007 the VideoLAN team
  6.  This program is free software; you can redistribute it and/or modify
  7.  it under the terms of the GNU General Public License as published by
  8.  the Free Software Foundation; either version 2 of the License, or
  9.  (at your option) any later version.
  10.  This program is distributed in the hope that it will be useful,
  11.  but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.  GNU General Public License for more details.
  14.  You should have received a copy of the GNU General Public License
  15.  along with this program; if not, write to the Free Software
  16.  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  17. --]]
  18. function probe()
  19.     return vlc.access == "http" and ( string.match( vlc.path, "youtube.com/%?$" ) or string.match( vlc.path, "youtube.com/browse" ) )
  20. end
  21. function parse()
  22.     p = {}
  23.     while true
  24.     do
  25.         line = vlc.readline()
  26.         if not line then break end
  27.         for _path, _artist, _name in string.gmatch( line, "href="(/watch%?v=[^"]*)" onclick="_hbLink%('([^']*)','Vid[^']*'%);">([^<]*)</a><br/>" )
  28.         do
  29.             path = "http://www.youtube.com" .. _path
  30.             name = vlc.strings.resolve_xml_special_chars( _name )
  31.             artist = _artist
  32.         end
  33.         for _min, _sec in string.gmatch( line, "<span class="runtime">(%d*):(%d*)</span>" )
  34.         do
  35.             duration = 60 * _min + _sec
  36.         end
  37.         if path and name and artist and duration then
  38.             table.insert( p, { path = path; name = name; artist = artist; duration = duration } )
  39.             path = nil
  40.             name = nil
  41.             artist = nil
  42.             duration = nil
  43.         end
  44.     end
  45.     return p
  46. end