1.4.0
Database, Playlists, and WebSockets
While the release contains nice backend features, as I don't have the skills nor time to update the interface, no integration of these has been done.
This is a problem that I can't address alone, but hopefully, help should come soon.
Features
- WebSockets
- Player and Video events can be listened to by subscribing to the dedicated WebSocket (/player/events and /videos/events)
This will allow changing the front end strategy from pulling at regular interval to listening to server updates.
- Player and Video events can be listened to by subscribing to the dedicated WebSocket (/player/events and /videos/events)
- Database
- Switch from the in-memory database to a JSON database thanks to TinyDB.
- Use marshmallow and dacite to validate serialize and deserialize dataclasses to dict objects.
- Make UUIDs deterministic between restarts.
- Rework library loading to only purge videos from the database if non-existant on disk.
- Playlist model
- Define the playlist model.
- Expose CRUD operations through /playlists.
- Expose /playlists/id/videos.
Improvements
- State change representation in events
- Related to the WebSocket addition, events now consistently carry the state change applied to models.
- API content validation
- Make use of marshmallow schemas to validate user input to return validation errors to the user.
- Expose deps sub command
- Allow the user to locally update the project dependencies by running ./OpenCast.sh deps update.
- Code coverage
- Coverage is now up to 92%, some tests are still missing for few infrastructural components, but applicative and domain logic is fully covered.
- Update dependencies
- Replace unmaintained speccy linter with spectral.
Bug fixes
- Fix media parsing errors (Media parse skipped) preventing some videos to be played.
- Fix remaining CORS issues.
- Fix inconsistent queueing order when requesting to stream a playlist.