Creating a Classic Schedule
Classic schedules are managed through the web UI under Scheduling > Program Schedules.Schedule Configuration
TheProgramSchedule model (ErsatzTV.Core/Domain/ProgramSchedule.cs:5) supports the following options:
The name of your schedule
When enabled, multi-part episodes will always play together even if shuffled
When enabled, collection items are treated as episodes of a single show for EPG purposes
Shuffle the order of schedule items themselves (not the content within items)
Start playback at a random point in the schedule
Controls how fixed-time items behave when they can’t start exactly on time
Strict(0) - Must start exactly on timeFlexible(1) - Can start late if previous content overruns
Schedule Items
Each schedule contains multipleProgramScheduleItem objects. There are three types:
One Item
ProgramScheduleItemOne plays a single item from the collection.
Multiple Items
ProgramScheduleItemMultiple (ErsatzTV.Core/Domain/ProgramScheduleItemMultiple.cs:3) plays multiple items based on a mode:
- Count Mode
- CollectionSize Mode
- PlaylistItemSize Mode
- MultiEpisodeGroupSize Mode
Play a fixed number of items:
Duration Items
ProgramScheduleItemDuration (ErsatzTV.Core/Domain/ProgramScheduleItemDuration.cs:3) fills a specific duration with content:
The duration to fill with content
What to do when content doesn’t exactly fill the duration
None(0) - Stop scheduling, leave gapOffline(1) - Show offline slateSlate(2) - Show custom slateFiller(3) - Use filler content
How many times to try finding content that fits before giving up
Schedule Item Properties
All schedule items (ErsatzTV.Core/Domain/ProgramScheduleItem.cs:7) share common properties:Start Time Configuration
Fixed start time (e.g., “14:30:00” for 2:30 PM). When null, the item starts dynamically after the previous item.
Automatically determined:
Fixed(2) - When StartTime is setDynamic(1) - When StartTime is null
Override the schedule-level fixed start time behavior for this item
Content Source
One of the following must be set:Standard collection reference
Single media item reference
Multi-collection reference
Smart collection reference
Playlist reference
Ad-hoc search query
Playback Configuration
The type of collection being scheduled
Marathon Options
How to group episodes in marathon mode
Shuffle the order of groups in marathon mode
Shuffle items within groups in marathon mode
How many items per group in marathon mode
Filler Content
Classic schedules support multiple types of filler:Filler to play before the main content
Filler to play during the main content
Filler to play after the main content
Filler to use when content doesn’t fill the scheduled time
Filler to use when scheduled content is unavailable
Display Options
How to display this item in the EPG guide
Override the title shown in the EPG
Media Preferences
Preferred audio language (e.g., “eng”, “spa”)
Preferred audio track by title
Preferred subtitle language
Subtitle display mode
Graphics and Watermarks
Watermarks to display during this item
Graphics overlays to display during this item
Controls fill group behavior
Example Schedule
Morning News Block
Fixed start at 06:00, play 3 news episodes chronologically
- Start Time:
06:00:00 - Collection: Morning News
- Multiple Mode: Count = 3
- Playback Order: Chronological
Cartoons Block
Fixed start at 08:00, fill 2 hours with cartoons
- Start Time:
08:00:00 - Collection: Saturday Cartoons
- Duration: 2 hours
- Playback Order: Shuffle
- Tail Mode: Filler
Movie
Fixed start at 10:00, play one movie
- Start Time:
10:00:00 - Collection: Action Movies
- Item Count: 1
- Playback Order: Random
Alternate Schedules
Classic schedules support alternates throughProgramScheduleAlternate (ErsatzTV.Core/Domain/ProgramScheduleAlternate.cs), which allows switching between different schedules based on date ranges or other criteria.
Schedule items are played in order by their
Index property. Use the web UI to reorder items by dragging and dropping.Context Tracking
Classic schedules useClassicSchedulingContext (ErsatzTV.Core/Scheduling/ClassicSchedulingContext.cs:3) to track:
- Current schedule and item being played
- Enumerator state (position in collection)
- Random seed for reproducible randomization
- Index within the current collection
