-
Notifications
You must be signed in to change notification settings - Fork 0
Installation
This plugin is not in Jellyfin's built-in catalogue. It is installed by adding Flowfin's own plugin repository to the server once.
-
Open Dashboard > Plugins > Repositories and add this address:
https://flowfin.dev/manifest.json -
Open Dashboard > Plugins > Catalog, find Playback Statistics, and install it.
-
Restart Jellyfin.
One manifest carries every Flowfin plugin, so a server that already has the address for one of them does not add it again.
The server does the checking. It hashes the archive it fetched and refuses the install where the hash is not the checksum the catalogue carries, so an install that completed is one where the two agreed at the server.
Two server lines are supported and nothing else is. One archive is built per line, and the server is offered the one matching the version it reports.
| server line | framework | version stream starts at | released so far |
|---|---|---|---|
| Jellyfin 10.11 | .NET 9 | 0.1.0.0 |
0.1.0.0 |
| Jellyfin 12.0 | .NET 10 | 1.0.0.0 |
nothing yet |
The leading number says which server line a release is for and not how
finished the plugin is. 1.0.0.0 will be the same interface 0.1.0.0
carries, built from the same source. Reading one as a mature release and the
other as a provisional one is the mistake that numbering invites and it is
wrong.
A 12.0 server finds nothing to install under this entry until the 12.0 line publishes. Support matrix and releases carries the frameworks, the floors and how to verify a downloaded asset.
Install the newer version from the catalogue the same way and restart. The settings file and the store are not touched by an upgrade: the plugin moves an older settings file forward to the shape the new build reads on the start that finds it, and says on the server log that it did.
An installation whose stored settings hold a value the new build refuses starts with the default for that field and names the field above the form on the settings page. Nothing else is changed and nothing is deleted. Troubleshooting has that sentence and what to do about it.
Two places on the server hold something this plugin wrote, and removing the plugin deletes both:
-
<server data directory>/plugins/Jellyfin.Plugin.Stats- the plugin's own data folder, holding one file,plays.db, which is the store. -
<server data directory>/plugins/configurations/Jellyfin.Plugin.Stats.xml- the settings saved from the settings page.
The server itself deletes only the folder the plugin was installed into, which holds the assembly and no recorded playback, so the plugin deletes those two as it is being removed.
Two cases are worth knowing about. A deletion that fails is written to the
server log with the path in the message, and the path is then still there to be
removed by hand: the hook runs while the server is uninstalling, and a file held
open by something else cannot be removed at that moment. And where the plugin
was installed by hand into a folder named Jellyfin.Plugin.Stats, the data
folder and the installation folder are the same directory; deleting it from
inside the running plugin would take the assembly out from under the uninstall
in progress, so the server deletes that folder itself immediately afterwards.
The data still goes, and the log says which of the two happened.
The server data directory is the one holding config, data, log and
plugins. Where it is depends on how the server was installed, and the server's
own dashboard reports it under the paths it lists.
The full account, including what the retention sweep removes while the plugin is
installed, is in
docs/plugin-data.md.
Getting started
What it keeps
Releases