Commit Graph
152 Commits
Author SHA1 Message Date
knylbyteandGitHub dedf6bb63b fix: set input.options defaults if input.options is none and normalize missing /live prefix for hls streams (#602)
fix: set input.options defaults if input.options is none and normalize missing /live prefix for hls streams
fix: document defensive options guard in config input prepare
fix: group configinputoptions methods in one impl
fix: document fallback semantics for configinput _or flag helpers
fix: restore false fallback for missing options in flag checks
2026-02-22 23:27:40 +01:00
euzuandGitHub 17df82f006 Sort Order (#600)
* Sort Order
* Frontend refactorings
2026-02-20 20:40:48 +01:00
euzuandGitHub fe6a35676c Feature/login background (#599)
* Login particle flow background
* Fixed initial input folder missing problem
2026-02-20 13:09:30 +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 dd7d3c6fe3 Target is updated after all resolve tasks finish (#590)
Target is updated after all resolve tasks finish
2026-02-15 17:31:14 +01:00
euzuandGitHub 688952821e fixed: probe_live was ignored. (#588)
Fix probe_live flag
2026-02-15 11:54:51 +01:00
euzuandGitHub 7b8bdaa49b Feature/stream probe (#585)
Stream probe
2026-02-14 17:52:35 +01:00
euzuandGitHub 38813bb672 Feature/makefile ci and log with local time (#582)
- Add Makefile to simplify installing required tools
- Add CONTRIBUTING.md welcome new contributors
- Add fmt, lint, test tasks to makefile and update CONTRIBUTING.md
- Add CI workflow
-  Log with local date
2026-02-14 12:12:59 +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 9bd44284d0 DB optimizations (#572)
DB optimizations
2026-02-10 19:37:20 +01:00
euzuandGitHub c149c8cde5 Fixed epg icon url (#567)
Fixed epg icon url
Fixed m3u parsing
2026-02-06 14:09:09 +01:00
euzuandGitHub 360c75dae7 Feature/fix tests (#561)
fixed some tests
2026-02-01 14:45:33 +01:00
euzuandGitHub 8b985410a6 Hls links have now extension when the original url has one. (#556)
Hls links have now extension when the original url has one
2026-01-31 15:48:14 +01:00
euzuandGitHub 33124393d4 Feature/m3u playlist with extension (#552)
m3u playlist with extensions
2026-01-30 00:20:13 +01:00
euzuandGitHub bcc1c4afba sort when no sort is given (#551)
Sort with provider order if no sort config/rules given.
2026-01-29 23:25:59 +01:00
euzuandGitHub 0be9258fc0 epg timeshift refactoring (#550)
epg timeshift refactoring
2026-01-29 18:08:22 +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
euzuandGitHub e01197cf52 Feature/for each genre review (#541)
* New Features
Added for_each DSL construct for iterating over playlist item fields, with split() function support.
Added "genre" as a queryable and editable playlist item field.

Bug Fixes
Improved short EPG request handling with automatic default limits.
Fixed EPG timestamp formatting to use UTC consistently.
2026-01-26 23:04:37 +01:00
euzuandGitHub 62f7611125 Feature/log fixes and button styling (#536)
fixed some logs, added input name
epg short response hos now no errors field
added missing fields for reverse_proxy and library config in ui
fixed button styling
2026-01-25 16:32:35 +01:00
euzuandGitHub a407f209a8 Messaging templates (#534)
Messaging templates
2026-01-25 12:41:18 +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 f02e8a11a2 Fixed info content type mismatch (#529)
* Fixed info content type mismatch
2026-01-21 15:32:46 +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 aa73d7b7ad - Refactored Sort
- Added cluster to favourites
- Added Regex cache to avoid multiple compilations of same regex
2026-01-13 17:03:03 +01:00
euzu 873235d8f3 - Fixed Sort
- Added cluster to favourites
- Added Regex cache to avoid multiple compilations of same regex
2026-01-13 16:37:27 +01:00
euzu b42e2f71fa New Features
- Added user_agent configuration field to Trakt API settings.

Changes

- Renamed Trakt API configuration field from key to api_key for consistency.
- Updated README and documentation with new Trakt API configuration structure.
- Updated UI labels for API configuration fields.
2026-01-12 09:11:16 +01:00
euzu 3fade46e04 Added user_agent to trakt 2026-01-12 09:01:35 +01:00
euzu 192157a1c5 Fixed missing extension for live streams
Fixed Sorting issue
2026-01-11 14:12:36 +01:00
euzu 1f9ca609b4 - **Breaking CHANGE** Sort refactor, now with filter
- Fixed xtream api season info, filled missing seasons attribute
- xtream api category_id = 0 filter ignored
- Fixed logo resource query
2026-01-10 20:21:43 +01:00
euzu 24e09f0c7d - **Breaking CHANGE** Sort refactor, now with filter
- Fixed xtream api season info, filled missing seasons attribute
- xtream api category_id = 0 filter ignored
2026-01-10 17:11:15 +01:00
euzu 083de5caf8 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 16:35:57 +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 8cc9283a31 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:11:12 +01:00
euzu a8d0837021 Fixed EPG titles to match renamed / mapped titles 2026-01-04 16:40:42 +01:00
euzu dba7ceaa87 Fixed EPG titles to match renamed / mapped titles 2026-01-04 16:36:35 +01:00
euzu 9c7b292949 Fixed EPG titles to match renamed / mapped titles 2026-01-04 16:27:59 +01:00
euzu 75be790831 Fixed EPG titles to match renamed / mapped titles 2026-01-04 16:24:08 +01:00
euzu 14153fc4ff Fixed EPG titles to match renamed / mapped titles 2026-01-04 16:17:47 +01:00
euzu 5bb32ebc72 Fixed category creation during xtream playlist save 2026-01-04 14:55:19 +01:00
euzu a5db614d25 Fixed input storage path 2026-01-04 12:49:34 +01:00
euzu 538f6680da Added discord notifications 2026-01-03 20:58:28 +01:00
euzu da8947dd76 To align input definitions with the SourceEditor, inputs are now defined globally in the inputs section of the config file.
Each source can reference one or more inputs by their name in the inputs attribute.
2026-01-03 19:09:39 +01:00
euzu eb087825d5 Inputs in source.yml 2026-01-03 18:06:25 +01:00
euzu df2a4e4a72 - Fix for telegram send error
- Fix for series strm generation
- Input disabled is now disabled and can't be forced through cli to be enabled
2026-01-02 13:18:08 +01:00
euzu 25d3454932 Wrong Category Id after update fix 2025-12-30 15:06:16 +01:00
euzu b3a7e6af7c added some events for playlist update,
fixed explorer view image display for channels
2025-12-30 12:31:55 +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