chore: Add readme and one example for now.

This commit is contained in:
redxef 2024-10-27 19:49:14 +01:00
parent d74f9a8074
commit e1f6bd5117
Signed by: redxef
GPG key ID: 7DAC3AA211CBD921
3 changed files with 94 additions and 0 deletions

85
README.md Normal file
View file

@ -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 '<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.

View file

@ -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'))))"
}

4
examples/index.md Normal file
View file

@ -0,0 +1,4 @@
# Examples
* [Favourite Pop](a1d02dee-f1da-4472-bee3-f568c15c8360.json): A Playlist
containing all favourite items of the genre pop.