From 010b608348d038ae288ce5bdd1308de507154f6b Mon Sep 17 00:00:00 2001 From: Roger Philibert Date: Thu, 15 Apr 2010 01:32:34 +0200 Subject: [PATCH] add backend youjizz --- weboob/backends/youjizz/__init__.py | 21 +++++++++++ weboob/backends/youjizz/backend.py | 57 +++++++++++++++++++++++++++++ weboob/backends/youjizz/browser.py | 49 +++++++++++++++++++++++++ 3 files changed, 127 insertions(+) create mode 100644 weboob/backends/youjizz/__init__.py create mode 100644 weboob/backends/youjizz/backend.py create mode 100644 weboob/backends/youjizz/browser.py diff --git a/weboob/backends/youjizz/__init__.py b/weboob/backends/youjizz/__init__.py new file mode 100644 index 00000000..d7ba19fc --- /dev/null +++ b/weboob/backends/youjizz/__init__.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- + +""" +Copyright(C) 2010 Roger Philibert + +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, version 3 of the License. + +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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +""" + +from .backend import YoujizzBackend diff --git a/weboob/backends/youjizz/backend.py b/weboob/backends/youjizz/backend.py new file mode 100644 index 00000000..1bcc632c --- /dev/null +++ b/weboob/backends/youjizz/backend.py @@ -0,0 +1,57 @@ +# -*- coding: utf-8 -*- + +""" +Copyright(C) 2010 Roger Philibert + +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, version 3 of the License. + +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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +""" + +from weboob.backend import Backend +from weboob.capabilities.video import ICapVideoProvider + +from .browser import YoujizzBrowser + +class YoujizzBackend(Backend, ICapVideoProvider): + NAME = 'youjizz' + MAINTAINER = 'Roger Philibert' + EMAIL = 'roger.philibert@gmail.com' + VERSION = '0.1' + DESCRIPTION = 'Youjizz videos website' + LICENSE = 'GPLv3' + + CONFIG = {} + browser = None + + def need_browser(func): + def inner(self, *args, **kwargs): + if not self.browser: + self.browser = YoujizzBrowser() + url = args[0] + if u'youjizz.com' not in url: + return None + return func(self, *args, **kwargs) + return inner + + @need_browser + def get_video_title(self, page_url): + return self.browser.get_video_title(page_url) + + @need_browser + def get_video_url(self, page_url): + return self.browser.get_video_url(page_url) + + @need_browser + def iter_page_urls(self, mozaic_url): + return self.browser.iter_page_urls(mozaic_url) diff --git a/weboob/backends/youjizz/browser.py b/weboob/backends/youjizz/browser.py new file mode 100644 index 00000000..71bf2dd0 --- /dev/null +++ b/weboob/backends/youjizz/browser.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- + +""" +Copyright(C) 2010 Roger Philibert + +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, version 3 of the License. + +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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +""" + +from logging import error +import re + +from weboob.tools.browser import Browser +from weboob.tools.parser import LxmlHtmlParser + +class YoujizzBrowser(Browser): + video_file_regex = re.compile(r'"(http://media[^ ,]+\.flv)"') + + def __init__(self, *args, **kwargs): + kwargs['parser'] = LxmlHtmlParser() + Browser.__init__(self, *args, **kwargs) + + def iter_page_urls(self, mozaic_url): + raise NotImplementedError() + + def get_video_title(self, page_url): + raise NotImplementedError() + + def get_video_url(self, page_url): + data = self.openurl(page_url).read() + video_file_urls = re.findall(self.video_file_regex, data) + if len(video_file_urls) == 0: + return None + else: + if len(video_file_urls) > 1: + error('Many video file URL found for given URL: %s' % video_file_urls) + return video_file_urls[0] +