Plugins

Back to All Plugins

EPG Janitor

Version: 1.26.2901817 Author: PiratesIRC Last Updated: Oct 17 2026, 18:25 UTC

Scans for channels with EPG assignments but no program data. Auto-matches EPG to channels using intelligent fuzzy matching with aliases, removes EPG from hidden channels, and manages EPG assignments.

License: MIT Discord Repository

Dispatcharr min

Downloads

Latest Release

Checksums:

MD5:    ec10772f3d36e04454e068eac38b0473
SHA256: cb87b8968f8132722d9387a40c6f49aa72032b917e87fcb5e580ee3e520892e0

All Versions

Version Download Built Commit MD5 SHA256
1.26.2901817 Download Oct 17 2026, 18:25 UTC b55013e ec10772f3d36e04454e068eac38b0473 cb87b8968f8132722d9387a40c6f49aa72032b917e87fcb5e580ee3e520892e0
1.26.2832018 Download Oct 10 2026, 20:24 UTC 81947ce efd2962982e1cd37032600a84e2702a8 e120b41abeb582f1cc80b736501cb92f38fbf57eb8223b88f73a21bdfbdfeccc
1.26.2481223 Download Sep 05 2026, 19:57 UTC ceb7847 de24b7ac4404039dec564a5bd315d4f8 2cc9ba6b40733bf40a059376deb72da9639cec40df4dcdcfa0cd77abffb7f60a
1.26.2281111 Download Aug 16 2026, 16:17 UTC 79842f2 8e7ade420998eadd4c60fcb617672989 239cf4955b3d079ab76c97983a6989472470af7d7cd847b87ac9cabfd8761e30
1.26.2241232 Download Aug 12 2026, 18:14 UTC 990a732 8421a27d9dd9c7ba8e2f0732f573a16a 07b8e5bfa73cd1505278eadb9dd20965be45b6f10e75f6b426015e7cb4fbb739
1.26.2241113 Download Aug 12 2026, 16:23 UTC 72a2b84 5959b74ddfba7eab9cf884abaf750f7c 2570b9dcbe9e2f30a90a6ce5422061a7a886ca72423fbd35f1d2fcacc1aa4a0b
1.26.1791309 Download Jun 29 2026, 11:27 UTC 7ffd2cc 0b1509586098119da3e920c579893a26 9e72f5c744dbcc2f70437a9bb7c45c4e4bfbd4daca6d2d2c802624b141a90d59
1.26.1660712 Download Jun 15 2026, 14:20 UTC dba280a 1ec4eba71a3d9190da36389713927fd3 aedcc482a09c0f0e24851658fa2d1a59313ddd330eeb52231e9e24cfb8347b64
1.26.1420824 Download May 22 2026, 14:19 UTC a5ccaa9 d50bf65d2cd18488c6be7f652a36e90a 55cc84fa57d509b3eefea3511ffbb9705ee5dd2f1994f6c247e6ee6372484ba0
1.26.1021352 Download Apr 12 2026, 19:22 UTC 2cf371a 25cf566d3e3c0fec1f99d78d7b09dd85 9109e92484c73b24fad2c92b455f9a3bd8e2280b51b6eac7120c14de42314499

Maintainers: PiratesIRC Source: Browse Plugin

Metadata: View full manifest


Plugin README

Keep your Electronic Program Guide clean, accurate, and complete

[!TIP] New to Dispatcharr plugins? Start with the Dispatcharr Plugin Workflow guide. It explains what each plugin and tool does, where they overlap, and what order to use them in.

The badges add up figures sent by every install that keeps Share anonymous usage counts ticked; see Anonymous usage counts. The author’s own installation includes a reconstructed opening record of 2,212 guide assignments, an estimate made from its CSV exports when its local tally was added on 5 September 2026; it counts toward that installation’s total only. Every install sends only the work its own ledger records.

Warning: back up your database

Before installing or using this plugin, it is highly recommended that you create a backup of your Dispatcharr database. This plugin modifies EPG assignments on channels and can rename channels.

Click here for instructions on how to back up your database.

What it does

Dispatcharr can assign a programme guide to a channel, but nothing checks whether that assignment actually works. EPG Janitor finds the channels where it does not, and fixes them.

Assign a guide to channels that have none. Auto-match scores every channel against every eligible EPG entry using two independent methods and takes the better result: weighted structural signals over US callsign, state, city and network, and a fuzzy name pipeline running alias lookup, then exact, then substring, then token-sort comparison. Every run has a preview that writes a CSV and changes nothing.

Repair guides that are assigned but empty. Scan & Heal finds channels whose EPG assignment carries no actual programme data, searches for a working replacement among the sources you allow, and only commits one that has real programme data in the window you set.

Recognise US over-the-air stations properly. Callsigns are matched in parentheses (ABC (WABC)), at the end of a name (WABC-DT), and in the leading CALLSIGN (NETWORK) form used by feeds such as jesmann-US. A shared high-confidence callsign anchors the match and a disagreement rejects it. Every callsign the FCC licenses is shipped with the plugin, so a real station is recognised even when it is absent from the channel databases, while callsign-shaped English words such as KILN and WHIP are not mistaken for stations.

Avoid the mistakes that look like successes. Numbered and time-shifted siblings do not cross-match, so Fox Sports 1 does not take Fox Sports 2’s guide and ITV2 does not take ITV2 +1’s. Regional variants route to the correct regional feed. Number words fold to digits, CamelCase splits, and dotted compounds split, while radio frequencies are left alone.

Clean up in bulk. Remove EPG assignments by regular expression, from hidden channels, or from whole groups. Tag channels with missing programme data with a visible suffix. Export any run to CSV with the score, the method and the reasoning for every row.

Know what a run did, and what it was told to do. Every CSV export opens with a commented preamble naming the report, stating the counts the run produced, and listing the settings it used under the names the form gives them. Button colour tells you the consequence before you press anything: red can remove a guide assignment and always confirms first, orange writes data but removes no assignment, green runs an operation that writes no channel data, and blue only reads. Exports can be cleaned up by age, which is off unless you set a number of days, and never touches another plugin’s files.

Watch for guides going stale, if you want it. An optional freshness watchdog checks every EPG source on a schedule and refreshes any that has errored or is running out of guide data. It is off by default and writes system events only.

Everything runs inside Dispatcharr against its database directly, so there are no API credentials to configure. There are no required dependencies.

Documentation

Read the warning about East to Pacific reassignment before your first bulk apply on cable or premium channels. A channel whose name carries no regional marker can be moved from an East feed to a Pacific one, shifting its whole guide by two to three hours.

Anonymous usage counts

The EPGs Matched and Active Installs badges count every install that leaves the “Share anonymous usage counts” setting (on by default) ticked and runs at least one action, or the scheduled EPG Freshness Watchdog check when that is enabled (after the next Celery worker restart following an update). EPGs Matched counts the guide assignments this plugin wrote to channels when Apply Auto-Match or Scan & Heal (Apply Changes) writes them. A preview writes nothing and counts nothing. A channel re-assigned later counts again, so the figure measures work done, not distinct channels.

When an action or a scheduled run finishes, the plugin sends this plugin’s EPGs Matched total and a random id for this plugin on this install to the plugin author’s counter at plugin-stats.dpas.workers.dev. It sends at most once an hour, or ten minutes after the last successful send when a run has just assigned guides. There is no timer: a run that finishes inside the gap sends nothing, and the next action or scheduled run that finds the gap passed sends the total.

The server stores that id with the total and the date of the last report, and keeps them until this install unticks the setting and the delete succeeds, or until the plugin author removes them by hand. An install that stops reporting still counts toward EPGs Matched. The connection shows the server your public IP address; the server uses it only to limit abuse and does not store it in its database, though when an install first registers it keeps a salted one-way hash of it (of its /64 block for IPv6) for up to three days. Cloudflare, which hosts the server, keeps its own request logs. No names, channels, guide sources, URLs or settings are sent. The figures are self-reported by installs and capped by the server, not verified.

What counts as an active install: an install that sent at least one report in the last 30 UTC days. A badge changes after the server’s hourly recount, which runs at the start of each UTC hour, and Shields may cache the badge for up to an hour more, so a new report can take up to about two hours to show.

The setting is the last one in the settings form, in its own section. Unticking it takes effect when the next action or scheduled run finishes; the plugin then asks the server to delete this install’s figures. Once the server confirms the delete, the plugin forgets its id, and ticking the setting again later starts a new one; if the delete could not reach the server, the plugin keeps the id and retries. The plugin keeps that id and the timing of its reports in /data/plugin_stats/epg-janitor/ (install_id, sent, backoff, disabled, delete_backoff, lock). To start a new id, untick the setting and let an action run so the server deletes this install’s figures; deleting that folder while the setting is ticked, or before the server confirms the delete, leaves the old figures on the server, and the new id then sends the full total again, so the badge counts it twice.

Requirements

Installation

  1. Download the latest EPG-Janitor.zip from the Releases page.
  2. Log in to Dispatcharr’s web UI.
  3. Navigate to Plugins then Import Plugin and upload the zip.
  4. Enable the plugin after installation.

Updating

  1. Remove the old plugin. Navigate to Plugins, click the trash icon next to EPG Janitor, confirm.
  2. Restart Dispatcharr. Log out, then docker restart dispatcharr (or equivalent).
  3. Install the new version. Log back in, import the new zip, enable.
  4. Your settings are preserved. Dispatcharr stores plugin settings in its database separately from plugin code. Updates do not clear your configuration.

Official Plugin Hub

EPG Janitor is published in the Dispatcharr Plugins official repository, so you can install and update it directly from Dispatcharr’s Plugin Hub without downloading the zip manually.

Credits

This plugin is free and always will be. If it saves you time and you would like to support the work, you can sponsor it at github.com/sponsors/PiratesIRC.

Sponsoring buys no priority, no private support and no influence over what gets built. Bug reports and pull requests are just as welcome from everyone.

Contributing

See CONTRIBUTING.md.

License

MIT. See LICENSE.


All product names, trademarks, and registered trademarks mentioned in this project are the property of their respective owners. Channel alias data is community-compiled from publicly available information and is not affiliated with or endorsed by any broadcaster.