Repository navigation
Releases
M3U Failover 1.3.1.1
Small housekeeping release: the companion plugin's new name is used throughout. No change in behaviour.
Other changes
- The VOD Failover plugin is now called Failover Manager (1.6). The
POST /__urlsnotes infailover.pyand the README use the new name. - The README and
docker-compose.example.ymlnow usebrxdy22/m3u-failover:latest. Version tags such as1.3.1.1still exist if you prefer to pin one.
Installing
With brxdy22/m3u-failover:latest, pull and start the container again: docker compose pull m3u-failover && docker compose up -d m3u-failover. To pin this version, use brxdy22/m3u-failover:1.3.1.1. Without the image, replace failover.py in your mount and restart the container. Updating from 1.3.1 is optional, as the code is the same.
M3U Failover 1.3.1
M3U Failover 1.3.1 stops Gluetun AutoSwitch from blocking working VPN exits when one mirror or one video server misbehaves.
Fixes
- Remembered titles are checked on more than one URL. Before asking AutoSwitch to move the exit, the proxy checks titles that played before. It used to ask only the first URL, so a single mirror that answers 404 for everything made a good exit look refused. Now a title counts as refused only when every URL asked (up to
RECHECK_URLS+ 1) agrees. The background VOD check already worked this way. - A handed-out video server means the exit is fine. If any URL redirects the title to a video server, the provider has accepted the exit, even when that video server then times out. The proxy no longer asks for an exit move in that case, and logs "a URL handed out a video server, so the exit is not refused".
- When too little time is left before the client gives up, the check now leaves the exit alone instead of deciding on partial answers.
Before you update
- Restarting the proxy cuts anything playing. Live channels can take about a minute to return, so update while nobody is watching.
- If AutoSwitch blocked exits by mistake before this update, remove them from its Blocked exits list.
Installing
- Change the image tag to
brxdy22/m3u-failover:1.3.1and start the container again. See the README.
M3U Failover 1.3
M3U Failover 1.3 lets the VOD Failover plugin 1.5 show and edit each account's URLs from Dispatcharr.
Features
- Added
POST /__urls. Send{"urls": [...]}to an account's port to replace its URLs inupstreams.conf. The new list is used at once, without a restart. Notes on URLs that stay are kept, and comments and commented-out URLs are left alone. - Full URLs in
/__status. The status now lists them underurls, next to the host-onlyupstreams.
Fixes
- The nightly sort and URL edits can no longer overwrite each other's changes to
upstreams.conf.
Before you update
/__urlsis accepted only from loopback, and only base URLs (scheme://host[:port]) without logins. KeepBINDon127.0.0.1.- Restarting the proxy cuts anything playing. Live channels can take about a minute to return, so update while nobody is watching.
- Update this before using the Mirror URLs section in VOD Failover 1.5.
Installing
- See the README.
M3U Failover 1.2.1
M3U Failover 1.2.1 closes streams properly before a VPN exit change and handles connection slots a provider is still holding.
Features
- Added
GET /__before_move?hold=N. It closes all of an account's streams, VOD included, and holds new requests for up to 6 seconds while the exit moves./__drop_liveends the hold early. Gluetun AutoSwitch 1.8.2 uses it. - Stuck slot handling. When a provider keeps answering with a connection limit (458 or 460) while nothing is streaming, the proxy answers repeat requests itself, so the provider sees about one try every 15 seconds.
/__statusshows this asstuck_slot_seconds. - Timing in the log. Stream lines now show how long each host took to answer, which helps find a slow redirect or video server.
Fixes
- Streams are now hard closed on both sides, so a slow client can't keep a closing connection open.
Before you update
- Update this before Gluetun AutoSwitch 1.8.2.
- Restarting the proxy cuts anything playing. Live channels can take about a minute to return, so update while nobody is watching.
- Some providers keep a slot for about 5 minutes after an exit change, however the stream was closed. This release does not shorten that.
Installing
- See the README.
M3U Failover 1.2
Gives a Dispatcharr M3U account several provider URLs, and moves to the next one when a URL fails.
Features
- Tells a refused VPN exit from a missing title. When every URL answers 404 for a movie or episode, the proxy asks up to
CANARIEStitles that played before for one byte. If they are refused too, the exit is refused, not the title. The proxy then asks Gluetun AutoSwitch 1.7 to move the exit, and retries the same request on the new exit. All of this stays withinREQUEST_DEADLINE_SECONDS(9 s), under Dispatcharr's 10 s read timeout. If no title has played yet, a movie is looked up in the catalogue instead. - Added
GET /__vod_check, which Gluetun AutoSwitch uses for its background check while nobody is watching. It does nothing while the account is streaming. - Remembered titles are kept in
vod_canaries.jsonnext toupstreams.conf, as type and file name only, never with the login. It is in.gitignore. - New settings:
EXIT_HOOK_URL(offdisables the exit move),REQUEST_DEADLINE_SECONDS,CANARIESandCANARY_FILE.
Before you update
/configmust stay writable, as it already is for the nightly sort.- Without Gluetun AutoSwitch 1.7, the proxy works as before: an agreed 404 is passed on to Dispatcharr.
Installing
- See the README.
M3U Failover 1.1
Gives a Dispatcharr M3U account several provider URLs, and moves to the next one when a URL fails.
Features
- Added
GET /__drop_live, which closes an account's live streams at once so clients reconnect right after a VPN exit change. Gluetun AutoSwitch 1.6.1 uses it.
Fixes
player_api.php404s are now tried on the next URL after a short wait, because some providers answer 404 to calls made too close together. This stops those answers failing a whole account refresh. Set it withAPI_RETRY_STATUSES,API_RETRIESandAPI_RETRY_DELAY.
Other changes
- Version numbers now drop trailing zeros: 1.1 rather than 1.1.0.
- Release notes have moved from the README to GitHub Releases.
Installing
- See the README.
Earlier versions
1.0.0
Features
- First public release.
- The nightly sort now uses a neutral user agent by default. Set
SORT_USER_AGENTto change it.
Before 1.0.0
These changes were made before the project had version numbers.
Features
- 2026-11-04: added
BLOCKED_REDIRECT_HOSTS, so a redirect to a block page counts as a failed URL. - 2026-11-03: added the nightly sort.
- 2026-11-03: redirects to video servers are now followed by the proxy, so those streams show in its logs and status.
- 2026-11-03: added limits on attempts and account pauses, to avoid hammering providers.
- 2026-11-03: first version: fails over between an account's URLs before any data reaches Dispatcharr.
Fixes
- 2026-11-05: a 403 on one live feed now blocks only that feed, instead of pausing the whole account.
M3U Failover 1.0.0
Gives a Dispatcharr M3U account several provider URLs, and moves to the next one when a URL fails.
Features
- First public release.
- The nightly sort now uses a neutral user agent by default. Set
SORT_USER_AGENTto change it.
Installing
- See the README.