[vlc-devel] [PATCH] lua: add Liveleak playlist parser

Ludovic Fauvet etix at videolan.org
Fri Dec 7 19:25:46 CET 2012


---
 share/Makefile.am               |  2 ++
 share/lua/playlist/liveleak.lua | 67 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 69 insertions(+)
 create mode 100644 share/lua/playlist/liveleak.lua

diff --git a/share/Makefile.am b/share/Makefile.am
index 403be9e..7a5d3ff 100644
--- a/share/Makefile.am
+++ b/share/Makefile.am
@@ -176,6 +176,7 @@ nobase_vlclib_DATA = \
 	lua/playlist/katsomo.luac \
 	lua/playlist/koreus.luac \
 	lua/playlist/lelombrik.luac \
+	lua/playlist/liveleak.luac \
 	lua/playlist/metacafe.luac \
 	lua/playlist/metachannels.luac \
 	lua/playlist/mpora.luac \
@@ -266,6 +267,7 @@ EXTRA_DIST += \
 	lua/playlist/katsomo.lua \
 	lua/playlist/koreus.lua \
 	lua/playlist/lelombrik.lua \
+	lua/playlist/liveleak.lua \
 	lua/playlist/metacafe.lua \
 	lua/playlist/metachannels.lua \
 	lua/playlist/mpora.lua \
diff --git a/share/lua/playlist/liveleak.lua b/share/lua/playlist/liveleak.lua
new file mode 100644
index 0000000..6811977
--- /dev/null
+++ b/share/lua/playlist/liveleak.lua
@@ -0,0 +1,67 @@
+--[[
+ $Id$
+
+ Copyright © 2012 VideoLAN and AUTHORS
+
+ Authors: Ludovic Fauvet <etix at videolan.org>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+--]]
+
+-- Probe function.
+function probe()
+    return vlc.access == "http"
+        and string.match( vlc.path, "www.liveleak.com/view" )
+end
+
+-- Util function
+function find( haystack, needle )
+    local _,_,r = string.find( haystack, needle )
+    return r
+end
+
+-- Parse function.
+function parse()
+    local p = {}
+    local title
+    local art
+    local video
+
+    while true do
+        line = vlc.readline()
+        if not line then break end
+
+        -- Try to find the title
+        if string.match( line, '<span class="section_title"' ) then
+            title = find( line, '<span class="section_title"[^>]*>(.-)<' )
+            title = string.gsub( title, ' ', ' ' )
+        end
+
+        -- Try to find the art
+        if string.match( line, 'image:' ) then
+            art = find( line, 'image: "(.-)"' )
+        end
+
+        -- Try to find the video
+        if string.match( line, 'file:' ) then
+            video = find( line, 'file: "(.-)"' )
+        end
+    end
+    if video then
+        table.insert( p, { path = video; name = title; arturl = art; } )
+    end
+    return p
+end
+
-- 
1.8.0.1




More information about the vlc-devel mailing list