1 2-- libquvi-scripts v0.4.21 3-- Copyright (C) 2010-2012 quvi project 4-- 5-- This file is part of libquvi-scripts <http://quvi.sourceforge.net/>. 6-- 7-- This library is free software; you can redistribute it and/or 8-- modify it under the terms of the GNU Lesser General Public 9-- License as published by the Free Software Foundation; either 10-- version 2.1 of the License, or (at your option) any later version. 11-- 12-- This library is distributed in the hope that it will be useful, 13-- but WITHOUT ANY WARRANTY; without even the implied warranty of 14-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15-- Lesser General Public License for more details. 16-- 17-- You should have received a copy of the GNU Lesser General Public 18-- License along with this library; if not, write to the Free Software 19-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 20-- 02110-1301 USA 21-- 22 23local Xvideos = {} -- Utility functions unique to this script 24 25-- Identify the script. 26function ident(self) 27 package.path = self.script_dir .. '/?.lua' 28 local C = require 'quvi/const' 29 local r = {} 30 r.domain = "xvideos%.com" 31 r.formats = "default" 32 r.categories = C.proto_http 33 local U = require 'quvi/util' 34 Xvideos.normalize(self) 35 r.handles = U.handles(self.page_url, {r.domain}, {"/video%d+/"}) 36 return r 37end 38 39-- Query available formats. 40function query_formats(self) 41 self.formats = 'default' 42 return self 43end 44 45-- Parse media URL. 46function parse(self) 47 self.host_id = "xvideos" 48 49 Xvideos.normalize(self) 50 51 local p = quvi.fetch(self.page_url) 52 53 self.title = p:match('<div id="main">.-<h2>(.-)<') 54 or error("no match: media title") 55 56 self.id = self.page_url:match("/video(%d+)/") 57 or error("no match: media ID") 58 59 self.thumbnail_url = p:match("url_bigthumb=(.-)&") or '' 60 61 local s = p:match("flv_url=(.-)&") 62 or error("no match: media URL") 63 64 local U = require 'quvi/util' 65 self.url = {U.unescape(s)} 66 67 return self 68end 69 70-- 71-- Utility functions 72-- 73 74function Xvideos.normalize(self) -- "Normalize" embedded URL 75 if not self.page_url then return end 76 -- http://flashservice.xvideos.com/embedframe/ID to 77 -- http://www.xvideos.com/videoID/ 78 local url = self.page_url 79 url = url:gsub("flashservice.xvideos.com", "www.xvideos.com") 80 url = url:gsub("/embedframe/", "/video") 81 self.page_url = url 82end 83 84-- vim: set ts=4 sw=4 tw=72 expandtab: 85