Skip to main content

Asyncio powered blog aggregation, static-website style!

This is a plugin for the Pelican static site generator.

It allows generating a page aggregating blog articles from other web sites.

Usage

Install this plugin:

$ pip install pelican-aio-planet

Then, in your pelicanconf.py file, enable the plugin:

from pelican.plugins import aio_planet

PLUGINS = [
    aio_planet,
    ...
]

Next, declare the feeds you want to aggregate in your Pelican config file:

PLANET_FEEDS = {
    'Some amazing blog': 'https://example1.org/feeds/blog.atom.xml',
    'Another great blog': 'http://example2.org/feeds/blog.atom.xml',
}

Write a Jinja2 template for your aggregation page. For example, if the rest of your website is generated from Markdown pages, then create a planet.md.tmpl file with the following contents:

Some blogs aggregated here.

{% for article in articles %}
# {{ article.title }}

{% endfor %}

Finally, declare the template and destination page in your pelicanconf.py file:

PLANET_TEMPLATE = 'planet.md.tmpl'
PLANET_PAGE = 'content/planet.md'

Then rebuild your website as usual using the pelican command line, and you should have your blog aggregation page.

You’ll probably want to rebuild your website periodically though, maybe with a systemd timer or a cron job, to always fetch the latest articles in the feeds you aggregate.

Template design

The template for your aggregation page will be passed an articles variable, containing the list of articles aggregated.

Each item of this list will have the following attributes:

  • title: The title of the article;

  • updated: The date at which the article was last updated, as a timezone-aware datetime object;

  • author: The author of the article;

  • link: The URL to the article on its original website;

  • summary: The summary text of the article;

  • feed_name: The name of the feed from which the article originated, as defined in the Pelican config file;

Optional configuration

You can have more control on the generated page, by setting a few more options in your Pelican config file:

  • PLANET_MAX_ARTICLES: The maximum number of articles to show on the page.

    By default, 20 articles from all feeds will be added to the page.

  • PLANET_MAX_ARTICLES_PER_FEED: The maximum of articles from a single feed ending on the page.

    By default all articles of a given feed are considered.

  • PLANET_MAX_SUMMARY_LENGTH: The maximum number of words kept from the summary.

    By default the summary of the article will be the full text coming from the feed.

  • PLANET_MAX_AGE_IN_DAYS: The maximum age of an article to be included in the page.

    By default only articles no older than 180 days are added.

  • PLANET_RESOLVE_REDIRECTS: Resolve redirecting URLs to articles.

    By default redirects are not resolved.

Legalities

pelican-aio-planet is offered under the terms of the GNU Affero General Public License, either version 3 or any later version.

We will never ask you to sign a copyright assignment or any other kind of silly and tedious legal document before accepting your contributions.

In case you’re wondering, we do not consider that a website built with pelican-aio-planet would need to be licensed under the AGPL.

Metadata

Release files for pelican-aio-planet 0.10.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pelican-aio-planet 0.10.2
File Size Uploaded
pelican_aio_planet-0.10.2.tar.gz 17.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pelican-aio-planet 0.10.2
File Interpreter ABI Platform
pelican_aio_planet-0.10.2-py3-none-any.whl Python 3 none any Details

Total release size: 37.9 kB

Release files / pelican_aio_planet-0.10.2.tar.gz

Download URL pelican_aio_planet-0.10.2.tar.gz
Size 17.8 kB
Tags Source
SHA-256 checksum
How to use checksums
87fdfbe700c59b73fab63b173d546990565ddb48c7d3b382196145b619688878
BLAKE2b-256 checksum
How to use checksums
1310bb3c3cfedef08fdad86df1968458773b5fd679ad70b1b7fa1e6f205b3b1d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-httpx/0.24.1

Release files / pelican_aio_planet-0.10.2-py3-none-any.whl

Download URL pelican_aio_planet-0.10.2-py3-none-any.whl
Size 20.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4b164fddda0e847a066969381cbcc30b3bc0e120d0483bc136d4725580bc14ec
BLAKE2b-256 checksum
How to use checksums
2b61242df9e1ea9459d29a71632bab5f68879bd0bd2b9b9e8535af33530e0349
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-httpx/0.24.1

Release history Release notifications | RSS feed

This release

0.10.2 This release

2 release files

0.10.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page