fetchtv
May 24, 2026 · View on GitHub
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).
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
| Flag | Purpose |
|---|---|
--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 |
--overwrite | Re-download files that already exist locally |
--debug | Verbose 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.