chrisbenincasa / tunarr

Spiritual successor to dizqueTV
https://tunarr.com/
zlib License
120 stars 11 forks source link

Ability to export and import channels, and create a repo of community channels #637

Open michael-j-green opened 1 month ago

michael-j-green commented 1 month ago

Is your feature request related to a problem? Please describe. Thought it might help speed adoption, provide inspiration, etc if users could export their channel line up/schedule (on a per channel basis).

Ability to submit these exported channels to a repo for easy sharing.

Describe the solution you'd like As above

Describe alternatives you've considered Individual users publishing their channels to their blogs (if they have them), or other social media site so they can be manually copied.

Additional context None

chrisbenincasa commented 1 month ago

I've thought about this before too, but haven't had a chance to write out anything yet. I think this is a really cool idea that I'd love to tackle.

The tricky part is "matching" media between users servers. Luckily, this is something we're facing right now while actively working on adding Jellyfin as a new media source. Our best bet would probably be to identify and export UUIDs for items in a channel. For Plex, we could utilize the Plex GUID (for items that actually have it). Then for everything else, and Plex items too really, we could use the various external IDs that the media sources matched (IMDB, TMDB, Tvdb).

The other thing we'd need to solve for, which I've approached a little while working on dynamic channels, is a JSON specification for scheduling. For example: saving something like "pad to nearest :30" in the lineup config, rather than just applying the rule.

I think what all of this also lends itself toward is "template" channels. And maybe that's what sharing channels could be in the first iteration. Especially if we have dynamic channels (i.e. channels based on queries against a media source).

Happy to brainstorm more about this. I think we should definitely do this, but a couple other pieces of work (more media sources, media matching, and dynamic channels) all include foundational work for this that I think it'd be blocked.

michael-j-green commented 1 month ago

I just tapped that out while playing with my kid, while thinking “I need to build a Cartoon Network for her”.

It wasn’t until afterwards that I started to think about all the little bits that need to be completed first to support such a feature.

So more than happy to consider this a low priority (since there’s plenty of more important issues to work on), but thought it would be good as a feature to aim for in the future (given the work that needs to support it would be useful elsewhere as you pointed out).

chrisbenincasa commented 1 month ago

Totally agree! Sorry, I didn't mean to make this sound like a ton of work to the point of being impossible or unlikely. I just wanted to get down some of my thoughts on paper! I've totally had the same thought with my son - auto loading up pre-configured kids channels from my childhood would be super cool.

Another thought- it would be interesting to be able to gauge the compatibility of a channel before you import it. Perhaps we could scan for matches before just blindly importing and warn if your media sources are lacking the necessary content. Better yet...and this is probably a really longs ways off, we could integrate into some sort of content manager to request missing items to complete the channel!

michael-j-green commented 1 month ago

Nah, you're good! :) Tone is lost in text sadly.

But yeah, I thought about that. It would need a validation step before the import happens since not everyone's library is going to have 24-hours of Voltron 🤣

To take that last thought (which is really awesome by the way), during import - it could offer the user options for what to do for missing content: leave blank, use a pool of filler video, substitute in a different show (or episode), or reach out to the *arr's to pull content (this last one would need a substitution video until the requested content is available).

So many options! 😄