Add 'Seasons' folders for TV series?

I’m a recent convert to the Channels DVR, and have used Plex to serve my media for a long time (and Plex DVR since it was in beta). I’d find it extremely helpful if Channels could support a typical existing Plex media hierachy:

  1. Provide settings to relocate the TV/ and Movies/ folders somewhere besides inside the Channels/ folder. In my case, In my system, the Channels/ folder is in /var/lib (on the rootfs SSD) and my media is on a large raid array, under /video. I imagine separating your working info (guide data, etc.) from your bulk storage (recordings) isn’t an uncommon arrangement.

  2. add ‘Season nn’ subfolders under each folder for a TV show. Plex is happier that way.

  3. only replace a recording if it is higher quality than the existing one (or the same but with multi-channel audio). I really don’t want Channels DVR to ‘downgrade’ recordings :wink:

While I can work around these in a somewhat clunky way, it’d be much nicer if it ‘just worked’, particularly for other customers who may not be as technically adept as I am (I’m going to have to write some code…).

I know I can add the Channels/Movies and Channels/TV folders to Plex, but I then end up with many duplicate recordings consuming disk space (Channels doesn’t know when I already have an older episode of ‘Elementary’ for example, and will record it again). I could hardlink my existing recordings into the Channels folders, but I’m not sure how happy Channels would be if terabytes of ‘foreign’ recordings suddenly appeared in its private folders. Ditto if I mapped the Channels folders to my existing Movie and TV folders (e.g. with a symlink or bind-mount). Plus since there are no ‘Season’ folders under Channels/TV, I’d still have the duplicate recording problem.

I realize these are not trivial to implement, and I appreciate you considering them, as I’m sure all your mutual Channels DVR & Plex users would.

  • Paul

Thanks! Right now, Channels is less of a library based experience, and it shows. Channels was first a live TV experience, and then provided DVR functionality, so the browsing is based on that.

Customers tend to have WAY less recordings than those using Plex have with local content.

Channels doesnt support scanning existing local content into its database. All it knows about is what it has recorded.

We understand that some fans would like a more library browsing experience and it’s something we think about a lot, but for now, it makes less sense.

Thanks for posting this, posts like this really help inform us on what people expect and want.

1 Like

I don’t expect the Channels dev team to do all the work :slight_smile:

A few hooks in the right places would allow someone like myself to contribute some tools to help Channels DVR more smoothly co-exist with the likes of Plex, kmttg, sonarr, couchpotato, etc. Personally, I’d rather you spend your time making the DVR part more awesome, and let the community help with the integration side.

By ‘hooks’, I’m thinking specifically:

  1. having Channels ask external code whether an episode should be scheduled/recorded, given series name, season, episode etc. It’d also pass in metadata about the quality that would be available (video resolution, audio channels, etc.). Probably best to ask a few minutes before starting the recording. Armed with that info, I could write code that compared that info against existing recordings, if any, to see if recording the show would be a quality ‘upgrade’. libavformat makes that relatively straightforward code to write (at least on Linux)
  2. notification that a recording has completed successfully. Then we can add post-processing ‘to taste’ - like transcoding to a more efficient codec (e.g. H.265), creating chapter markers using comskip, fetching fan art, etc. MCEbuddy provides a great laundry list of the kinds of processing that can be usefully applied post-capture.

I guess you could think of them as preflight and postflight checks. Points at which external developers can add to the goodness you are building.

Personally I would rather you spend your cycles on the core of Channels DVR - I agree, it makes less sense for you to do integration work when there’s core work to do. By adding some simple hooks, which shouldn’t be that painful, you could enable the developers among us to help you with the integration part :slight_smile:

BTW, ‘hooks’ don’t have to be in the form of an executable/API, a webhook-style interface would be preferable (and much more portable). Just add something to your HTTP API to register a webhook to call in those two cases. Then ‘POST’ the info to the registered URI(s) when those events occur. You could even make them fully async if you add an API to cancel an individual scheduled recording, since that’s the only case where the ‘hook’ would want to affect Channels behavior.

Thanks for listening,

  • Paul
    (who has had some prior experience with DVR development :wink: )

I was just going to suggest Season folders, one of the things I like about Tivo.

Maybe I need to learn to program in a modern language since all I really know is Fortran. :grin:

In the meantime, here's a little script for Linux that hard-links new shows into my Plex folders. Since it's a link, it doesn't consume any additional disk space, Channels doesn't have to deal with files 'disappearing' under its feet, and Channels can happily expire shows, and the version under the Plex hierarchy will remain.

[Update] this has evolved some since I first posted it. It now puts Channels recordings into the right season folder if Channels DVR provided the info in the file's name (it almost always does).

1 Like

I don’t think we would add a hook like this, but you can do it yourself right now by looking at the list of scheduled jobs (GET /dvr/jobs) and then skipping the ones you don’t want to record (PUT /dvr/jobs/xxx/skip)

I agree it would be nice to have an official hook for this. In the meantime you can do something like Feature request : do “stuff” on recording started for “files.updated” events, or just poll GET /dvr/files looking for new recordings where Processed is set to true.

+1 for season / episode identification on recorded shows. For example, I set a season pass to record Law & Order: SVU - new episodes only. But “new” seems to mean “new” to me - not first ever time broadcast by the Network. For example, it recorded a “replay” that NBC aired last week - it was from season 19, episode 12 - the show will be starting season 22 soon. So in chronological terms - the episode channels recorded was a couple years old - not new, but it was new to me.

And when I went into the recordings section of the app, it simply indicated a new episode of SVU was available. My wife was excited because she thought it was the season premiere of season 22 (was not sure what the date of the premiere was) and only realized it was not until we started watching it.

Is this a niche use case? Perhaps, but if users plan to store a lot of episodes of shows that span seasons or are aired both in syndication and new, it would be good to know.

It is also a familiarity factor of those coming from the Plex / XBMC interface with the 09x01 season/episode naming convention that was so prevalent in all skins over the years.

What problems are you seeing in Plex without the Season folders? We did a lot of testing with Plex a while ago and it had no problem recognizing Channels DVR recordings based on the season/episode information in the filenames.

We already show season/episode information on recordings in the app. Both when you click on them and when you swipe down in the player.

Also “New” on passes definitely only means first-time broadcasts. If a re-run recorded and was marked as New, its because the guide data was incorrect and said it was a new airing.

It’s not a ‘problem’ as much is it is trying to reconcile an existing Plex library against new recordings from Channels.

Specifically, I don’t want to replace an existing recording I might have (e.g. pulled from TiVo via kmttg) with one that’s lower quality (e.g. only has stereo audio, is standard def, etc.).

I can add the Channels ‘TV’ and ‘Movies’ folders to Plex, and Plex will sort it all out just fine. But then I’m using disk space at a pretty ferocious pace because of the duplicates. Not a problem for most unless you already have quite a few episodes of any long-running show (e.g. MythBusters, Gilmore Girls, Bones, Poirot), but some are missing, are SD, stereo only, etc. and you’d like to catch re-runs and upgrade those episodes with better recordings.

The problem I’m dealing with is that since the organization is different, it’s harder to use simple scripts to walk the corresponding hierarchies and cherry-pick the ‘better quality’ episodes. The other tools I use all peacefully co-exist in a <show>/Season <nn> hierarchy. Channels DVR is the odd one out.

I guess a contributing problem is that I can’t say ‘HD only’ or ‘5.1 only’ on the passes.

On the web UI you can edit a pass using the advanced mode and add Tags == HDTV or add a channel number to force HD only.

There’s a tag for DD5.1 also, but the guide data is not very accurate when it comes to tagging audio specs.

Thanks for the suggestions, tmm1. I’ll take a more thorough look at the API, and see what I can come up with.

@Paul.C I’m trying to get just the HardlinkToTV.sh script to work and it doesn’t seem to work for me. I don't need to create the hardlinks, so I commented out the last ln line. I changed the destdir path to just a directory I'm adding recordings to.

When I run this in terminal "bash HardlinkToTV.sh videofile.mpg" it just creates the Orphans folder with nothing in it and that's it.

1 Like