Skip to content

Releases: Tastyep/Pi-OpenCast

2.0.0

15 Jan 09:03
Compare
Choose a tag to compare

New interface

With this new release, Opencast usability is taken to a new level by addressing its main weakness: The web application.
A lot of efforts have been put for making the web application more functional, by improving both its UI and UX.
The single page application now presents the following views:

  • The home page
    Shows the state of the player and a queue of the coming up media. It displays interface elements to interact with the player, just as you would expect from any media player.
  • The library
    Shows the media categorized by playlists, artists and albums.

Features

  • Artist model
    Artist models are auto-generated from the metadata extracted from all medias.
    On the web interface, artists can be queued, played, shuffled or used as a filtering criteria.
  • Album model
    Just like artists, albums are automatically generated. The same set of functionalities are available for both models.
    The thumbnail is fetched through Deezer's API or falls back to the one of the media.
  • New interface
    There is still a lot to describe here: re-orderable and virtualized playlists, downloading progress, a player seeking & control bar ...
  • Notification system
    Backend errors finally make it to the user interface. Represented as toast messages, they contain information related to both sync (web request/response) and async (downloading events) operations.
  • List suggestions
    Provide basic suggestions from your library to populate your lists

Improvements

  • Serialization improvement
    2x faster models serialization! Serialization is OpenCast's bottleneck when it comes to performance. While it can still be improved by replacing marshmallow with a similar solution, it can already easily handle ~1000 items on a raspberry-pi 3
  • New video attributes
    A media now has a duration, last play time and cumulated play time. This allows for showing lists of favorite and last media played.
  • Web socket unification
    Unify web sockets to keep only one per client.
  • Port configuration
    The ports on which the backend and frontend run are now both configurable though their config file and integrated in the tools providing monitoring services.

Bug fixes

  • Install opencast as a user service (systemd).
    This fixes issues related to starting the service before others and/or not having the correct access rights.

1.5.0

22 Jul 11:10
1ed0713
Compare
Choose a tag to compare

User Defined Playlists

Playlists can finally be created and their content updated from the front-end interface.
Also, the interface is now using the WebSockets provided by the server, which means that all data is updated in real-time for all connected devices.

Features

  • User Playlists
    It is now possible for the user to manage multiple playlists and drag and drop tracks from one to the other.
    The list of videos with thumbnails will now display the playlist with the currently playing track.
  • Real-Time Updates
    The front-end interface doesn't pull the back-end at regular intervals anymore, but instead uses WebSockets to update its internal state.
    This also means that all connected devices will receive and apply the updates simultaneously.

Improvements

  • Display the playing track
    The currently playing track is now auto-focused and has a play/pause button on it.
  • Enum serialization
    All data sent over WebSockets are now correctly serialized.
  • Configuration
    • It is now possible to provide album as a value to the loop_last configuration entry.
  • Interface styling
    I'm still bad at this, but the interface improved a bit I think :)
  • 96% of coverage

Bug fixes

  • Fix a weird stream parsing error where some data attributes are not always present.
  • Fix many interface issues occurring when the data to be displayed was not yet available.

1.4.5

31 Mar 11:39
f427d22
Compare
Choose a tag to compare

Maintenance update

Minor release with dependencies updates (youtube-dl v2021.3.31)

Improvements

  • Define log.api_trafic config entry (False by default)

Bug Fixes

  • Streaming queuing order
    Queue the video right next to the one playing if required to stream

1.4.4

08 Dec 16:00
9b92f07
Compare
Choose a tag to compare

Bug fixes and config improvements

Minor release with important bug fixes

Improvements

  • Dynaconf
    • Replace home made configuration with dynaconf.
    • Add validators for all configuration entries.
  • Album replay
    • Setting the 'loop_last' config entry to "album" now allows to loop all tracks from an album instead of only looping on the last one.
  • Template files
    • Template files such as the config and the systemd service file are now in the template directory and don't generate a repo change anymore when generated.

Bug fixes

  • Database thread-safety
    • The database is now thread-safe, JSONDecoding errors resulting from a broken database file won't be experienced anymore.
  • Fix webapp build
    • Build the production web app at setup time instead of versioning it. Doing otherwise resulted in the application malfunctioning.

1.4.3

29 Nov 16:54
Compare
Choose a tag to compare

APISpec + SwaggerUI

Minor release containing improvements for contributors.

Features

  • SwaggerUI
    Move openapi documentation into the code next to request handlers.
    Serve a SwaggerUI page at /api/docs.

Improvements

  • Request validation middleware
    • Use marshmallow schemas to define and validate request content.
  • API documentation
    • Improve the documentation section with details on how to serve and access the API pages.
  • 97% of coverage

1.4.2

18 Nov 10:53
0ee2591
Compare
Choose a tag to compare

Welcome back youtube-dl

Youtube-dl is back, you can read the full story here.

Features

  • Playlists
    Playlist support is now extended to all websites. the process of extracting URLs takes a bit longer (few seconds) but it's well worth it.

Improvements

  • Auto install npm/node dependencies
    • The setup script will now try to set up npm and node using nvm.
    • Ensures that the systemd service manager will succeed to start our service. It could fail before because npm would not be in the PATH.
  • Logging
    • Logging has been improved so that info logging is sufficient to understand what is happening. Debug logging is still the default.
    • Logging while testing has been disabled, but can be enabled back by using the environment (OPENCAST_LOG_LEVEL=DEBUG ...).
    • Add debug logs for monitoring API requests and responses.
  • Subtitle toggling
    • It is now possible to toggle subtitle support (downloading/extracting) by modifying the subtitle.enabled config entry.
  • 96% of coverage

Bug fixes

  • Fix startup crash when purging videos without a location.

1.4.1

01 Nov 11:52
Compare
Choose a tag to compare

Stream support and takedown of yt-dl

Sadly youtube-dl has been taken down by the RIAA due to tests having URLs pointing to licensed videos.
After digging around I learnt about youtube-dlc which aims at maintaining more regularly the application which was starting to lag behind the numerous issues and pull requests.

Features

  • Streams
    Streaming sources such as youtube, twitch, and others are now supported

Improvements

  • yt-dl -> yt-dlc

1.4.0

18 Oct 12:09
63c4434
Compare
Choose a tag to compare

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.
  • 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.

1.3.0

12 Sep 12:57
0d5b2ca
Compare
Choose a tag to compare

New interface, Github workflows, Documentation ...

This release contains many improvements that will help maintain the project and ensure its stability.

Features

  • New interface !
    While my skills at front-end designing are mediocre at best, the project now provides a visual representation of the player's state as well as videos queued for playing.
  • Switch from Bottle to aioHTTP (also tried flask)
    • Fulfill server-sent events requirements for asynchronicity.
    • Respond to all monitoring requests.
    • Add video monitoring.
    • Serialize domain models into JSON .
  • Automatic documentation generation & coverage
    • Provide module documentation.
    • Fix use of autosummary.
    • Provide an OpenAPI v3 spec file.
    • Use sphinx plugin to render the spec files into the documentation.
    • Automatic deployment and coverage reports (GithubActions).

Improvements

  • Migrate from Travis to GH actions
    • Sanitize the code on pushes.
    • Regen documentation and coverage when master or develop are updated.
  • Dependabot
    • Ensure up to date dependencies using dependabot.
  • Improve tooling
    • Add lint subcommand to lint the source code (used in the Sanitize workflow).
    • Add format subcommand to format the source code (used in the Sanitize workflow).
    • Improve the CLI parser to parse rules from a script's header.
  • Remove apt calls
    • Only check that system dependencies are installed instead of using apt to install them.

Bug fixes

  • All warnings and errors reported on shell scripts (shellcheck, shfmt)
  • Deadlocks due to missing event response to commands.
  • The setup script can't be executed as root anymore.

1.2.0

05 Jun 18:50
49a2e39
Compare
Choose a tag to compare

Goodbye omxplayer

It has been fun using Omxplayer, but as VLC now supports hardware decoding for x264 it is time to switch.
Also, I was happy to learn that HEVC support is on its way to raspberry pi 4.

Features

  • Replace omxplayer by vlc
  • Make the project compatible with all platforms (not yet tested)
  • Add Stream data to the video model
  • Add subtitle download functionality to the media downloader.
  • Remove FFmpeg dependency as subtitles are not extracted anymore

Improvements

  • Better code coverage
  • Faster video availability (no more sub extracting)

Bug fixes

  • Fix sound control
  • Fix file descriptor leakage (omxplayer-wrapper removed)
  • Fix controls not working when dbus connection failed