This is a pre-production deployment of Warehouse, however changes made here WILL affect the production instance of PyPI.
Latest Version Dependencies status unknown Test status unknown Test coverage unknown
Project Description

plutopluto - simple feed aggregator

Overview

Display posts from multiple feeds:

plutopluto http://xkcd.com/atom.xml http://what-if.xkcd.com/feed.atom

Display posts from a feed with multiple pages:

plutopluto http://staff.tumblr.com/page/{page}/rss

Load config (with urls) from separate file:

plutopluto -c config.cfg

History

When I stopped using facebook some years ago the only thing I missed was getting a stream of interesting things. I really like just scrolling along and look at some pictures, read some discussions and watch some videos.

So I started to look for alternatives. Pretty fast I realized that I did not need a social network to a stream. The existing infrastructure of blogs with RSS or atom feeds was more than enough for anything I wanted.

The only thing missing was a nice way to display these feeds in a stream. So this is what I wanted to create: A stream-like feed reader.

Later I realized there is a second reason why I would want to use plutopluto: Many blogs suck. Either they look plain ugly or they are unusable slow – which happens especially with image-centered blogs. So I just fire up plutopluto with the blog’s feed and have a nice and clean interface for scrolling through the content.

Architecture

I originally implemented plutopluto in PHP. This is a rewrite in JavaScript.

Unfortunately, the cross origin policy prevents JavaScript from accessing feeds directly. So there is a minimal python server which gets the feeds and also converts them to JSON. I could have used a 3rd party service like the google feed API for this, but I did not want to leak any data to google and also I already had the required python code from another project.

The JavaScript code depends on jQuery. However, I wrote a minimal reimplementation inspired by jqlite that is used instead. Why? Because it was fun.

Design

The default design is minimalistic and pratical. It is simply a list of post sorted by time. When you scroll to the bottom, more posts are loaded, so you can just keep scrolling until no posts are left. Each post has a header section with the publication time and the name of the source. When you click on the source you go to the original post.

This design was inspired by soup.io and is also similar to tumblr.

Configuration

You can configure all flask related options as well as HOST, PORT and URLS in a separate configuration file using plutopluto --config FILE. See example.cfg for an example. If no configurations is provided, the file .plutopluto.cfg is tried, first in the current folder, then in home.

Some options can be passed to plutopluto directly. See plutopluto --help. If defined, they take precedence over those from the config file.

Extend/Hack

Everything about this project is meant to be simple. I am serious about this. I really want the code to be as easy to understand and extend by as many people as possible. If you see anything you don’t understand: Please create a bug report.

FAQ

Why the name “plutopluto”?
There is some kind of a tradition of feed aggregators called this way: planetplanet, moonmoon
What is the favicon?
It’s a sad pluto. When I was a child, pluto was still considered a planet.
The posts are not sorted correctly
Loading and parsing many feeds takes some time. So when the first posts are displayed, many feeds have not yet finished. In fact, the first posts are displayed as soon as the first feed is loaded. So the first few posts will necessarily originate from the same source.
The stream always starts with the same source
See previous question.
Release History

Release History

1.2.0

This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.1.0

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.0.2

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.0.1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.0.0

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

TODO: Brief introduction on what you do with files - including link to relevant help section.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
plutopluto-1.2.0.tar.gz (15.1 kB) Copy SHA256 Checksum SHA256 Source Dec 24, 2015

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS HPE HPE Development Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting