Advert generator from web feeds
4aba8c38 — Nguyễn Gia Phong 1 year, 4 months ago
Fix matching of content:encoded in RSS
9ff89acf — Nguyễn Gia Phong 1 year, 5 months ago
5187250b — Nguyễn Gia Phong 1 year, 5 months ago
Support URL query



You can also use your local clone with git send-email.


This is a tool for advertising other blogs you like on your own by embedding the summary of their latest post(s) extracted from their web feed. It is a rewrite of openring with (rejected) concurrency support in Python without any third-party library.


On POSIX systems, run the usual make install with configurable PREFIX. The following programs are needed for building and installation:

  • make
  • help2man
  • install

Python 3.6+ is also required, both for generating the manual and at runtime.

On other systems, a package installer specific for Python might be preferred.


$ fead --help
Usage: fead [OPTION]...

Generate adverts from web feeds.

  -h, --help            show this help message and exit
  -v, --version         show program's version number and exit
  -F PATH, --feeds PATH
                        file containing newline-separated web feed URLs
  -f URL, --feed URL    addtional web feed URL (multiple use)
  -n N, --count N       maximum number of ads in total (default to 3)
  -p N, --per-feed N    maximum number of ads per feed (default to 1)
  -l N, --length N      maximum summary length (default to 256)
  -t PATH, --template PATH
                        template file (default to stdin)
  -o PATH, --output PATH
                        output file (default to stdout)

Any use of -f before -F is ignored.


The template is used by Python str.format to generate each advert. It can contain the following fields, delimited by braces ({ and }).

  • source_title: title of the web feed
  • source_link: URL to the feed's website
  • title: title of the feed item
  • link: URL to the item
  • time: publication time
  • summary: truncated content or description

The publication time is a Python datetime.datetime object, which supports at least C89 format codes, e.g. {time:%Y-%m-%d}.


Given the these URLs in a feeds file:


Advertisement of the two latest blogs among them, along with articles by Drew DeVault, can be generated via the following command.

echo "<article>
  <h3><a href='{link}'>{title}</a></h3>
  {summary}&mdash;<a href='{source_link}'>{source_title}</a>, {time:%F}
</article>" | fead -F feeds -f https://drewdevault.com/blog/index.xml -n 2


Patches should be sent to ~cnx/misc@lists.sr.ht using git send-email with the following configurations:

git config sendemail.to '~cnx/misc@lists.sr.ht'
git config format.subjectPrefix 'PATCH fead'

Bug reports and feedbacks should be sent to the same list, with the program's name mention in the subject.



This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.