No description
Find a file
2024-10-27 20:01:16 +01:00
examples chore: Add readme and one example for now. 2024-10-27 19:49:14 +01:00
Jellyfin.Plugin.SmartPlaylist chore: remove unused dep. 2024-10-27 20:01:16 +01:00
Test Implement object type, fix parsing bug regarding strings. 2024-06-29 18:29:40 +02:00
Tests feat: add default implementations of procedures. 2024-10-27 00:54:40 +02:00
.gitignore Implement object type, fix parsing bug regarding strings. 2024-06-29 18:29:40 +02:00
LICENSE chore: add license. 2024-10-27 19:58:32 +01:00
README.md fix: readme links. 2024-10-27 19:51:26 +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

Download the .dll in the releases section and place it in your plugin directory.