Commit Graph
145 Commits
Author SHA1 Message Date
euzuandGitHub a15c966190 Feature/some fixes (#544)
* Season Order fix

* fixed episode id problem

* fixed path prefix for user bouquet editor

* fixed css styling for mobile size

* fixed disabled input config

* cargo clippy fixes
2026-01-28 11:11:08 +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 9a6b7e574b epg fix (#537)
New Features
Aliases can now be individually enabled or disabled to manage active sources.

Bug Fixes
Improved channel identification accuracy in XMLTV outputs.

Style
Disabled aliases display with strikethrough text for better visibility.
2026-01-26 17:37:01 +01:00
euzuandGitHub a407f209a8 Messaging templates (#534)
Messaging templates
2026-01-25 12:41:18 +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 3fade46e04 Added user_agent to trakt 2026-01-12 09:01:35 +01:00
euzu 5bd88a3322 - **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:53:21 +01:00
euzu e8ee01271a - **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:42:59 +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 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 78ee20bfc3 used mapping files are now logged 2026-01-04 12:43:02 +01:00
euzu a30151a6f0 Added discord notifications 2026-01-03 21:38:16 +01:00
euzu 2eafb4b438 Added discord notifications 2026-01-03 21:30:54 +01:00
euzu 3fa39f954a Added discord notifications 2026-01-03 21:11:20 +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 02346cd733 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 18:32:25 +01:00
euzu eb087825d5 Inputs in source.yml 2026-01-03 18:06:25 +01:00
euzu dfab797c65 refactoring for favourites
- implemented favourites config to target config
- added add_favroutie() function to mapping
2025-12-29 16:08:27 +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 53723d3015 Merge commit '7bb8a0c4f1a65a542bd3fae716fcb4236461072a' into feature/provider_api 2025-12-19 18:30:07 +01:00
euzu ca3ae3e81b integrated local series into playlist 2025-12-19 16:27:06 +01:00
euzu aa4463b632 fetching tmdb data for series 2025-12-19 15:57:46 +01:00
knylbyte 61f9071603 feat: added client_info to fetch user information 2025-12-17 18:12:17 +01:00
knylbyte 7b2dd5be14 feat: added support for panel api 2025-12-16 23:03:24 +01:00
euzu 37985c0324 Integrate local movie file into playlist 2025-12-16 16:43:11 +01:00
euzu 96899cf5f9 Local media library 2025-12-15 21:55:48 +01:00
euzu 2946cb1dd5 Local media library 2025-12-15 21:26:12 +01:00
euzu 23d6c90c1d Local media library 2025-12-15 21:10:45 +01:00
euzu 89cea7a7c2 Local media library 2025-12-15 19:26:31 +01:00
euzu 2f32f1ece1 Local media library 2025-12-15 17:54:19 +01:00
euzu ba200135ce Merge branch 'feature/source_editor' into feature/local_media 2025-12-13 15:34:51 +01:00
euzu 60e74f38a9 force reconnect removed 2025-12-13 13:55:35 +01:00
euzu 3e965c0bb7 Merge branch 'feature/source_editor' into feature/local_media 2025-12-12 21:31:28 +01:00
euzu e6db1a3c66 Added kick duration for web_ui kick 2025-12-12 20:32:46 +01:00
euzu f3f7d0136d Merge remote-tracking branch 'deadc1de/feature/local-vod-module' into feature/local_media 2025-12-10 09:18:53 +01:00
moeandClaude Sonnet 4.5 d481303e57 feat: Add Local VOD (Video-on-Demand) Module
Implements comprehensive local video file scanning and metadata management:

Core Features:
- Recursive directory scanning with tokio::fs async operations
- Automatic classification (Movies vs TV Series) using regex patterns
- Multi-source metadata resolution (NFO → TMDB → filename parsing)
- JSON-based metadata storage with UUID tracking
- Virtual ID management (incremental, stable across scans)
- TMDB API integration with rate limiting (250ms default)
- NFO file reading/writing (Kodi/Jellyfin/Emby/Plex compatible)
- Incremental scanning (only processes changed files)
- Orphaned entry cleanup

Components Added:
- backend/src/vod/scanner.rs - Async file scanner
- backend/src/vod/classifier.rs - Movie/Series classification
- backend/src/vod/metadata.rs - Metadata models
- backend/src/vod/nfo_reader.rs - NFO parser
- backend/src/vod/tmdb_client.rs - TMDB API client
- backend/src/vod/metadata_storage.rs - JSON storage layer
- backend/src/vod/metadata_resolver.rs - Metadata orchestration
- backend/src/vod/processor.rs - Main processing pipeline

API Endpoints:
- POST /api/v1/vod/scan - Trigger VOD scan
- GET /api/v1/vod/status - Get VOD status
- GET /api/v1/vod/item/:id - Get VOD item by virtual ID

CLI Integration:
- --scan-vod - Scan VOD directories
- --force-vod-rescan - Force full rescan

Configuration:
- config/vod.yml.example - Example configuration
- New InputType::LocalVod in source.yml

Technical Details:
- Uses OnceLock for regex caching (no lazy_static needed)
- Arc-swap pattern for lock-free config updates
- Comprehensive unit tests
- ~3,200 lines of new code
- Zero new dependencies added

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-10 07:51:06 +01:00
euzu b1903096b7 Worked on Filter Input and Filter editor 2025-12-04 16:28:03 +01:00
euzu b04d3183c4 Source editor features 2025-12-03 12:15:00 +01:00
moe 3680081d0f Fix compilation errors in form implementations
input_form.rs:
- Remove HashMap from generate_form_reducer macro (not supported)
- Add separate use_state for headers management
- Load headers from input in use_effect_with
- Update KeyValueEditor to use headers_state instead of form state
- Set headers in handle_apply_input callback

trakt.rs:
- Add Display trait for TraktContentType enum
- Add FromStr trait for TraktContentType enum
- Enables dropdown functionality for content type selection

These fixes resolve compilation errors related to:
- Unsupported HashMap type in form reducer macro
- Missing trait implementations for enum conversions
2025-12-01 14:16:04 +01:00
euzu 62694f3a3c - CPU usage
- disable cloudflare header
2025-11-29 19:20:27 +01:00
euzu bdb838e2b0 - CPU usage
- disable cloudfare header
2025-11-29 19:01:42 +01:00