This repository has been archived on 2021-11-29. You can view files and clone it, but cannot push or open issues or pull requests.
rsstube-bash-old/README.md

4.6 KiB

rsstube

NOTE: This project has been archived. See https://negativezero.link/code/0x80/rsstube for the Python rewrite.

rsstube accepts a link (e.g., a YouTube channel) and attempts to get an RSS feed for that link.

NOTE: If you downloaded rsstube v2.5.0 and installed it, please manually remove and re-install the program. I created a bug in that version that prevents the updater from working correctly. If you downloaded it with git, you can just cd into the directory and git pull to fix the issue.

Sorry about that.

Dependencies

Core utils like curl and grep are required.

Note: This script was written and tested with Bash. I tried to make it portable, but it may not work with all shells. Please feel free to let me know if it doesn't work with your shell.

Installing

1. Download the source.

Clone the git repo.

Extract the archive where you would like the files to be in (e.g., /usr/local/share/applications/rsstube/ or ~/.rsstube/).

If the files are put into ~/.rsstube/ then rsstube will be able to update itself without root permission, but it will also be modifiable without root access, which may not be desired.

Using the Install Script

2. Run the install script as root:

sudo ./install

Manually

sudo ln -s [path]/rsstube /usr/local/bin/rsstube

sudo ln -s [path]/rsstube /usr/local/share/man/man1/rsstube

4. To update the manual database, run mandb as root:

sudo mandb

5. If you want a config file, add it at /etc/rsstube/config:

sudo mkdir /etc/rsstube && sudo cp templates/config /etc/rsstube/config

Updating

To update rsstube, use rsstube with the -U option:

rsstube -U

Depending on where rsstube is installed, you may need to run this as root:

sudo rsstube -U

If you downloaded the git repository, this will just call git pull.

There is no need to re-run the install script since the symlinks have already been created.

Usage

rsstube [OPTIONS] <link>

Note, URLs with ampersands (&) should be put in quotes so they aren't misinterpreted as commands by the shell.

Options

-c, --curl-args <curl arguments> - Pass arbitrary arguments to curl. Not recommended unless you know what you're doing.

-h, --help - Print help information.

-n, --non-network - Non-network mode. Attempt to get RSS feed from URL only, and do not download page.

-p, --proxy <proxy> - Specify a proxy argument for curl. The -x flag should not be specified.

-q, --quiet - Make the curl call in silent mode.

-t, --tor-mode - Set header information in the HTTP request so you appear to be using the Tor Browser. This is useful if you're using a Tor proxy (with -p) but Cloudflare blocks your request, demanding you complete a reCAPTCHA. Cloudflare is more suspicious of Tor traffic that is not from the Tor Browser, so if we pretend to be the Tor Browser, we can get around some of this.

-U, --update - Update rsstube.

-V, --version - Get rsstube version.

A config file may also be specified in /etc/rsstube/config or in ~/.config/rsstube/config. (In the case that both are present, only the local config file will be used.) This will provide default options. The options passed as arguments will take precedence over the config file.

Examples

rsstube https://www.youtube.com/channel/UCqC_GY2ZiENFz2pwL0cSfAw

rsstube https://www.youtube.com/watch?v=XzIXc5CTC2M

rsstube "https://www.youtube.com/watch?v=fFlfxwZDFzY&list=PL8D8D4240EC972114"

rsstube -q https://soundcloud.com/greatnessgd

rsstube -p socks5://localhost:9150 https://www.youtube.com/watch?v=XzIXc5CTC2M

rsstube --proxy "socks5h://localhost:9050" -t https://player.fm/series/series-1456689

How It Works

rsstube gets the built-in RSS feed for various sites. It does not generate its own RSS feed and does not require a server. Generally, it works as such:

1. rsstube looks at the URL and tries to determine a feed URL from it.

Some sites' feed URLs can be easily derived from the generic URL, for instance by adding /rss to the end.

2. If it was unable to derive the feed URL from the argument, it downloads the page (with curl) and tries to determine the feed URL based on information from the page.

Some sites use, for instance, a user ID in their feed URLs, so rsstube needs to get that user ID from the page itself.

For more details about how feeds for a specific site work, see docs/sites.md.