Sign inSign up

furey/fetchtv

By furey

•Updated 3 months ago

Download Fetch TV PVR recordings over UPnP/DLNA. CLI + programmatic ESM API. No Fetch credentials.

Image
0

3.3K

furey/fetchtv repository overview

⁠fetchtv

NPM Version Docker Pulls License: GPL v3 GitHub Repository

Download Fetch TV PVR recordings over the local network.

No Fetch credentials or cloud account required.

Based on lingfish/fetchtv-cli⁠ (Python) which is based on jinxo13/FetchTV-Helpers⁠ (also Python).

Note


Fetch's [Gen 3 Extended Service Levy](https://news.fetchtv.com.au/extended-service-levy-1) means Mini Gen 3 and Mighty Gen 3 owners should copy their recordings off the box before `1 November 2026`. `fetchtv` keeps working for that: it's LAN-only and needs no Fetch account. To record free-to-air without Fetch at all, see [freetvarr](https://github.com/furey/freetvarr).

⁠Contents

⁠Quick start

⁠List recordings on the box
docker run --rm --network host furey/fetchtv recordings
⁠Download new episodes of a show to the host
docker run --rm --network host \
  -v /path/on/host:/downloads \
  furey/fetchtv recordings \
  --folder "Bluey" \
  --save /downloads
⁠Auto-discover the box on the LAN
docker run --rm --network host furey/fetchtv info
⁠Browse shows on the box
docker run --rm --network host furey/fetchtv shows

⁠Why --network host?

Fetch TV discovery uses SSDP multicast (239.255.255.250:1900), which doesn't traverse Docker's default bridge network. Host networking is the simplest fix.

If you already know your box's IP, skip discovery and run on bridge networking:

docker run --rm furey/fetchtv recordings --ip 192.168.1.20

⁠Common flags

FlagPurpose
--ip <addr>Target a specific Fetch TV IP, skip discovery
--port <num>Fetch TV port (default 49152)
--folder <name>Filter to a specific show/folder (repeatable)
--save <path>Output directory for downloads
--overwriteRe-download files that already exist locally
--debugVerbose UPnP/SSDP logs

Full CLI reference, path-template variables, and the programmatic ESM API are documented in the GitHub README⁠.

⁠Programmatic use

fetchtv.js is import-safe—docker run is one way to use it, but the same module powers Node-based watchers, dashboards, and integrations. See the Programmatic API⁠ section upstream.

⁠Disclaimer

This project:

  • Is licensed under the GNU GPLv3 License⁠.
  • Is not affiliated with or endorsed by Fetch TV.
  • Is a derivative work based on lingfish/fetchtv-cli⁠.
  • Is written with the assistance of AI and may contain errors.
  • Is intended for educational and experimental purposes only.
  • Is provided as-is with no warranty—please use at your own risk.

⁠Support

If you've found this project helpful consider supporting my work through:

Buy Me a Coffee⁠ | GitHub Sponsorship⁠

Contributions help me continue developing and improving this tool, allowing me to dedicate more time to add new features and ensuring it remains a valuable resource for the community.

Tag summary

Content type

Image

Digest

sha256:97e5c87b2…

Size

59.2 MB

Last updated

3 months ago

docker pull furey/fetchtv