[logo] curn: Customizable Utilitarian RSS Notifier

Links

java.net Member

Related Links

Products and Sites that use curn

Introduction

curn is an RSS reader. It scans a configured set of URLs, each one representing an RSS feed, and summarizes the results. By default, curn keeps track of individual items within each RSS feed, using an on-disk cache; when using the cache, it will suppress displaying information for items it has already processed (though that behavior can be disabled).

Unlike many RSS readers, curn does not use a graphical user interface. It is a command-line utility, intended to be run periodically in the background by a command scheduler such as cron(8) (on Unix-like systems) or the Windows Scheduler Service (on Windows).

curn is written entirely in Java and can read RSS feeds from any URL that's supported by Java's runtime. When querying HTTP sites, curn uses the HTTP If-Modified-Since and Last-Modified headers to suppress retrieving and processing feeds that haven't changed. By default, it also requests that the remote HTTP server gzip the XML before sending it. (Some HTTP servers honor the request; some don't.) These measures both minimize network bandwidth and ensure that curn is as kind as possible to the remote RSS servers.

Extensibility

curn can be extended in a number of ways.

Use an RSS Parser of your Choice

curn can be adapted to use any RSS parser; by default, it uses the the Rome parser, which can handle RSS feeds in Atom format and RSS formats 0.91, 0.92, 1.0 and 2.0. curn can easily be adapted to work with other Java-based RSS parsers.

Adding an adapter for a new underlying RSS parser technology is generally as simple as implementing a Java interface and extending two Java abstract classes.

Choice of Output Formats

curn supports several output formats; you can configure one or more output handlers in curn's configuration file. A sample of curn's HTML output is here. A sample of curn's plain text output is here. curn supports, and uses internally, the FreeMarker template engine; you can easily generate another output format by writing your own FreeMarker template. In addition, you can write your own output handlers, in Java or in any scripting language supported by the Apache Jakarta Bean Scripting Framework (BSF) or (in Java 6) the javax.script API. See Writing Your Own Output Handler in the curn User's Guide for more details.

Plug-ins

As of version 3.0, curn supports plug-ins. curn plug-ins can intercept various phases of curn processing and can enhance or modify curn's behavior. See Plug-ins in the curn User's Guide for more details.

Installation

Please see the separate Installation page for installation instructions.

Using curn

For complete instructions on configuring and using curn, see the curn User's Guide.

Keeping Up to Date

There are currently two ways that you can automatically be notified when new versions of curn are posted to this web site:

  • Join the curn-announce mailing list. See mailing lists for more details.
  • Add the RSS feed for my blog's software.curn topic to your RSS reader (which, I hope, is curn).

I post information about each new curn release to both places.

Author

Brian M. Clapper, <bmc @ clapper . org>

Acknowledgements

My friend, former co-worker, and (to our mutual surprise) fourth cousin, Steve Sapovits, suggested the name curn.

Miscellaneous

I use curn myself, every day, to poll a variety of RSS feeds. I develop, test and run curn on Mac OS X, FreeBSD 4.11 and Fedora Core Linux (FC 6). I have successfully built it on:

I routinely run curn on Mac OS X, Fedora Core 6, and FreeBSD. I have also tested it on Windows 2000.

Copyright

© 2004-2007 Brian M. Clapper

License

This software is released under a BSD-style license.

Copyright © 2004-2007 Brian M. Clapper. All rights reserved.

$Id: index.shtml 7542 2008-05-06 01:11:13Z bmc $