Commit Graph
123 Commits
Author SHA1 Message Date
euzuandGitHub f47d1ee2c3 Api User Priority (#637)
Added  Api User Priority
2026-03-09 17:12:46 +01:00
knylbyteandGitHub c5632d0c98 fix: log resolved request URLs instead of provider scheme (#631)
* fix: log resolved request URLs instead of provider scheme
* fix: resolve provider log URLs only when sanitization is enabled
* fix: trigger provider failover on http 407
* fix: documentation for provider failover trigger
* moved resolve url into debug statement to avoid building it when log level i not debug
2026-03-06 11:37:20 +01:00
euzuandGitHub 36dcd0ff12 rewrite resource urls for webui (#629)
* rewrite resource urls for webui
* fix for dbviewer
* added metadata update new field
2026-03-05 00:04:53 +01:00
knylbyteandGitHub f8ae4c9d56 fix: use manual redirects only for http proxies and apply proxy setting to ffprobe subprocess (#612)
* fix: use manual redirects only for http proxies
* fix: sync panel api on manual playlist update
* fix: route ffprobe probes through configured proxy
* fix: handle non-unicode proxy env vars safely
* fix: serialize panel api sync and align sync naming
* fix: manually follow hls redirects when proxy is configured
* fix: align hls manual redirect with proxy scheme
* fix: emit playlist update failure when lock is closed
* fix: align probe and scheduler paths for upstream merge
* fix: remove playlist lock retry and name hls redirect limit
2026-02-26 20:36:01 +01:00
euzuandGitHub 0db2af05f4 Feature/vod stick to provider (#609)
* Vod Seek provider selection fix
2026-02-24 16:03:39 +01:00
euzuandGitHub 43909f1a5d - Fixed telegram markdown escape (#606)
- Fixed telegram markdown escape
- Fixed sort order for episodes
- Fixed session stickyness problem for vod and series
- Fixed template resolution
2026-02-24 12:51:51 +01:00
euzuandGitHub cbb305c456 wrong account allocatoin vod/series
Was allocating the right XC account but sometimes still storing/reusing the old base stream URL (often the first batch account) for VOD/series sessions, especially around seek/reconnect. (#605)
That caused provider/account mismatch and possible single-connection resets.
2026-02-23 21:16:45 +01:00
euzuandGitHub 815487e4f5 Fix/peristed m3u file invalid provider url (#595)
Fixed m3u playlist with  provider_config persistence as text file
Added probe_delay input option (default 2s); stream probing renamed “Stream Probing” and now covers live, VOD and series as a low‑priority background task.
2026-02-18 08:18:28 +01:00
euzuandGitHub 7b8bdaa49b Feature/stream probe (#585)
Stream probe
2026-02-14 17:52:35 +01:00
euzuandGitHub dffa8a8873 shared stream between targets (#574)
shared stream between targets
2026-02-12 19:18:16 +01:00
euzuandGitHub fc0f1f32aa Enhanced Metadata Resolution, Stream Analysis & Improved STRM-Output. Added connection priority management.
**Description:**
This PR introduces a major overhaul of how streams are analyzed and connections are managed. It integrates `ffprobe` for deep stream analysis, adds a background task queue for metadata resolution to prevent UI blocking, introduces a connection priority system, and adds support for Live TV probing.

### 🚀 Key Features

*   **FFprobe Integration & Live TV Probing**:
    *   Automatically probes streams (VOD/Series **and now Live TV**) to determine resolution, codecs (HEVC/AV1), dynamic range (HDR/DV), bit depth, and audio channels.
    *   **Safe Probing**: Probing strictly respects the provider's `max_connections` limit.
    *   Docker images now include static `ffmpeg/ffprobe` binaries.

*   **Smart Connection Management (Priority System)**:
    *   Introduced a priority system for connections to manage provider limits intelligently.
    *   **Preemption**: Users with higher priority can preempt (kick) lower priority connections when provider slots are full.
    *   **Background Queue**: Metadata resolution and stream analysis run as background tasks (Priority 0). They only run when connection slots are idle and yield immediately if a real user needs to stream.

*   **Enhanced Metadata Resolution**:
    *   **Fallback Logic**: If a provider is missing the TMDB ID or Release Date, the system resolves them via the TMDB API.
    *   **Smart Title Cleaning**: Implemented a centralized cleaner to strip common IPTV prefixes before attempting metadata matches or generating filenames, significantly improving match rates.

*   **Improved Output**:
    *   **Quality Tags**: Filenames in STRM files now include detailed tags (e.g., `Movie - [4K HEVC HDR].strm`).
    *   **Flat Grouping**: `flat: true` now correctly groups multi-version movies into single folders based on TMDB ID.
    *   **Global Series Date**: Ensures consistent series folder naming even if episodes have different years.
2026-02-12 15:06:57 +01:00
euzuandGitHub 555bc2cce1 Feature/provider config (#570)
New Features
- Automatic provider failover & rotation across multiple provider URLs with a provider:// scheme and capped retries
- Configurable failover redirect patterns to influence retry/failover behavior
UI

- New interface to view and edit failover redirect patterns in reverse proxy configuration

- Expanded docs covering Provider Failover & Rotation and enriched messaging templating
Reliability

- Improved URL resolution, error reporting and logging for more robust provider handling
2026-02-10 11:53:42 +01:00
euzuandGitHub b2ec51580e Fixed a possible deadlock during update, Added epg_request_timeshift to api user (#568)
Fixed a possible deadlock during update
Added epg_request_timeshift to api user
2026-02-08 10:53:38 +01:00
knylbyteandGitHub 7bcb9c17c3 Bugfix/proxy auth (#557)
gitignore added debug directory and codex instructions STEPS.md
fix: preserve proxy auth across redirects
fix: fail when proxy client build fails
fix: keep no-redirect fallback policy
fix: drop auth headers on cross-origin redirects
fix: ignore NO_PROXY for redirect handling
Fix redirect fails proxy authentification
2026-02-01 13:37:49 +01:00
euzuandGitHub 13f71ed988 B+ tree now supports a multi-block layout to handle records that exce… (#553)
B+ tree now supports a multi-block layout to handle records that exceed a single block.
Additionally, a larger safety factor was added to the overhead calculation to reduce the risk of data overflow.
Added in-place update for values if they fit in the block without rewriting the whole tree structure.
Implemented an LRU Block Cache (Node Cache) for the query engine.
Implemented zero copy key lookup
Added --dbv for printing id_mapping.db files
Increased initial load time with mmap
2026-01-30 19:29:04 +01:00
euzuandGitHub 2d0ac6f957 Feature/sort epg playlistexplorer normalization fix (#543)
* Fixed series sort issues
* Playlist explorer copy to clipboard functons implemented
* Epg time fix
* grace period hold stream option added.
* Fixed group and mapper normalization
* Image cache validity for browsers set to 4 hours. Responding now  last modified and cache header.
2026-01-27 18:33:16 +01:00
euzu f1aee7d302 epg parsing changed 2026-01-23 17:10:58 +01:00
euzu 3752125112 Improved HTTP request retry mechanism with standardized backoff handling for better reliability
UI Improvements
Enhanced playlist explorer styling
2026-01-23 16:06:20 +01:00
euzu c5239b5614 Optimizing playlist data exchange with ui 2026-01-22 17:43:03 +01:00
euzu ccdbf1dfce Retry request from reverseproxy retry options 2026-01-22 13:30:59 +01:00
euzuandGitHub 7dbd94792d Fixed hls streaming from local files (#530)
Fixed hls streaming from local files
2026-01-21 17:00:13 +01:00
euzuandGitHub cc2e50549d Feature/panel api update (#524)
Panel Api update
2026-01-20 18:51:46 +01:00
euzuandGitHub 16fcd7f882 Optimizations
* New Features

Added series information display with episodes, cast, and metadata in playlist explorer
Introduced multi-cluster playlist endpoints (live, VOD, series) for flexible content retrieval
Added series info lookup and filtering capabilities
Implemented sidebar navigation for source editor with dedicated pages (Main, Options, Staged, Advanced, Alias)
Added filter state controls (All, Selected, Deselected) for playlist category management
Enabled Trakt configuration toggle to control integration
Performance Improvements

Optimized B+Tree indexing for faster queries
Reduced startup latency with disk-based operations and optional memory caching
Improved string memory handling through efficient reference-counted strings
UI Enhancements

Enhanced playlist explorer with series details and episode grouping by season
Added new UI icons (Options, Advanced, Staging, Alias, Trakt)
Improved form layouts with toolbar controls
Enhanced radio button group styling for better visual hierarchy

* New Features

Added series information display with episodes, cast, and metadata in playlist explorer
Introduced multi-cluster playlist endpoints (live, VOD, series) for flexible content retrieval
Added series info lookup and filtering capabilities
Implemented sidebar navigation for source editor with dedicated pages (Main, Options, Staged, Advanced, Alias)
Added filter state controls (All, Selected, Deselected) for playlist category management
Enabled Trakt configuration toggle to control integration
Performance Improvements

Optimized B+Tree indexing for faster queries
Reduced startup latency with disk-based operations and optional memory caching
Improved string memory handling through efficient reference-counted strings
UI Enhancements

Enhanced playlist explorer with series details and episode grouping by season
Added new UI icons (Options, Advanced, Staging, Alias, Trakt)
Improved form layouts with toolbar controls
Enhanced radio button group styling for better visual hierarchy

* New Features

Added series information display with episodes, cast, and metadata in playlist explorer
Introduced multi-cluster playlist endpoints (live, VOD, series) for flexible content retrieval
Added series info lookup and filtering capabilities
Implemented sidebar navigation for source editor with dedicated pages (Main, Options, Staged, Advanced, Alias)
Added filter state controls (All, Selected, Deselected) for playlist category management
Enabled Trakt configuration toggle to control integration
Performance Improvements

Optimized B+Tree indexing for faster queries
Reduced startup latency with disk-based operations and optional memory caching
Improved string memory handling through efficient reference-counted strings
UI Enhancements

Enhanced playlist explorer with series details and episode grouping by season
Added new UI icons (Options, Advanced, Staging, Alias, Trakt)
Improved form layouts with toolbar controls
Enhanced radio button group styling for better visual hierarchy

* New Features

Added series information display with episodes, cast, and metadata in playlist explorer
Introduced multi-cluster playlist endpoints (live, VOD, series) for flexible content retrieval
Added series info lookup and filtering capabilities
Implemented sidebar navigation for source editor with dedicated pages (Main, Options, Staged, Advanced, Alias)
Added filter state controls (All, Selected, Deselected) for playlist category management
Enabled Trakt configuration toggle to control integration
Performance Improvements

Optimized B+Tree indexing for faster queries
Reduced startup latency with disk-based operations and optional memory caching
Improved string memory handling through efficient reference-counted strings
UI Enhancements

Enhanced playlist explorer with series details and episode grouping by season
Added new UI icons (Options, Advanced, Staging, Alias, Trakt)
Improved form layouts with toolbar controls
Enhanced radio button group styling for better visual hierarchy
2026-01-20 10:09:58 +01:00
euzu 6f776782f1 Playlist Update Optimization: Reduced Memory Usage
An optimization has been introduced to reduce memory consumption during playlist updates.

Overview
Previously, provider playlists were fully loaded into memory during the update process. For large playlists (e.g. hundreds of thousands of entries or multiple providers), this could result in significant RAM usage.
With the new implementation, it is now possible to optionally read provider playlists directly from disk instead of keeping them entirely in memory.

How It Works
 - users can configure whether:
     - Provider playlists are loaded into memory (previous behavior), or
     - Provider playlists are streamed to/from disk to minimize RAM usage.

Processing remains sequential and batch-based, ensuring identical functional behavior.
This approach significantly lowers peak memory usage, especially on systems with limited resources.

Benefits

- Reduced peak RAM consumption during playlist updates
- Better scalability for large playlists and multiple providers
- Full backward compatibility

Trade-offs / Drawbacks

 - Increased processing time due to reduced in-memory caching
 - Higher disk I/O usage, especially for large or fragmented playlists
 - Performance depends more strongly on disk speed (Nvme SSD, HDD)
 - Slightly increased CPU overhead due to repeated parsing and deserialization
 - Not optimal for environments where fast updates are more important than memory usage

Recommendation

 - Use in-memory mode for systems with sufficient RAM and a focus on update speed
 - Use disk-based mode for large playlists, multiple providers, or memory-constrained environments
2026-01-08 15:54:12 +01:00
euzu e5e94a5f28 Fix stream session poisoning and correct headers handling 2026-01-04 10:54:41 +01:00
euzu f571e6781b Fix stream headers 2026-01-04 09:55:50 +01:00
euzu 5c96de7fb3 Stream throttling log added 2026-01-02 13:55:19 +01:00
euzu 458b6741a6 refactoring for favourites
- implemented favourites config to target config
- added add_favourite() function to mapping
2025-12-29 16:43:33 +01:00
euzu cf0c928730 stream properties refactored 2025-12-27 09:52:28 +01:00
euzu d5207e886f stream properties refactored 2025-12-26 14:09:44 +01:00
euzu 5e246aefab some refactoring for panel api config 2025-12-20 15:15:36 +01:00
euzu 2950292a6a panel api 2025-12-19 21:13:12 +01:00
euzu d33bdb6238 panel api 2025-12-19 20:54:30 +01:00
euzu 7b8f3615ae Merge commit '756177774fc141e8b503ec5520853b923d1d5f6f' into feature/panel_api 2025-12-19 20:24:06 +01:00
euzu c7ff1bb897 panel api 2025-12-19 18:30:17 +01:00
euzu 53723d3015 Merge commit '7bb8a0c4f1a65a542bd3fae716fcb4236461072a' into feature/provider_api 2025-12-19 18:30:07 +01:00
euzu a2effbeb3f integrated local series into playlist 2025-12-19 16:00:02 +01:00
euzu aa4463b632 fetching tmdb data for series 2025-12-19 15:57:46 +01:00
knylbyte d901cda260 feat: implemented allocation IDs to prevent addr-based release races, moved provider grace to a non-blocking post-start check, and made shared stream subscription updates atomic 2025-12-18 22:07:14 +01:00
knylbyte b9583819a5 feat: enhenced logging to understand, why provider con exhaust is sometime false positive 2025-12-18 17:49:54 +01:00
euzu 475201d640 fetching tmdb data for series 2025-12-18 16:51:09 +01:00
euzu 0506e8f201 fetching tmdb data for series 2025-12-18 16:15:38 +01:00
knylbyte 756177774f feat: wait until connection expire 2025-12-18 11:07:30 +01:00
knylbyte 0ccbd86e30 feat: enhenced session logging -> print user from pool 2025-12-17 21:13:56 +01:00
knylbyte 7bb8a0c4f1 fix: cargo clippy 2025-12-17 19:38:23 +01:00
knylbyte 7b2dd5be14 feat: added support for panel api 2025-12-16 23:03:24 +01:00
euzu 8b93d29f8d Integrate local movie file into playlist 2025-12-16 20:46:09 +01:00
euzu c8d34e0dfd Integrate local movie file into playlist 2025-12-16 20:35:19 +01:00
euzu a571f863bb Integrate local movie file into playlist 2025-12-16 19:59:53 +01:00
euzu 37985c0324 Integrate local movie file into playlist 2025-12-16 16:43:11 +01:00