Feature Request: Ability to Force-Record Episodes with Gear Override in Bulk

Hi Channels team,

I’d like to request an enhancement to the Passes system—specifically around the per‑episode gear icon overrides.

Right now, the gear icon allows us to force‑record an individual episode even when it doesn’t match the global Pass rules. This is extremely useful, but the limitation is that it must be done one episode at a time. For shows with long back catalogs or large batches of upcoming episodes, this becomes very time‑consuming.

Feature request:
Please add a way to apply the gear‑icon “Record” override to multiple episodes at once. This could be implemented in several possible ways:

  • Multi‑select episodes within a Pass and apply “Record” to all selected
  • A “Record all episodes in this list” option
  • A bulk‑action menu similar to the existing “Delete” or “Mark as Watched” batch tools
  • Or even an API endpoint that allows batch overrides programmatically

Why this matters:
For users with large episodic libraries, the ability to bulk‑override recording behavior would dramatically reduce manual work and make Passes far more efficient. The current one‑by‑one method becomes impractical when dealing with dozens or hundreds of episodes.

This would be a small UI/API addition with a big quality‑of‑life impact.

Thanks for considering it—and thanks for all the work you continue to put into Channels.

I was in a situation recently where I needed to do exactly what you described and I agree that it was painful.
That's why you have my vote. :slightly_smiling_face:

In my case, it was because one channel started airing episodes of a series in better quality and I wanted that. At the same time, I didn't want to delete the original episodes until I was able to verify that the new versions were indeed better, which is why I had to manually force the DVR to record duplicate episodes one by one. :cold_sweat:

I recognize that this is quite a rare situation so I will understand if the developers don't feel like spending time on it. But if they do, that will be a nice quality-of-life improvement, as you said.

I've been in the situation you describe and adjusting the pass using an advanced pass solves the problem and with more precision as you can limit to specific seasons and/or episodes

The problem with doing that from a pass is that it may not target a specific SeriesID.
Example is a pass doesn't specify the SeriesID, but uses a Title match.
It could easily be done from the Show (which has a SeriesID and tmsId).

Batch mark all the recorded show episodes as not recorded.

I do this manually now. I'm sure it could be automated by a developer.

Title "Blue World", SeriesID "413197"

First you get the tmsId for the show
I extract it from one of the show recordings at /dvr/files
.Airing.Raw.program.tmsId "SH027201150000"

Then get the list of the tmsID recorded episodes from /programs
I know they will be in one of these two formats for a show episode
"ProgramID": "SH027201150000-1774265400" (used generic guide data, no season, episode or OAD)
"ProgramID": "EP027201150110" (has season and episode and episode title)
So I want a list of all those beginning with "??02720115", where ?? is EP (for episode) or SH (for show)

"EP027201150012": "queued-1775561370-248",
"EP027201150014": "queued-1775474970-248",
"EP027201150029": "queued-1774438170-248",
"EP027201150056": "queued-1774697370-248",
"EP027201150062": "queued-1775042970-248",
"EP027201150063": "queued-1775215770-248",
"EP027201150064": "queued-1775388570-248",
"EP027201150065": "queued-1774524570-248",
"EP027201150066": "queued-1774610970-248",
"EP027201150073": "queued-1774956570-248",
"EP027201150077": "queued-1775302170-248",
"EP027201150102": "recorded-3225",
"EP027201150103": "recorded-3239",
"EP027201150104": "recorded-3240",
"EP027201150105": "recorded-3249",
"EP027201150106": "recorded-3251",
"EP027201150107": "recorded-3259",
"EP027201150108": "recorded-3260",
"EP027201150109": "recorded-3264",
"EP027201150110": "recorded-3277",
"EP027201150116": "queued-1775647770-248",
"EP027201150121": "queued-1774783770-248",
"EP027201150122": "queued-1774870170-248",
"SH027201150000-1773401400": "recorded-3283",
"SH027201150000-1773442800": "recorded-3291",
"SH027201150000-1773487800": "recorded-3292",
"SH027201150000-1773529200": "recorded-3296",
"SH027201150000-1773574200": "recorded-3297",
"SH027201150000-1773615600": "recorded-3298",
"SH027201150000-1773747000": "recorded-3302",
"SH027201150000-1773788400": "recorded-3303",
"SH027201150000-1773919800": "recorded-3305",
"SH027201150000-1773961200": "recorded-3306",
"SH027201150000-1774006200": "recorded-3307",
"SH027201150000-1774047600": "recorded-3308",
"SH027201150000-1774092600": "recorded-3309",
"SH027201150000-1774134000": "recorded-3311",
"SH027201150000-1774179000": "recorded-3314",
"SH027201150000-1774220400": "recorded-3315",
"SH027201150000-1774265400": "recorded-3318",
"SH027201150000-1774306800": "queued-1774306770-248",
"SH027201150000-1774351800": "queued-1774351770-248",
"SH027201150000-1774393200": "queued-1774393170-248",

I want recorded episodes (EP) only, not queued for recording or skipped

"EP027201150102": "recorded-3225",
"EP027201150103": "recorded-3239",
"EP027201150104": "recorded-3240",
"EP027201150105": "recorded-3249",
"EP027201150106": "recorded-3251",
"EP027201150107": "recorded-3259",
"EP027201150108": "recorded-3260",
"EP027201150109": "recorded-3264",
"EP027201150110": "recorded-3277",

Then issue a "mark as not recorded" for each of them

curl -XDELETE http://192.168.1.4:8089/dvr/programs/EP027201150102
curl -XDELETE http://192.168.1.4:8089/dvr/programs/EP027201150103
curl -XDELETE http://192.168.1.4:8089/dvr/programs/EP027201150104
curl -XDELETE http://192.168.1.4:8089/dvr/programs/EP027201150105
curl -XDELETE http://192.168.1.4:8089/dvr/programs/EP027201150106
curl -XDELETE http://192.168.1.4:8089/dvr/programs/EP027201150107
curl -XDELETE http://192.168.1.4:8089/dvr/programs/EP027201150108
curl -XDELETE http://192.168.1.4:8089/dvr/programs/EP027201150109
curl -XDELETE http://192.168.1.4:8089/dvr/programs/EP027201150110

A pass will now record those episodes again.