No description
Find a file
2024-11-07 22:20:19 +01:00
ci ci: add initial pipeline for releasing. 2024-10-30 03:22:39 +01:00
examples chore: Add readme and one example for now. 2024-10-27 19:49:14 +01:00
Jellyfin.Plugin.SmartPlaylist fix: evaluation of object method invocation. 2024-11-07 22:20:19 +01:00
Test fix: always pull newest jellyfin version. 2024-10-27 20:07:25 +01:00
Tests fix!: simplify parser and executor, streamline tests. 2024-11-07 00:48:56 +01:00
.gitignore ci: add build script. 2024-10-28 01:44:23 +01:00
LICENSE chore: add license. 2024-10-27 19:58:32 +01:00
README.md docs: add instructions to use the plugin catalog. 2024-10-30 03:22:19 +01:00
release.sh ci: change artifact to zipfile. 2024-10-30 03:14:13 +01:00

Jellyfin SmartPlaylist Plugin

Smart playlists with Lisp filter engine.

How to use

After installing the plugin and restarting Jellyfin create a file in config/data/smartplaylists like this:

$ echo '{}' > config/data/smartplaylists/a.json

Afterwards run the Task (re)generate Smart Playlists, this will rename the json file and populate it with some default values. You can now adjust the file to your liking. Go here to see more examples.

Example file

{
  "Id": "a1d02dee-f1da-4472-bee3-f568c15c8360",
  "Playlists": [
    {
      "PlaylistId": "24f12e1e-3278-d6d6-0ca4-066e93296c95",
      "UserId": "6eec632a-ff0d-4d09-aad0-bf9e90b14bc6"
    }
  ],
  "Name": "a1d02dee-f1da-4472-bee3-f568c15c8360",
  "Program": "(begin (invoke item 'IsFavoriteOrLiked' (user)))",
  "Filename": "/config/data/smartplaylists/a1d02dee-f1da-4472-bee3-f568c15c8360.json",
  "Enabled": true
}

Id

Arbitrary Id assigned to this playlist, can usually be left alone. The filename is derived from this.

Playlists

A list of Playlist/User mappings. By default all users get an entry.

The ids must have the dashes in them as of now. To convert a id from without dashes to the canonical form run this command:

echo '<your id here>' | python3 -c 'import uuid; import sys; print(uuid.UUID(sys.stdin.read().strip()))'

To get your user id navigate to your user profile and copy the part after userId in the address bar.

PlaylistId

The id of the playlist that should be managed, must be owned by the corresponding user.

UserId

The user associated with this playlist.

Name

The name of the generated playlists, this is just a default value. If the user changes the name of their playlist the plugin will work as usual

Program

A lisp program to decide on a per item basis if it should be included in the playlist, return nil to not include items, return t to include them.

Filename

The path to this file.

Enabled

Enable this playlist, currently ignored.

Installation

Add the plugin repository to Jellyfin: https://gitea.redxef.at/redxef/jellyfin-smart-playlist/raw/branch/manifest/manifest.json

Go to Dashboard>Catalog>(Gear)>(Plus) and paste the provided link into the field labeled Repository URL, give the plugin a descriptive name too.