rsstube/README.md

3.6 KiB

rsstube

Some website provide RSS/Atom feeds. rsstube tries to find the URLs for those feeds.

This is a work-in-progress. It's missing some features I want like proxy support and a way to deal with Cloudflare sites.

That said, if you download this code and run it, it should work for the features and sites that have been implemented.

Installing

rsstube is written in Python, an interpreted language. There's no need to compile it.

Dependencies

  • Python 3
  • PycURL

Arch Linux:

sudo pacman -S python python-pycurl

Debian:

sudo apt install python3 python3-pycurl

Fedora:

sudo dnf install python3 python3-pycurl

Pip:

(Assuming python and pip are already installed...)

pip install --user pycurl

Optional Dependencies

  • Git (for updating via git)
  • GitPython (for updating via git)
  • PyGObject (for the GUI)

Arch Linux:

sudo pacman -S git python-gitpython python-gobject

Debian:

sudo apt install git python3-git python3-gi

Fedora:

sudo dnf install git python3-GitPython python3-gobject

Pip:

(Assuming git is already installed...)

pip install --user GitPython PyGObject

Sample Installation

git clone https://negativezero.link/code/0x80/rsstube.git

sudo ln -s "$(pwd)/rsstube/rsstube" /usr/local/bin/rsstube

Updating

If you installed rsstube with git, and you have GitPython installed, use rsstube -U or rsstube --update.

If you installed rsstube another way (manual download, package manager), update rsstube that same way.

Usage

rsstube <link>

Here are the options that work right now.

Informational

-h, --help			Print help text and exit.

--license			Print license declaration and exit.

--sites				Print list of supported sites and exit.

--version			Print version and exit.

General Options

-n, --non-network               (Offline mode.) Only return feed URL if
				it can be determined without downloading
				any pages.

-o, --output FILENAME           Output results to FILENAME rather than
				console. (If FILENAME is an empty
				string, rsstube will output to the
				console.)

--output-format [ompl|url]      Specify which output format to use.
				[Default: url]

--unbreak			Attempt to work with hostile websites
				(e.g., those that use Cloudflare).

-U, --update			Update rsstube (only works if
				downloaded with git).

Verbosity

--verbosity [0-4]		Specify how much output you want.
				Higher number means more messages.
				[Default: 3]
				| MESSAGE TYPE | REQUIRED VERBOSITY |
				| ------------ | ------------------ |
				|     Debug    |         4          |
				|     Notify   |         3          |
				|     Warn     |         2          |
				|     Error    |         1          |

-v, --verbose			Show: all. Same as --verbosity 4.

-q, --quiet			Show: Error. Suppress: Warn, Notify,
				Debug. Same as --verbosity 1.

--suppress-errors		Suppress: all. Same as --verbosity 0.

Networking (PycURL args)

-A, --user-agent UA_STRING	Specify custom user-agent string.

-H, --header HEADER		Add a header. Use it multiple times to
				add multiple headers.

Scope

rsstube is not a tool for generating new feeds where they don't already exist. It is a tool for locating official feed URLs provided by the site.

I will not register an API key with any service just to get a feed. rsstube only gets feeds which are publicly available.

Site-specific extractors should only be added to rsstube when the site in question requires special logic. If the logic is generally applicable to many sites, it should go in the generic extractor.

License

GPLv2 or later