119 lines
4.6 KiB
Markdown
119 lines
4.6 KiB
Markdown
# 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
|
|
|
|
#### 2. Create a symlink for the `rsstube` file in `/usr/local/bin/`:
|
|
|
|
`sudo ln -s [path]/rsstube /usr/local/bin/rsstube`
|
|
|
|
#### 3. To add the manual for `rsstube` (optional, but recommended), symlink `rsstube.1` in `/usr/local/share/man/man1/`:
|
|
|
|
`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](docs/sites.md).
|