Dave Cross > Perlanet > perlanet

Download:
Perlanet-0.56.tar.gz

Annotate this POD

Website

CPAN RT

New  1
Open  1
View/Report Bugs
Source  

NAME ^

perlanet - command line interface to Perlanet.pm

SYNOPSIS ^

  $ perlanet

Or

  $ perlanet config_file

DESCRIPTION ^

perlanet is a command line program for aggregating web feeds (both Atom and RSS) and publishing a new web page and a new web feed containing the results of that aggregation.

COMMAND LINE ARGUMENTS ^

perlanet takes one optional command line argument, which is the name of a configuration file to use. If no filename is given then the program looks for a file called perlanetrc in the current directory.

CONFIGURATION FILE ^

perlanet requires a configuration file which contains details of which feeds to aggregate and what to do with the results of the aggregation. By default, perlanet looks for a file called perlanetrc in the current directory, but this name can be overridden by passing the name of a different file when calling the program.

The configuration file is in YAML format. YAML is a simple text-based file format. See http://yaml.org/ for further details.

Configuration Options

The configuration file can contain the following options.

title

The title of the resulting page and web feed. This option is mandatory.

description

The description of the resulting page and web feed. This option is mandatory.

url

A URL which will be associated with the resulting page and web feed. This will usually be the address where the web page will be published. This option is mandatory.

author

The name and email address of the author of the aggregated content. This item has two sub-items - one each for the name and email address. This option is mandatory.

agent

This optional entry defines the agent string that perlanet will use when requesting data from web sites. It's the name of the program that site owners will see in their web site access logs. Although it is optional, it is strongly recommended that you give a value for this configuration option and that the value you use includes contact details so that web site owners can get in touch with you if they have any concerns about your use of their site.

entries

The maximum number of entries to include in the aggregated content. This option is mandatory.

entries_per_feed

The entries value above defines the total number of entries in the aggregated output feed. The <entries_per_feed> value defines the number of entries to take from each of your source feeds. For example, if this is set to 1 then there will only be one entry from each feed in your output. If this value is 0 (or missing) then all values from all source feeds are used.

opml

The system can optionally create an OPML file containing details of the feeds which are being aggregated. This optional option controls whether or not this file is created. If it exists, it should be the name of the OPML file to be created. If an OPML file is being created, then the feeds options (described below) will all require a web sub-option.

page

This mandatory option contains the details of the web page to be created. There are two sub-options - file gives the name of the file to be created and template gives the name of a Template Toolkit template which will be processed in order to create this file. See the section "Output Template" for more details on this template, and the web site http://tt2.org/ for more information about the Template Toolkit.

feed

This mandatory option contains the details of the web feed to be created. There are two sub-options - file gives the name of the file to be created and format gives the format of the output (currently 'Atom' or 'RSS').

cache_dir

This if you give a directory name in this option then perlanet will use the cache facility of URI::Fetch. This means that web feeds will only be downloaded when they change.

feeds

This mandatory option gives details of the web feeds to be aggregated. Each item on the list has one mandatory sub-option and two optional sub-options. The mandatory sub-option is url which gives the URL of the feed. The optional sub-option title gives a title which will be prepended to all of the entry titles taken from that feed. If no title is given, then the title will be taken from the feed title. The optional web sub-option gives a web site URL associated with the feed (often the address of the web site that the feed comes from). This can be used to create a list of the aggregated sites. The web sub-option becomes mandatory if you are creating an OPML file.

Example Configuration File

  title: planet test
  description: A Test Planet
  url: http://planet.example.com/
  author:
    name: Dave Cross
    email: dave@dave.org.uk
  entries: 20
  opml: opml.xml
  page:
    file: index.html
    template: index.tt
  feed:
    file: atom.xml
    format: Atom
  cache_dir: /tmp/feeds
  feeds:
    - url: http://blog.dave.org.uk/atom.xml
      title: Dave's Blog
      web: http://blog.dave.org.uk/
    - url: http://use.perl.org/~davorg/journal/rss
      title: Dave's use.perl Journal
      web: http://use.perl.org/~davorg/journal/
    - url: http://www.oreillynet.com/pub/feed/31?au=2607
      title: Dave on O'Reillynet
      web: http://www.oreillynet.com/pub/au/2607

Output Template

The web page is created from a Template Toolkit template. This template is passed two variables.

feed

This is the XML::Feed object which has been used to create the aggregated feed. See the XML::Feed documentation for details of the data that is held in this object.

cfg

This is the contents of the configuration file, converted to a (nested) Perl hash.

Example Output Template

This is a simple template which uses the feed variable to display details of the aggregated feeds.

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml">
  <html>
    <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <title>[% feed.title %]</title>
    </head>
    <body>
      <h1>[% feed.title | html %]</h1>
      <p>[% feed.description | html %]</p>
  [% FOREACH entry IN feed.entries %]
      <h2><a href="[% entry.link | url | html %]">[% entry.title | html %]</h2></a>
      [% entry.content.body %]
  [% IF entry.author OR entry.issued %]
      <p>Published[% IF entry.author %] by [% entry.author | html; END %]
      [% IF entry.issued %] on [% entry.issued | html; END %]</p>
  [% END %]
  [% END %]
      <hr />
      <address>[% feed.author | html %] / [% feed.modified | html %]</address>
    </body>
  </html>

In the future, the Perlanet wiki at http://wiki.github.com/davorg/perlanet will contain a cookbook of useful ideas to include in the output template.

SUPPORT ^

There is a mailing list which acts as both a place for developers to talk about maintaining and improving Perlanet and also for users to get support. You can sign up to this list at http://lists.mag-sol.com/mailman/listinfo/perlanet

To report bugs in Perlanet, please use the CPAN request tracker. You can either use the web page at http://rt.cpan.org/Public/Bug/Report.html?Queue=Perlanet or send an email to bug-Perlanet@rt.cpan.org.

SEE ALSO ^

AUTHOR ^

Dave Cross, <dave@mag-sol.com>

COPYRIGHT AND LICENSE ^

Copyright (C) 2008 by Magnum Solutions Ltd.

This progam library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.10.0 or, at your option, any later version of Perl 5 you may have available.

syntax highlighting: