Update readme
This commit is contained in:
parent
89a911b9c4
commit
89c41842a7
129
README.md
129
README.md
@ -1,6 +1,10 @@
|
||||
# Jellyfin SRF Play Plugin
|
||||
|
||||
A Jellyfin plugin for accessing SRF Play (Swiss Radio and Television) video-on-demand content.
|
||||
A Jellyfin plugin for accessing SRF Play (Swiss Radio and Television) video-on-demand content and live sports streaming.
|
||||
|
||||
## Status
|
||||
|
||||
**Beta/Alpha** - This plugin has been tested on two Jellyfin instances and is working. Some clients may experience issues with hardware decoding, which appears to be client-specific behavior.
|
||||
|
||||
## Features
|
||||
|
||||
@ -25,95 +29,13 @@ The main channel interface showing the content folders.
|
||||
|
||||
Video playback with HLS streaming support and quality selection.
|
||||
|
||||
## Project Status
|
||||
## Testing
|
||||
|
||||
### ✅ Completed Components
|
||||
The plugin includes comprehensive testing:
|
||||
|
||||
#### Phase 1: Project Setup
|
||||
- ✅ Renamed from Template to SRFPlay
|
||||
- ✅ Updated all namespaces and identifiers
|
||||
- ✅ Configured plugin metadata (ID, name)
|
||||
|
||||
#### Phase 2: Core API Infrastructure
|
||||
- ✅ API Models (MediaComposition, Chapter, Resource, Show, Episode)
|
||||
- ✅ SRF API Client with HTTP client wrapper
|
||||
- ✅ JSON deserialization support
|
||||
- ✅ Error handling and logging
|
||||
|
||||
#### Phase 3: Configuration
|
||||
- ✅ Business unit selection (SRF/RTS/RSI/RTR/SWI)
|
||||
- ✅ Quality preferences (Auto/SD/HD)
|
||||
- ✅ Content refresh intervals
|
||||
- ✅ Expiration check settings
|
||||
- ✅ Cache duration configuration
|
||||
- ✅ HTML configuration page
|
||||
|
||||
#### Phase 4: Services
|
||||
- ✅ Stream URL Resolver
|
||||
- HLS stream selection
|
||||
- Quality-based filtering
|
||||
- DRM content filtering
|
||||
- Content expiration checking
|
||||
- Akamai token authentication
|
||||
- Upcoming livestream detection
|
||||
- ✅ Metadata Cache Service
|
||||
- Efficient caching with configurable duration
|
||||
- Thread-safe with ReaderWriterLockSlim
|
||||
- IDisposable implementation
|
||||
- Dynamic TTL for scheduled livestreams
|
||||
- ✅ Content Expiration Service
|
||||
- Automatic expiration checking
|
||||
- Library cleanup of expired content
|
||||
- Statistics and monitoring
|
||||
- ✅ Content Refresh Service
|
||||
- Latest and trending content discovery
|
||||
- Scheduled sports livestreams
|
||||
- Automatic cache population
|
||||
- Recommendations system
|
||||
|
||||
#### Phase 5: Content Providers
|
||||
- ✅ Series Provider (for show metadata)
|
||||
- ✅ Episode Provider (for episode metadata)
|
||||
- ✅ Image Provider (for thumbnails and artwork)
|
||||
- ✅ Media Provider (for playback URLs and HLS streams)
|
||||
|
||||
#### Phase 6: Scheduled Tasks
|
||||
- ✅ Content Refresh Task
|
||||
- Periodic discovery of new content
|
||||
- Configurable refresh intervals
|
||||
- ✅ Expiration Check Task
|
||||
- Automatic cleanup of expired content
|
||||
- Configurable check intervals
|
||||
|
||||
#### Phase 7: Dependency Injection & Integration
|
||||
- ✅ Service registration (ServiceRegistrator)
|
||||
- ✅ Jellyfin provider interfaces implementation
|
||||
- ✅ Plugin initialization and configuration
|
||||
|
||||
#### Phase 8: Live Sports Streaming
|
||||
- ✅ Play v3 API integration for scheduled livestreams
|
||||
- ✅ Sports events folder in channel
|
||||
- ✅ Upcoming event detection and display
|
||||
- ✅ Akamai token authentication for streams
|
||||
- ✅ Dynamic cache refresh for live events
|
||||
- ✅ Event scheduling with ValidFrom/ValidTo handling
|
||||
- ✅ Automatic stream URL resolution when events go live
|
||||
|
||||
### ✅ Build Status
|
||||
**Successfully compiling!** All code analysis warnings resolved.
|
||||
|
||||
### 🧪 Testing Status
|
||||
- [x] Unit tests (xUnit framework)
|
||||
- StreamUrlResolver tests
|
||||
- MetadataCache tests
|
||||
- More to be added
|
||||
- [x] API spec validation tests (nightly automated runs)
|
||||
- All business units (SRF, RTS, RSI, RTR, SWI)
|
||||
- Response schema validation
|
||||
- Performance monitoring
|
||||
- [ ] Integration testing with Jellyfin instance
|
||||
- [ ] End-to-end playback testing for VOD content
|
||||
- [ ] Live sports streaming validation
|
||||
- **Unit tests** (xUnit framework) for core services
|
||||
- **API spec validation tests** for all business units (SRF, RTS, RSI, RTR, SWI)
|
||||
- **Integration testing** - Tested on multiple Jellyfin instances with VOD and live sports streaming
|
||||
|
||||
**Run tests:**
|
||||
```bash
|
||||
@ -132,13 +54,6 @@ dotnet test --collect:"XPlat Code Coverage"
|
||||
|
||||
See [Test Documentation](Jellyfin.Plugin.SRFPlay.Tests/README.md) for more details.
|
||||
|
||||
### 📝 Next Steps
|
||||
1. Test live sports streaming when events are scheduled
|
||||
2. Verify Akamai token authentication
|
||||
3. Test with different business units (RTS, RSI, RTR)
|
||||
4. Add more unit tests for remaining services
|
||||
5. Performance optimization if needed
|
||||
|
||||
## API Information
|
||||
|
||||
**Base URL:** `https://il.srgssr.ch/integrationlayer/2.0/`
|
||||
@ -297,9 +212,7 @@ Currently focused on SRF but easily extensible.
|
||||
|
||||
## Development
|
||||
|
||||
### Current Status
|
||||
|
||||
All core functionality is implemented and compiling successfully! The plugin includes:
|
||||
The plugin includes:
|
||||
- Complete API integration with SRF Play (Integration Layer v2.0 and Play v3)
|
||||
- **Live sports streaming** with scheduled event detection
|
||||
- Channel with Latest, Trending, and Live Sports folders
|
||||
@ -310,25 +223,15 @@ All core functionality is implemented and compiling successfully! The plugin inc
|
||||
- Scheduled tasks for content refresh
|
||||
- Smart caching with dynamic TTL for upcoming livestreams
|
||||
|
||||
### Testing
|
||||
### Known Issues
|
||||
|
||||
To test the plugin:
|
||||
|
||||
1. Build the plugin: `dotnet build`
|
||||
2. Copy `bin/Debug/net8.0/Jellyfin.Plugin.SRFPlay.dll` to your Jellyfin plugins directory
|
||||
3. Restart Jellyfin
|
||||
4. Configure the plugin in Dashboard → Plugins → SRF Play
|
||||
5. Add a library with the SRF Play content provider
|
||||
|
||||
### Known Limitations
|
||||
|
||||
- This is a first version that has not been tested with a live Jellyfin instance yet
|
||||
- Some edge cases may need handling
|
||||
- Performance optimization may be needed for large content catalogs
|
||||
- Some clients may experience issues with hardware decoding (appears to be client-specific)
|
||||
- Some edge cases may need additional handling
|
||||
- Performance optimization may be needed for very large content catalogs
|
||||
|
||||
### Contributing
|
||||
|
||||
This plugin is in active development. Contributions welcome!
|
||||
Contributions welcome!
|
||||
|
||||
## License
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user