NAME
F5er - RSS notifier about updates on web pages
SYNOPSIS
f5er [--address=hostname] [--port=number] [--config=file]
f5er --help
DESCRIPTION
F5er is a daemon, which allows user to receive notifications about changes in web pages, which do not offer a built-in RSS support. On a user's request, it downloads a predefined web page, extracts target information from the web page content and generates an RSS feed on the basis of the content. The actual determination whether the web page was changed or not is performed by the user's RSS aggregator. So F5er is a universal intermediary between any web site and any RSS aggregator.
In order to receive notifications, user needs to add a new feed to his RSS aggregator for each F5er channel defined in the configuration file. F5er's feeds have the following URL format:
http://hostname:port/channel_id
Where channel_id is a channel ID specified in the channel declaration. See the configuration section for details.
OPTIONS
- -a hostname, --address=hostname
Local host bind address. The default value is localhost.
- -p number, --port=number
Local host bind port. The default value is 8080.
- -c
file, --config=file
Configuration file to use. The default value is /etc/f5er.conf.
- -h, --help
Print out usage information.
CONFIGURATION
Each line of the config file is either a comment or a directive. Comment lines start with '#' and are ignored as well as empty lines. Directives are of two types: channel declarations and parameter assignments. A channel declaration has the following format:
[channel_id]
The only allowed characters in a channel ID are alphanumeric characters and underscore. All parameters following the channel declaration up to the next declaration or up to the end of file are related to the same channel_id. A parameter assignment contains a parameter name and a parameter value separated by '='. For example:
parameter = value
The supported parameters are listed below.
title
Required. Defines the title of the channel.
description
Required. Describes the channel.
link
Required. Defines the web site URL of the channel.
post_form
Optional. HTML form to send when fetching HTML page of the channel. If set,
F5er will send a POST request instead of a GET, which is the default method.
selection_xpath
Required. XPath to the selection to extract. See the
XPath Tutorial for information on how to compose XPath.
paginator_xpath
Optional. XPath to the paginator on the web page. If set, F5er will try to
nagivate to the last page available. In order to be properly handled,
paginator should contain numeric links to pages.
ttl
Optional. How often to refresh the feed from the source (in minutes).
For example the following configuration may be used for monitoring current Perl version:
[perl]
title = Perl
description = Current Perl version
link = http://www.perl.org/
selection_xpath = //div[@id='short_lists']/div[1]
ttl = 60
DEPENDENCIES
Besides the Perl interpreter and the core modules, F5er requires the following modules: HTML::Entities, HTML::FormatText, HTML::TreeBuilder, HTML::TreeBuilder::XPath, HTTP::Daemon, HTTP::Status, HTTP::Tidy, LWP::UserAgent, XML::RSS. All of them are available on CPAN.
DOWNLOAD
The current stable version is 0.4. The source code is available here.
To fetch the latest source code from the git repository, run the following command:
git clone git://vminko.org/f5er
NOTES
HISTORY
15 Nov 2011 - Version 0.4
Fixed memory leak.
24 Oct 2011 - Version 0.3
Added ability to compose channels based on POST requests (using the
`post_form' parameter).
10 May 2011 - Version 0.2
Added cleaning up of the HTML content in order to extract nodes from pages
with invalid markup.
18 Apr 2011 - Version 0.1
Initial public release.
COPYRIGHT AND LICENSE
Copyright (C) 2011 Vitaly Minko
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 3 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.