lua: add Liveleak playlist parser
authorLudovic Fauvet <etix@videolan.org>
Fri, 7 Dec 2012 18:25:46 +0000 (19:25 +0100)
committerKonstantin Pavlov <thresh@videolan.org>
Mon, 10 Dec 2012 12:48:18 +0000 (16:48 +0400)
Signed-off-by: Konstantin Pavlov <thresh@videolan.org>
share/Makefile.am
share/lua/playlist/liveleak.lua [new file with mode: 0644]

index 403be9e..7a5d3ff 100644 (file)
@@ -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 (file)
index 0000000..6811977
--- /dev/null
@@ -0,0 +1,67 @@
+--[[
+ $Id$
+
+ Copyright © 2012 VideoLAN and AUTHORS
+
+ Authors: Ludovic Fauvet <etix@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, '&nbsp;', ' ' )
+        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
+