Dispatcharr/core
SergeantPanda 22fb0b3bdd Enhancement: Add Custom Dummy EPG with Dynamic Pattern Matching and Name Source Selection
This enhancement introduces a powerful custom dummy EPG system that allows users to generate EPG programs on-demand by parsing channel or stream names using configurable regex patterns.

Key Features:
- Custom Pattern Matching: Define regex patterns to extract information from channel/stream names (teams, leagues, times, dates, etc.)
- Flexible Name Source: Choose to parse either the channel name or a specific stream name (by index)
- Timezone-Aware Scheduling: Automatic DST handling using pytz timezone names (e.g., 'US/Eastern', 'Europe/London')
- Time Format Support: Parse both 12-hour (AM/PM) and 24-hour time formats
- Date Parsing: Extract dates from names with flexible month/day/year patterns
- Custom Templates: Format EPG titles and descriptions using captured groups with {placeholder} syntax
- Upcoming/Ended Customization: Define custom titles and descriptions for programs before and after scheduled events
- Live Preview: Test patterns and templates in real-time with sample input
- Smart Program Generation: Automatically creates "Upcoming" and "Ended" programs around scheduled events

Use Cases:
- Sports channels with event details in stream names (e.g., "NHL 01: Bruins VS Leafs @ 8:00PM ET")
- Movie channels with genre/title/year information
- Racing events with driver/track/series details
- Any scenario where EPG data is embedded in channel/stream naming conventions

Technical Implementation:
- Backend: Pattern matching engine with timezone conversion and program scheduling logic
- Frontend: Interactive form with validation, pattern testing, and visual group preview
- Name Source Options: Parse from channel name or selectable stream index (1-based)
- Fallback Behavior: Uses standard dummy EPG if patterns don't match
- Custom Properties: Stores all configuration in EPGSource.custom_properties JSON field

Configuration Options:
- Title Pattern: Extract primary information (required)
- Time Pattern: Extract hour/minute/AM-PM (optional)
- Date Pattern: Extract month/day/year (optional)
- Timezone: Event timezone with automatic DST support
- Program Duration: Length of generated programs in minutes
- Title Template: Format EPG title using captured groups
- Description Template: Format EPG description using captured groups
- Upcoming Title Template: Custom title for programs before event starts (optional)
- Upcoming Description Template: Custom description for programs before event starts (optional)
- Ended Title Template: Custom title for programs after event ends (optional)
- Ended Description Template: Custom description for programs after event ends (optional)
- Name Source: Channel name or stream name
- Stream Index: Which stream to use when parsing stream names (1, 2, 3, etc.)

Closes #293
2025-10-18 12:08:56 -05:00
..
fixtures modified database fields for consistency, removed custom_url from streams (no longer needed) 2025-03-16 09:07:10 -04:00
management/commands breakclass command to reset network access settings 2025-06-16 10:57:54 -04:00
migrations Change default M3U hash key to URL only for new installs. 2025-10-02 09:28:02 -05:00
__init__.py Alpha v3 2025-02-21 15:31:59 -06:00
admin.py modified database fields for consistency, removed custom_url from streams (no longer needed) 2025-03-16 09:07:10 -04:00
api_urls.py Enhancement: Add Custom Dummy EPG with Dynamic Pattern Matching and Name Source Selection 2025-10-18 12:08:56 -05:00
api_views.py Enhancement: Add Custom Dummy EPG with Dynamic Pattern Matching and Name Source Selection 2025-10-18 12:08:56 -05:00
apps.py Huge overhaul of logging. More standardized and we are now capturing logs from celery task and sening to console. 2025-05-10 09:29:06 -05:00
command_utils.py Bypass redis for management commands. 2025-03-22 12:23:54 -05:00
models.py Time Zones 2025-10-06 07:46:23 -05:00
redis_pubsub.py Bypass redis for management commands. 2025-03-22 12:23:54 -05:00
serializers.py Change to JSON settings 2025-06-13 14:36:08 -05:00
signals.py Fixed bug in deleting stream profiles 2025-04-20 09:54:16 -04:00
tasks.py Enhancement: Add m3u_id parameter to generate_hash_key and update related calls 2025-10-02 09:14:22 -05:00
tests.py Alpha v3 2025-02-21 15:31:59 -06:00
urls.py Pre-Alpha v4 2025-02-24 15:04:03 -06:00
utils.py Use custom validator for urls fields to allow for non fqdn hostnames. 2025-08-01 11:28:51 -05:00
views.py Convert to relation tables to support multiple providers for each vod. 2025-08-07 12:31:05 -05:00
xtream_codes.py Convert refresh time to local time. 2025-09-09 16:43:57 -05:00