Commit graph

148 commits

Author SHA1 Message Date
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
OkinawaBoss
8db9689999
Merge branch 'DVR-Update' into dev 2025-10-06 06:25:40 -07:00
Dispatcharr
dea6411e1c Time Zones
- Added time zone settings
2025-10-06 07:46:23 -05:00
SergeantPanda
f90b24db40 Change default M3U hash key to URL only for new installs. 2025-10-02 09:28:02 -05:00
SergeantPanda
a3e4f23891 Enhancement: Add m3u_id parameter to generate_hash_key and update related calls 2025-10-02 09:14:22 -05:00
Dispatcharr
424a450654 DVR Features and bug fixes
Added ability to use custom comskip.ini
Added series recording without reliance on EPG
Fixed comskip bug
Fixed timezone mismatch when scheduling DVR recordings

No migrations completed yet
2025-09-18 10:23:16 -05:00
SergeantPanda
41d7066d6e Fix incorrect paths for DVR and Plugins. 2025-09-13 11:49:04 -05:00
Dispatcharr
c85316b912 Added DVR offset
Added pre/post offset for DVR recordings.
2025-09-11 20:58:42 -05:00
SergeantPanda
d1a5143312 Convert refresh time to local time. 2025-09-09 16:43:57 -05:00
SergeantPanda
c023cde8fe Add custom properties to M3UAccountProfile and implement account info retrieval 2025-09-09 16:05:58 -05:00
Dispatcharr
7401b4c8d3 Combined migrations 2025-09-04 14:36:14 -05:00
Dispatcharr
f652d2b233 Comskip Update 2025-09-04 13:45:25 -05:00
Dispatcharr
41e32bc08a DVR Updates
Added fallback settings.
Added subtitles to cards.
Add data volume mount to Docker container.
2025-09-04 08:22:13 -05:00
Dispatcharr
00cc83882a DVR update 2025-09-03 21:35:45 -05:00
SergeantPanda
5806464406 Fix unique constraint violations when rehashing streams 2025-09-03 16:23:58 -05:00
SergeantPanda
c24da847fc Get all live streams at once and filter by category. 2025-08-29 19:18:25 -05:00
SergeantPanda
19017317f6 Fix invalid import. 2025-08-12 11:48:59 -05:00
SergeantPanda
b7fb9336be Reuse connections when seeking. 2025-08-12 09:56:30 -05:00
SergeantPanda
a332678cfb Remove URL from episode relation table. 2025-08-08 08:06:28 -05:00
SergeantPanda
0e388968c4 Convert to relation tables to support multiple providers for each vod. 2025-08-07 12:31:05 -05:00
SergeantPanda
8584aae675 Better naming for different functions. 2025-08-05 12:53:22 -05:00
SergeantPanda
4accd2be85 Pull advanced info from provider when opening a movie. 2025-08-03 22:02:34 -05:00
SergeantPanda
7b5a617bf8 Use custom validator for urls fields to allow for non fqdn hostnames.
Fixes #63
2025-08-01 11:28:51 -05:00
SergeantPanda
7c442064e6 Implement natural sorting for channel names in auto channel sync 2025-07-28 18:01:50 -05:00
SergeantPanda
e876af1aa2 Scan sub folders for logos. 2025-07-18 15:04:34 -05:00
SergeantPanda
479826709b Fetch logos when logos are added by filesystem scan. 2025-07-18 15:01:26 -05:00
SergeantPanda
1ece74a0b0 Scan logos folder for new logos. 2025-07-18 14:07:58 -05:00
SergeantPanda
db10e90801 Enhance rehash_streams task to send WebSocket notifications for blocked rehash attempts.. 2025-07-11 15:51:19 -05:00
SergeantPanda
073fe72a49 Acquire locks when rehash starts. 2025-07-11 15:13:29 -05:00
SergeantPanda
8ec489d26f Send websocket updates during rehash. 2025-07-11 14:47:12 -05:00
SergeantPanda
1c7fa21b86 Add rehash streams endpoint and UI integration for triggering stream rehashing 2025-07-11 14:11:41 -05:00
SergeantPanda
fafd93e958 Refactor XC Client usage to improve error handling and resource management with context management. Implement connection pooling for better performance. 2025-07-10 19:14:43 -05:00
SergeantPanda
65da85991c Enhance error handling in API requests by checking for common blocking responses and improving JSON decode error logging. 2025-07-10 18:07:25 -05:00
SergeantPanda
b392788d5f Improve error handling for API responses by checking for empty content and handling JSON decode errors. 2025-07-10 16:22:16 -05:00
dekzter
0b63b1286f breakclass command to reset network access settings 2025-06-16 10:57:54 -04:00
SergeantPanda
9757f6a48d Fix key error with react. 2025-06-15 11:28:57 -05:00
SergeantPanda
e80d30689c Settings load correctly during first open. 2025-06-14 13:42:01 -05:00
SergeantPanda
fa3ee35d4d Prepopulate settings in database. 2025-06-13 14:51:56 -05:00
SergeantPanda
cfff51a9eb Add missing import. 2025-06-13 14:40:28 -05:00
SergeantPanda
c4a6b1469e Change to JSON settings 2025-06-13 14:36:08 -05:00
SergeantPanda
2f91e0ce1c Properly populate default values. 2025-06-12 16:02:08 -05:00
SergeantPanda
b4ae6911c9 Pull settings from database 2025-06-12 15:42:26 -05:00
SergeantPanda
a99a6431b2 More merge fixes. 2025-06-12 10:45:57 -05:00
SergeantPanda
ada1d51aaa Merge branch 'dev' of https://github.com/Dispatcharr/Dispatcharr into proxy-settings 2025-06-12 10:45:44 -05:00
dekzter
30b2a19eb0 merged in main 2025-06-11 08:38:00 -04:00
dekzter
788667b687 better error checking, only warn for UI blocking 2025-06-11 08:24:32 -04:00
SergeantPanda
2add2c1dd2 Add new settings to database. 2025-06-10 21:23:04 -05:00
SergeantPanda
7812a410b3 Allow users to change proxy settings. 2025-06-10 21:17:30 -05:00
dekzter
82f35d2aef check and warn before saving a network access setting that could block current client access 2025-06-10 08:46:36 -04:00
Marlon Alkan
18a6c428c1
core: api_views.py: add fallback IP geo provider
Fixes #127

- add ip-api.com as fallback geo provider
- fix silent JSONException by parsing only if HTTP 200 OK
- add logger and log error if IP geo can't be fetched
2025-06-08 19:28:56 +02:00