A simple web application built on Node and TypeScript for automatically downloading new episodes of TV shows.
I made this for myself because existing solutions tended to be outdated, overly complicated, or full of too many features that I would never use. Easy Show Downloader is designed first and foremost to be simple and easy: it only supports Transmission as a torrent client, its web interface is fast and minimal, and it only supports scraping torrent magnet links from RSS feeds.
After you clone the repo you can get started with:
$ yarn run install
$ yarn run build
$ yarn run start
And you'll have the server up and running.
Alternatively you can try it in a container:
$ docker pull ghcr.io/jojonium/easy-show-downloader:latest
This will start a live-reloading dev version of the client on port 5173, and the back-end on port 3000.
$ yarn run client:dev
This project is configured through environment variables. The only file that
needs to persist on the disk is data.json
, which contains information about
the shows you want to download and the RSS feeds to get them from. Here is a
list of the availableenvironment variables:
Name | Type | Default | Notes |
---|---|---|---|
NODE_HOST |
string | 'localhost' |
Server host to listen on |
NODE_PORT |
number | 3000 |
Server port to listen on |
STATIC_DIR |
string | '../client/build' |
Directory to serve static website content from |
LOG_STDOUT |
boolean | true |
Whether to log to stdout |
LOG_FILE |
string | undefined |
File to write logs to. Logging to a file is disabled if omitted |
DATA_FILE |
string | 'data.json' |
Path to the JSON file to store show data in |
CRON_SCHEDULE |
string | '0 53 * * * *' |
Schedule to check for new torrents. See node-cron for schedule options |
TRANSMISSION_HOST |
string | 'localhost' |
Hostname of your Transmission instance |
TRANSMISSION_PORT |
number | 9091 |
Port of your Transmission instance |
TRANSMISSION_USERNAME |
string | '' |
Username for authenticating with your Transmission instance |
TRANSMISSION_PASSWORD |
string | '' |
Password for authenticating with your Transmission instance |
TRANSMISSION_PROTOCOL |
string | 'http' |
Set to 'https' to use TLS when connecting to your Transmission instance |
TRANSMISSION_URL |
string | '/transmission/rpc' |
URL path of your Transmission instance |