Commit graph

64 commits

Author SHA1 Message Date
SergeantPanda
e7700b60f3 Enhancement: Add validation for EPG objects and payloads in updateEPG functions to prevent errors from invalid data 2025-11-21 15:10:54 -06:00
SergeantPanda
e6146e5243 Bug fix: Reduce websocket message size when processing epgs. Also remove unnecessary console logging during epg refresh. Fixes [Bug]: Page goes blank if sending too many requests / responses
Fixes #327
2025-11-04 18:23:45 -06:00
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
SergeantPanda
8794156767 Enhancement: Only fetch playlists and channel profiles after successful m3u refresh not every m3u_refresh status update. This should reduce network traffice and efficiency.
This may fix #327
2025-10-07 10:02:26 -05:00
SergeantPanda
da245c409a Bug fix: Backend now notifies frontend when a new playlist is creating. This should fix where accounts will sometimes only show fetching groups after a new account is added. 2025-10-07 09:55:35 -05:00
SergeantPanda
9ef2aa966d Requery channels when setting channel names from epg. 2025-09-16 19:44:41 -05:00
SergeantPanda
7e13e51198 Update the frontend on logo change. 2025-09-16 17:55:55 -05:00
SergeantPanda
3cb5a061c9 Show progress as notifications. 2025-09-16 17:35:38 -05:00
SergeantPanda
6384f4f56f Add progress notifications for EPG matching process 2025-09-16 13:47:59 -05:00
SergeantPanda
a1d35a8dad Additional check if channel number is in use before creating. 2025-09-14 13:34:03 -05:00
SergeantPanda
05641cfb02 Remove duplicate websocket notification 2025-09-13 20:30:18 -05:00
SergeantPanda
7866eed613 Fetch channels after successful creation of channels. 2025-09-13 20:21:27 -05:00
SergeantPanda
301a162e71 Switch to normal notifications 2025-09-13 20:16:14 -05:00
SergeantPanda
cf7ea09341 Implement asynchronous bulk channel creation from stream IDs with WebSocket progress updates 2025-09-13 19:59:43 -05:00
SergeantPanda
84c752761a Ability to refresh account info from account info modal and provide notification on results. 2025-09-09 18:15:33 -05:00
OkinawaBoss
3fb8e0ebd1
Merge pull request #363 from Dispatcharr/Plugins
Plugins
2025-09-08 09:11:19 -05:00
Dispatcharr
e9a11588c4 Init Plugins 2025-09-05 17:10:11 -05:00
SergeantPanda
f1196bb988 Send websocket update on client disconnect and connect. 2025-09-05 12:04:30 -05:00
Dispatcharr
f652d2b233 Comskip Update 2025-09-04 13:45:25 -05:00
Dispatcharr
00cc83882a DVR update 2025-09-03 21:35:45 -05:00
SergeantPanda
774c80e2a4 Convert a couple more functions to fetch ALL logos. 2025-08-26 16:42:16 -05:00
SergeantPanda
39598b4ff4 Refactor logo handling: Introduce useLogosStore, implement lazy loading for logos, and update components to use new store methods. 2025-08-22 09:56:20 -05:00
SergeantPanda
491b0cea29 Fetch channel profiles on successful m3u refresh. 2025-07-27 19:27:50 -05:00
SergeantPanda
d926d90dd9 Fix websocket message. 2025-07-18 15:14:11 -05:00
SergeantPanda
479826709b Fetch logos when logos are added by filesystem scan. 2025-07-18 15:01:26 -05:00
SergeantPanda
13672919d0 Fetch Playlists on successful m3u update. 2025-07-18 14:26:09 -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
8ec489d26f Send websocket updates during rehash. 2025-07-11 14:47:12 -05:00
SergeantPanda
0ec5ffff33 Fix status message not updating the frontend during M3U refresh. 2025-06-06 08:00:19 -05:00
SergeantPanda
e7439a074f Enhance WebSocket connection handling based on authentication status 2025-05-13 16:57:39 -05:00
dekzter
9c9e546f80 websockets behind auth, cleaned up errors and bad state handling in websocket.jsx 2025-05-10 08:40:53 -04:00
SergeantPanda
e9c5a719b1 Better handling for notifying of groups needing to be edited. 2025-05-06 10:09:59 -05:00
SergeantPanda
c225edc3ec Fixes updated time not updating the local state. 2025-05-06 08:19:05 -05:00
SergeantPanda
452e2ee213 Fixes status not changing to fetchign and parsing when those operations are occuring. 2025-05-06 08:13:59 -05:00
SergeantPanda
ae93bc2a1f Adds a "Pending Setup" status so the user knows they need to select groups before their streams are imported. 2025-05-05 19:50:20 -05:00
SergeantPanda
30e82fb302 Lots of status message fixes. 2025-05-04 19:33:03 -05:00
SergeantPanda
b713b516b4 Convert m3u accounts to a similar format to epg for status updates. Renamed DB field last_error to last_message so we can use it for more messaging. Migration to change updated_at field to not be updated everytime the m3u changes. It should only update the updated_at when we successfully update the m3u. 2025-05-04 17:51:57 -05:00
SergeantPanda
7418abb31c Attempt to fix websockets for production mode. 2025-05-04 11:56:15 -05:00
SergeantPanda
509f2be3a8 Fixes a lot of "You provided a value prop to a form field without an onChange handler" errors.
Reworks websocket connection to be more robust and notify user of connection errors.

Will retry if websocket connection dies.
2025-05-04 10:58:38 -05:00
SergeantPanda
4595cea400 Status update overhaul for epg files. 2025-05-03 18:39:59 -05:00
SergeantPanda
9f52b22432 Show all HTTP errors to the user during epg update. 2025-05-03 16:26:30 -05:00
SergeantPanda
e8355a78c6 Fetch channels when auto-match is complete. 2025-04-30 16:51:48 -05:00
SergeantPanda
418bf01449 Notify user of how many matches auto-match found.
Add batch EPG association endpoint and improve EPG matching logic

- Implemented a new API endpoint to associate multiple channels with EPG data in a single request.
- Enhanced the EPG matching process to normalize TVG IDs and log relevant information.
- Updated frontend to handle batch EPG associations efficiently, falling back to legacy methods when necessary.
2025-04-29 18:13:42 -05:00
dekzter
eb9419ddd2 proper handling of store variables so we now aren't listening on any change from the state of a store 2025-04-19 08:49:04 -04:00
dekzter
af638326e1 attempt at table rewrite for efficient virtualized table 2025-04-15 13:48:06 -04:00
dekzter
319af59415 fixed websocket and m3u profile form 2025-04-13 09:55:07 -04:00
dekzter
663ea2c5b9 soooo many changes.... 2025-04-11 13:22:08 -04:00
dekzter
386876a378 fixed reverted websocket port, record now shows on all shows, not just currently playiny 2025-04-06 20:00:07 -04:00
dekzter
b3551fe32f fixed potential timezone issue 2025-04-06 19:14:32 -04:00
dekzter
354cd84c88 filesystem watch and process of m3u and epg 2025-04-06 15:58:55 -04:00