F5er - RSS notifier about updates on web pages
f5er [--address=hostname] [--port=number] [--config=
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:
Where channel_id is a channel ID specified in the channel declaration. See the configuration section for details.
- -a hostname, --address=hostname
Local host bind address. The default value is
- -p number, --port=number
Local host bind port. The default value is
Configuration file to use. The default value is
- -h, --help
Print out usage information.
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:
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.
Required. Defines the title of the channel.
Required. Describes the channel.
Required. Defines the web site URL of the channel.
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.
Required. XPath to the selection to extract. See the XPath Tutorial for information on how to compose XPath.
Optional. If specified, this value will be used as
User-Agent' header when
downloading web pages. If not specified, F5er will use the default value
(Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0').
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
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.
The current stable version is 0.8. 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
20 Oct 2016 - Version 0.8
Added workaround for compatibility with unknown HTML tags.
Fixed broken link to the XPath Tutorial.
07 Jul 2015 - Version 0.7
paginator_xpath are no longer supported.
Added new option
16 Feb 2015 - Version 0.6
Switched to multiprocess architecture.
15 Mar 2014 - Version 0.5
Improved configuration parser: now it detects channel redeclarations.
Fixed memory leak on malformed post request.
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
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-2015 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.