%PDF- %PDF-
| Direktori : /proc/self/root/data/old/usr/share/urlwatch/examples/ |
| Current File : //proc/self/root/data/old/usr/share/urlwatch/examples/hooks.py.example |
#
# Example hooks file for urlwatch
#
# Copyright (c) 2008-2016 Thomas Perl <thp.io/about>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. The name of the author may not be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
import re
from urlwatch import filters
from urlwatch import jobs
from urlwatch import reporters
#class CustomLoginJob(jobs.UrlJob):
# """Custom login for my webpage"""
#
# __kind__ = 'custom-login'
# __required__ = ('username', 'password')
#
# def retrieve(self, job_state):
# return 'Would log in to {} with {} and {}\n'.format(self.url, self.username, self.password)
#class CaseFilter(filters.FilterBase):
# """Custom filter for changing case, needs to be selected manually"""
#
# __kind__ = 'case'
#
# def filter(self, data, subfilter=None):
# # The subfilter is specified using a colon, for example the "case"
# # filter here can be specified as "case:upper" and "case:lower"
#
# if subfilter is None:
# subfilter = 'upper'
#
# if subfilter == 'upper':
# return data.upper()
# elif subfilter == 'lower':
# return data.lower()
# else:
# raise ValueError('Unknown case subfilter: %r' % (subfilter,))
#class IndentFilter(filters.FilterBase):
# """Custom filter for indenting, needs to be selected manually"""
#
# __kind__ = 'indent'
#
# def filter(self, data, subfilter=None):
# # The subfilter here is a number of characters to indent
#
# if subfilter is None:
# indent = 8
# else:
# indent = int(subfilter)
#
# return '\n'.join((' '*indent) + line for line in data.splitlines())
class CustomMatchUrlFilter(filters.AutoMatchFilter):
# The AutoMatchFilter will apply automatically to all filters
# that have the given properties set
MATCH = {'url': 'http://example.org/'}
def filter(self, data):
return data.replace('foo', 'bar')
class CustomRegexMatchUrlFilter(filters.RegexMatchFilter):
# Similar to AutoMatchFilter
MATCH = {'url': re.compile('http://example.org/.*')}
def filter(self, data):
return data.replace('foo', 'bar')
class CustomTextFileReporter(reporters.TextReporter):
"""Custom reporter that writes the text-only report to a file"""
__kind__ = 'custom_file'
def submit(self):
with open(self.config['filename'], 'w') as fp:
fp.write('\n'.join(super().submit()))
class CustomHtmlFileReporter(reporters.HtmlReporter):
"""Custom reporter that writes the HTML report to a file"""
__kind__ = 'custom_html'
def submit(self):
with open(self.config['filename'], 'w') as fp:
fp.write('\n'.join(super().submit()))