diff --git a/.prettierignore b/.prettierignore index 8e279ed9..e0313857 100644 --- a/.prettierignore +++ b/.prettierignore @@ -18,4 +18,6 @@ server/web/ server/temp **/.tsup -*.html \ No newline at end of file +*.html + +docs-extras/**/*.md \ No newline at end of file diff --git a/docs-extras/includes/definitions.md b/docs-extras/includes/definitions.md new file mode 100644 index 00000000..9b163b33 --- /dev/null +++ b/docs-extras/includes/definitions.md @@ -0,0 +1,4 @@ + + +*[HTML]: Hyper Text Markup Language +*[W3C]: World Wide Web Consortium diff --git a/docs/configure/library/custom-shows.md b/docs/configure/library/custom-shows.md index 73561ed0..9dae3836 100644 --- a/docs/configure/library/custom-shows.md +++ b/docs/configure/library/custom-shows.md @@ -1,3 +1,6 @@ # Custom Shows -Placeholder +!!! info + Custom Shows will be renamed to "Playlists" an in upcoming release + +Custom Shows are akin to classic playlists. Any ordering operations in scheduling tools will use the ordering as defined in the Custom Show. Custom Shows can be schedule as if they were "regular" shows in slot editors. Content within are grouped by the Custom Show and not their _actual_ show. This allows creating more complex groupings of content for use in channels. \ No newline at end of file diff --git a/docs/configure/programming.md b/docs/configure/programming.md index aefdf952..7a2a9789 100644 --- a/docs/configure/programming.md +++ b/docs/configure/programming.md @@ -32,24 +32,4 @@ By default, your shows are ordered alphabetically (by show name) and episodes wi ![Media added](/assets/programming-mediaadded.png) -To make the viewing experience more interesting and authentic, you will want to use Tunarr's [scheduling tools](../scheduling-tools/) to reorder and group content. - -If we instead wanted this similar to what we'd see on traditional television, select "SORT" and choose either Block Shuffle or Cyclic Shuffle. - -![Shuffle](/assets/programming-shuffle.png) - -Block Shuffle will play a specific number of episodes from a show, proceed to the next show, play that same number of episodes, proceed to the next show, etc. - -By default, when a show completes airing, it will be absent from your schedule until all of the remaining shows complete airing, where the schedule will then be repeated. This means that as you reach the end of your schedule, it may be dominated by one or two shows that have a longer runtime or more episodes than others. - -To get around this, select "Make perfect schedule loop". This will attempt to have all shows complete airing at the same time. - -![Block shuffle](/assets/programming-blockshuffle.png) - -Please note the perfect schedule loop option does not currently support larger channels. If you see the below error, your channel has too many episodes to use this feature. In this case, the "Loop Short Programs" option can be used. - -![Block shuffle loop error](/assets/programming-blockshuffle-noloop.png) - -Cyclic Shuffle will alternate between shows while attempting to preserve the episode sequence. So in this example, it will play S00E01 from show 1, then play S00E01-E02 from show 2, then S01E01-E02 from show 1, then S01E01 from show 2, etc. Compared to Block Schedule, Cyclic Shuffle is randomized, so it will not always display the same number of episodes from a show. Cyclic Shuffle also does not support any features to create even blocks, so the end of your schedule will likely be dominated by a few shows with larger episode counts and runtime. - -Once you have a channel created with programming, you are ready to setup your [Client](/configure/clients) and start using Tunarr! \ No newline at end of file +To make the viewing experience more interesting and authentic, you will want to use Tunarr's [scheduling tools](../scheduling/) to reorder and group content. diff --git a/docs/configure/scheduling-tools/block-shuffle.md b/docs/configure/scheduling-tools/block-shuffle.md deleted file mode 100644 index e69de29b..00000000 diff --git a/docs/configure/scheduling-tools/cyclic-shuffle.md b/docs/configure/scheduling-tools/cyclic-shuffle.md deleted file mode 100644 index e69de29b..00000000 diff --git a/docs/configure/scheduling-tools/balance.md b/docs/configure/scheduling/balance.md similarity index 100% rename from docs/configure/scheduling-tools/balance.md rename to docs/configure/scheduling/balance.md diff --git a/docs/configure/scheduling/block-shuffle.md b/docs/configure/scheduling/block-shuffle.md new file mode 100644 index 00000000..1a1135fb --- /dev/null +++ b/docs/configure/scheduling/block-shuffle.md @@ -0,0 +1,13 @@ +# Block Shuffle + +Block Shuffle will play a specific number of episodes from a show, proceed to the next show, play that same number of episodes, proceed to the next show, etc. + +By default, when a show completes airing, it will be absent from your schedule until all of the remaining shows complete airing, where the schedule will then be repeated. This means that as you reach the end of your schedule, it may be dominated by one or two shows that have a longer runtime or more episodes than others. + +To get around this, select `Make perfect schedule loop`. This will attempt to have all shows complete airing at the same time. + +![Block shuffle](/assets/programming-blockshuffle.png) + +Please note the perfect schedule loop option does not currently support larger channels. If you see the below error, your channel has too many episodes to use this feature. In this case, the "Loop Short Programs" option can be used. + +![Block shuffle loop error](/assets/programming-blockshuffle-noloop.png) diff --git a/docs/configure/scheduling/concepts.md b/docs/configure/scheduling/concepts.md new file mode 100644 index 00000000..6ef37b19 --- /dev/null +++ b/docs/configure/scheduling/concepts.md @@ -0,0 +1,11 @@ +# Scheduling Concepts + +## Definitions + +* **Lineup**: A channel's *lineup* describes its programming sequence. Channel lineups are looped infinitely and based off of the channel's start time. +* **Programming**: A channel's *programming* refers the actual media in a channel lineup +* **Filler**: *Filler* content refers to media that is used to "round out" a schedule. For instance, a 22-minute television episode may need 8 minutes of "filler" distributed within a 30-minute slot to replicate a true "TV" experience +* **Flex**: *Flex* time refers to chunks of time in which one or more pieces of filler are placed within a channel lineup. Content used to fill periods of *flex* time are not chosen until stream time. +* **Padding**: *Padding* generally refers to applying flex time in order to have content start at "nice" times, e.g. 12:00, 12:30, etc. +* **Slot**: Tunarr includes programming tools called *slot* editors. Using *slots* allows for fine-grained control over channel lineups. A *slot* refers to a "grouping" of programming with either a set duration or start time. + diff --git a/docs/configure/scheduling-tools/consolidate.md b/docs/configure/scheduling/consolidate.md similarity index 100% rename from docs/configure/scheduling-tools/consolidate.md rename to docs/configure/scheduling/consolidate.md diff --git a/docs/configure/scheduling/cyclic-shuffle.md b/docs/configure/scheduling/cyclic-shuffle.md new file mode 100644 index 00000000..403a8324 --- /dev/null +++ b/docs/configure/scheduling/cyclic-shuffle.md @@ -0,0 +1,19 @@ +# Cyclic Shuffle + +Cyclic Shuffle alternates between shows while preserving the episode sequence. This tool is the equivalent of using [block shuffle](../scheduling/block-shuffle.md) and setting "Program Count" to "1" and "Type" to "Random". + +
+ ![](../../assets/programming-shuffle.png) +
Cyclic and Block shuffle buttons
+
+ +A sample cyclic shuffled schedule with 3 shows could be something like: + +1. Show A, S02E03 +2. Show B, S01E02 +3. Show A, S02E04 +4. Show C, S04E01 +5. Show C, S04E02 +6. Show B, S01E03 + +In other words, channel programming is grouped by show, randomly shuffled (while preserving episode order), and then chosen at random to produce a lineup. diff --git a/docs/configure/scheduling-tools/index.md b/docs/configure/scheduling/index.md similarity index 85% rename from docs/configure/scheduling-tools/index.md rename to docs/configure/scheduling/index.md index 6d828b9f..a1c1f77d 100644 --- a/docs/configure/scheduling-tools/index.md +++ b/docs/configure/scheduling/index.md @@ -1,6 +1,6 @@ # Scheduling Tools -Tunarr offers a range of tools for modifying channel schedules. +Tunarr offers a range of tools for modifying channel schedules. However, it is important to first become familiar with Tunarr's scheduling [concepts](./concepts.md). * [Slot Editor](random-slots.md) allows assigning programming to "slots" of fixed or dynamic duration. Slots can then be played back sequentially or at random when generating a schedule. diff --git a/docs/configure/scheduling-tools/random-slots.md b/docs/configure/scheduling/random-slots.md similarity index 89% rename from docs/configure/scheduling-tools/random-slots.md rename to docs/configure/scheduling/random-slots.md index ccace0f4..59c47f20 100644 --- a/docs/configure/scheduling-tools/random-slots.md +++ b/docs/configure/scheduling/random-slots.md @@ -4,13 +4,13 @@ Slots Editor allows you to schedule programming in "slots". This tool is powerfu To use Slots Editor for your channel programming, select "TOOLS", then "Slots Editor". -![Slots Editor](/assets/scheduling-tools-random_slots.png) +![Slots Editor](../../assets/scheduling-tools-random_slots.png) ## Slot Configuration Each slot is configured with a few parameters. -![Add/Edit Slot Dialog](/assets/slot-editor-dialog.png) +![Add/Edit Slot Dialog](../../assets/slot-editor-dialog.png) When creating a programming slot, you choose between "Fixed" and "Dynamic" length. @@ -68,21 +68,21 @@ This is an implementation of the original "cyclic shuffle" dizqueTV programming In this example, we want "30 Rock and "Arrested Development" to air in 30 minute blocks. We have Pad Times set to 00:00 and 00:30, so the episodes will always try to air right at those times by using [Flex](/configure/channels/flex) to fill the empty time. -![Random Slots example](/assets/scheduling-tools-random_slots_example.png) +![Random Slots example](../../assets/scheduling-tools-random_slots_example.png) Below is a generated schedule with this configuration. A few things to note: *
- ![Random Slots preview](/assets/scheduling-tools-random_slots_preview.png) + ![Random Slots preview](../../assets/scheduling-tools-random_slots_preview.png)
Example generated schedule
In this example, one of our shows has far more episodes than the other but by default the episode Distribution is Uniform so the shows will be ordered with equal priority. If we instead wanted "Yu-Gi-Oh! Duel Monsters" to air 70% of the time, and "Batman Beyond" to air 30% of the time, we would set Distribution to Weighted and adjust the sliders. -![Random Slots example with weighting](/assets/scheduling-tools-random_slots_example_weighted.png) +![Random Slots example with weighting](../../assets/scheduling-tools-random_slots_example_weighted.png) See below for an example of our schedule now that "Yu-Gi-Oh! Duel Monsters" is Weighted to air 70% of the time. -![Random Slots preview with weighting](/assets/scheduling-tools-random_slots_preview_weighted.png) \ No newline at end of file +![Random Slots preview with weighting](../../assets/scheduling-tools-random_slots_preview_weighted.png) \ No newline at end of file diff --git a/docs/configure/scheduling-tools/replicate.md b/docs/configure/scheduling/replicate.md similarity index 100% rename from docs/configure/scheduling-tools/replicate.md rename to docs/configure/scheduling/replicate.md diff --git a/docs/configure/scheduling-tools/time-slots.md b/docs/configure/scheduling/time-slots.md similarity index 77% rename from docs/configure/scheduling-tools/time-slots.md rename to docs/configure/scheduling/time-slots.md index 15debed0..3900f404 100644 --- a/docs/configure/scheduling-tools/time-slots.md +++ b/docs/configure/scheduling/time-slots.md @@ -4,20 +4,20 @@ Time Slots allow you to schedule specific shows to run at specific time slots ea To schedule Time Slots for your channel programming, select "TOOLS", then "Time Slots". -![Time Slots](/assets/scheduling-tools-time_slots.png) +![Time Slots](../../assets/scheduling-tools-time_slots.png) In this example, we want "Yu-Gi-Oh! Duel Monsters" to always air at 10am each day, followed by "Batman Beyond" at 10:30am each day. We also want [Flex](/configure/channels/flex) to fill the time in-between episodes using the Pad Times option, so that episodes always air right at 10am and 10:30am. We have allowed 5 minutes of lateness, so if an episode runs over the 30 minute time slot by 5 minutes or less, the next shows episode will still play no later than 10:35am. -![Time Slots example](/assets/scheduling-tools-time_slots_example.png) +![Time Slots example](../../assets/scheduling-tools-time_slots_example.png) See below for an example of our current schedule. Please note that as we have only selected two time slots for the entire day, "Batman Beyond" being our last scheduled show will continue airing until the following day at 10am when the next scheduled episode of "Yu-Gi-Oh! Duel Monsters" is set to air. -![Time Slots preview](/assets/scheduling-tools-time_slots_preview.png) +![Time Slots preview](../../assets/scheduling-tools-time_slots_preview.png) If we instead wanted to air these two episodes, then have the channel play Flex content until the next episode of "Yu-Gi-Oh! Duel Monsters" the following day at 10am, we would simply add Flex after "Batman Beyond". -![Time Slots example with flex](/assets/scheduling-tools-time_slots_exampleflex.png) +![Time Slots example with flex](../../assets/scheduling-tools-time_slots_exampleflex.png) See below for an example of our schedule now that we have Flex after our two episodes air. Now it will alternate Show 1 Day 1, Show 2 Day 1, Show 1 Day 2, Show 2 Day 2, etc. -![Time Slots preview with flex](/assets/scheduling-tools-time_slots_previewflex.png) \ No newline at end of file +![Time Slots preview with flex](../../assets/scheduling-tools-time_slots_previewflex.png) \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 879a4c9e..4e161ef1 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -34,6 +34,7 @@ theme: - navigation.indexes - content.code.copy - content.code.select + - content.tooltips nav: - Home: index.md @@ -61,12 +62,15 @@ nav: - Watermarks: configure/channels/watermarks.md - Programming: configure/programming.md - Scheduling: - - configure/scheduling-tools/index.md - - Slot Editor: configure/scheduling-tools/random-slots.md - - Time Slots: configure/scheduling-tools/time-slots.md - - Balance: configure/scheduling-tools/balance.md - - Replicate: configure/scheduling-tools/replicate.md - - Consolidate: configure/scheduling-tools/consolidate.md + - configure/scheduling/index.md + - Concepts: configure/scheduling/concepts.md + - Slot Editor: configure/scheduling/random-slots.md + - Time Slots: configure/scheduling/time-slots.md + - Cyclic Shuffle: configure/scheduling/cyclic-shuffle.md + - Block Shuffle: configure/scheduling/block-shuffle.md + #- Balance: configure/scheduling/balance.md + - Replicate: configure/scheduling/replicate.md + - Consolidate: configure/scheduling/consolidate.md - Library: - configure/library/index.md - Filler: configure/library/filler.md @@ -83,6 +87,7 @@ nav: markdown_extensions: - admonition + - abbr - md_in_html - toc: permalink: true @@ -93,7 +98,9 @@ markdown_extensions: line_spans: __span pygments_lang_class: true - pymdownx.inlinehilite - - pymdownx.snippets + - pymdownx.snippets: + auto_append: + - docs-extras/includes/definitions.md extra_css: - stylesheets/extra.css @@ -104,3 +111,6 @@ extra: plugins: - glightbox + +watch: + - docs-extras/includes