DEFENDORe / pseudotv

Create live TV channels from your own media. Access the streams using the simulated HDHomerun tuner or the generated M3U URl.
MIT License
229 stars 35 forks source link

REQ Easier content management #39

Open Wolfie713 opened 4 years ago

Wolfie713 commented 4 years ago

Made a big post about the on gitlab, and going to rephrase it here.

I believe that it would be easier to handle content if things are broken down into different kinds of containers/blocks.

Content blocks - the actual content such as TV shows and/or movies. Typically, one show would be added, but multiple shows can be added if needed or desired, such as the same show continuing under a new name (example, Roseanne and then The Conners). Or if there are several shows that are part of a group and there is a desire to have the episodes show in chronological order (example, Arrowverse shows). Content can be defaulted to being in order by (manual, airdate, season/episode, random). Episodes can also be "unchecked" or deactivated to prevent them from being shown without having to remove it from the list (but individual episodes can be added or removed). Settings include minimum time chunks for an episode before the next episode can be shown. Example would be 30 minutes for shows that take roughly 20 minutes, so if an hour is allocated to the content block, two episodes could air. Another example would be 5 minutes for a show if it has random length episodes that range from under 10 minutes to roughly 25 minutes (like SpongeBob). So if a full episode has 3 smaller parts that are under 10 minutes each, each would start at the "10 min" mark (:00, :10, :20), but if it only has 2 parts that are ~11 minutes each, it would be :00 and :15 for the start times. Of courage, a one part episode would take ~23 minutes, not leaving enough time for anything more to show.

Program blocks - Containers for content blocks. One or more content blocks can be added, with the content being shown in that order within the program block. The minimum amount of time for a content block would default to the largest episode, though that can be manually changed to be longer or shorter, but in "default length" increments (default length being 30 minutes, but can be changed per Program block). So if the longest episode takes a 30 minute block but the content block is given two blocks, then that content block would have an hour for showing content. (Like some stations do with old sitcoms, airing two episodes back to back, the same could be done.) As said before, multiple content blocks can be added, so a person could have a few different content blocks with different shows in each. Another option is the maximum time of the program block, and if content blocks should be rotated in order, or if extra content blocks should be kept in reserve until an existing content block has finished with all it's content. (ie, say you have blocks A, B, C, D, E, and F, and only room for four at a time. With rotating, first A, B, C, and D would show, with E, F, A, and B on the next run, followed by C, D, E, and F and the third use, etc. Reserve would keep showing A, B, C, and D until one of those finished, then would be replaced by E, and the next one replaced by F, then with the first one that got replaced, etc.)

Schedule blocks - Containers for Program blocks (and for content blocks of course). Add in a block and set the day of the week and the time (or a specific date and time) for that block to show. Specific date & time blocks would take priority over day-of-week based time blocks.

Each block type should also have a "filler content" option, where content can be added to fill in empty time until the end of the current content block is finished. Priority would go from Content Blocks being the highest, to Schedule Blocks being the lowest, but still chosen randomly. Idea here is on a Content Block level, someone could add in videos related to that content. On a Program Block level, it could be theme related (like if the program block is only sitcoms, could have funny "commercials" or micro programs show). On a Schedule Block level, could be content based on the time it's showing (morning might have kid related filler content, while at night it might be more mature type content). Filler content could be either individually picked videos, or a "Content Block" that was made with filler videos.

Within a programming block, one or more of the Content blocks should also be able to "override" all or part of the block IF the item is going to show needs more time than already allocated to it. For example, when TGIF was around with Sabrina the Teenage Witch showing, there were a couple of "episodes" that were TV movies, taking up two hours (the entire TGIF block) instead of 30 minutes. This option would look for any content blocks that need the have more time (in order) and make any necessary adjustments. So in a similar situation (as Sabrina), if two blocks need the entire block, a "first come, first served" policy kicks in and would get the full time, then the next time the program block is used, the second one would take the entire block. (It wouldn't have content blocks playing until it sees that one needs an entire block and then is like, "oh crap, not enough time!" Thus the function of looking ahead of time so it's figured out properly.)

Okay @powdermilkman, I just know you're gonna be like, "Oh hell no!" to this but still, gotta admit that it's a nice idea overall. 😁

To summarize it all, using containers that can have other containers, might also fix problems with channels that have entirely too many items on the list.

powdermilkman commented 4 years ago

Unless we have some brave soul come in and tackle that mess of time logic, I don't think that complicated of a schedule will be happening anytime soon. i'll keep this up as an enhancement, but I wouldn't hold my breath.

As far as a better visualization of what shows are in a channel, and organizing that channel, that for sure will getting look at in the rewrite.

Wolfie713 commented 4 years ago

Unless we have some brave soul come in and tackle that mess of time logic...

LOL yeah I know my idea is super advanced... Though the containers concept in itself should be easy enough to implement. After all, it's like collecting a bunch of 'links' to episodes, then referring to the collection (vs the individual episodes) when adding it to a channel. Then just have it repeat the different content blocks. The filler content (per block) should also be possible to do, if the block has a maximum length and it grabs for something to fill the empty time. A filler idea would be a still image (possibly with text telling what's coming up next).

Perhaps that much would be possible? Because instead of a crap ton of episodes to order and all that, just have a few blocks on the channel, and then have those blocks repeat, then someone only needs to edit the blocks to add or remove (or re-order) episodes. Essentially breaking things down into manageable chunks.

Wolfie713 commented 4 years ago

A little update to the original concept here.

Content blocks - be able to link individual items together to form custom "episodes." Optional, of course, but those items remain linked so if any randomizing is done, they stay together.

Example of use: Being able to combine video shorts of different shows to make your own show.

The show "Woody Woodpecker and Friends" is a combination of a few different shows, including "The Woody Woodpecker Show," "Chilly Willy," etc. But let's say that they were only individual shows. If someone wanted to make their own recreation of the show that had segments from different shows, simply randomizing might not be suitable, as the user may want each 'episode' start with a Woody Woodpecker segment, or not have multiple segments in a row of the same character, etc. May also want the same segments to always be shown together. Thus having custom episodes which can contain content from different shows to make a custom show.