From e1f6bd51176ea605c86d5c96a36d637959778842 Mon Sep 17 00:00:00 2001 From: redxef Date: Sun, 27 Oct 2024 19:49:14 +0100 Subject: [PATCH] chore: Add readme and one example for now. --- README.md | 85 +++++++++++++++++++ .../a1d02dee-f1da-4472-bee3-f568c15c8360.json | 5 ++ examples/index.md | 4 + 3 files changed, 94 insertions(+) create mode 100644 README.md create mode 100644 examples/a1d02dee-f1da-4472-bee3-f568c15c8360.json create mode 100644 examples/index.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..ce6afbc --- /dev/null +++ b/README.md @@ -0,0 +1,85 @@ +# Jellyfin SmartPlaylist Plugin + +Smart playlists with lisp filter engine. + +## How to use + +After [installing](#installation) the plugin and restarting Jellyfin +create a file in `config/data/smartplaylist` like this: + +``` +$ echo '{}' > config/data/smartplaylist/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](/examples/index.md) to see more +examples. + +Example file +```json +{ + "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 '' | 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. diff --git a/examples/a1d02dee-f1da-4472-bee3-f568c15c8360.json b/examples/a1d02dee-f1da-4472-bee3-f568c15c8360.json new file mode 100644 index 0000000..04397da --- /dev/null +++ b/examples/a1d02dee-f1da-4472-bee3-f568c15c8360.json @@ -0,0 +1,5 @@ +{ + "Id": "a1d02dee-f1da-4472-bee3-f568c15c8360", + "Name": "Favourite Pop", + "Program": "(and (invoke item 'IsFavoriteOrLiked' (user)) (find 'Pop' (car (getitems item 'Genres'))))" +} diff --git a/examples/index.md b/examples/index.md new file mode 100644 index 0000000..ab853ca --- /dev/null +++ b/examples/index.md @@ -0,0 +1,4 @@ +# Examples + +* [Favourite Pop](a1d02dee-f1da-4472-bee3-f568c15c8360.json): A Playlist + containing all favourite items of the genre pop.