This website is the home of the Expert Python Programming book and the Atomisator project.

The book

http://images.packtpub.com/images/100x123/184719494X.png

Buy it at Amazon.com

The errata for the book are located here : Errata If you have any feedback on the book, please fill a ticket (log in first).

You need to login with the feedback account to do so, using feedback for the password

The code

You can browse the code here in trac, or use the Mercurial server http://hg-atomisator.ziade.org/

You can also browse the source code to get the code presented in the book. An errata page will be mainainted as soon as I get some feedback. The code will be changed as well in case of a problem.

Atomisator

Atomisator is a data aggregator framework. Its purpose is to provide an engine to build any kind of data by merging several sources of data.

The big picture

Let's take a simple use case : let's build a Planet, where RSS feeds are merged. See it in action at Radar Francophone Python

http://www.ziade.org/atomisator/atomisator.png

Building a feed is done by two processes :

  • 1, 2, 3 : Reading and filtering data
  • 4, 5, 6 : Building the feed

Reading and filtering data is done in three steps :

  1. read the data sources
  2. filter the collected data
  3. store them into a dedicated database

Building the feed is done in three steps :

  1. read the database
  2. enhance the entries with dynamic data
  3. render the feed

The nice thing about readers, filters and enhancers is that they are plugins. This means you can write your own plugins and use Atomisator to build your own custom feed generator.

Installation

Use easy_install :

$ easy_install Atomisator 

Quick Start

To use it, create a configuration file somewhere, using the -c option:

$ atomisator -c atomisator.cfg

A default configuration file will be generated, that looks like this:

[atomisator]

# put here the feeds you wish to parse
sources =
    rss     http://tarekziade.wordpress.com/atom
    rss     http://digg.com/rss2.xml

# put here the filters you want to use
filters =
    doublons

# put here the enhancers you want to use
enhancers =

# put here the database location
database = sqlite:///atomisator.db

# put here the outputs
outputs =
    rss atomisator.xml http://atomisator.ziade.org/example "Meta Feed." Automatic feed created by Atomisator."

You can then build your feed by using this configuration file with the -f option:

$ atomisator -f /path/to/atomisator.cfg
Reading source http://tarekziade.wordpress.com/atom
10 entries read.
Reading source http://digg.com/rss/index.xml
40 entries read.
50 total.
Writing feed in atomisator.xml
Feed ready.

You can specify the path as a free argument as well:

$ atomisator /path/to/atomisator.cfg

Atomisator will then generate an atomisator.xml file, after reading the sources.

You can also call separately the process that fills the database:

$ atomisator -r -f /path/to/atomisator.cfg

In this case the feed generation will not occur.

The -g option can be used to generate the xml file on its own:

$ atomisator -g -f /path/to/atomisator.cfg

This is useful to read sources and generate the feed within different process and different time basis.

For other useful options, run:

$ atomisator --help

Available plugins

XXX to be written

How to write a plugin

XXX to be written