79 lines
3.4 KiB
YAML
79 lines
3.4 KiB
YAML
name: Smart Playlist
|
|
guid: dd2326e3-4d3e-4bfc-80e6-28502c1131df
|
|
version: 0.4.0.0
|
|
targetAbi: 10.10.3.0
|
|
framework: net8.0
|
|
owner: redxef
|
|
overview: Smart playlists with Lisp filter engine.
|
|
description: |
|
|
Create smart playlists with a Lisp filter engine.
|
|
|
|
The same playlist definition can be used for multiple users.
|
|
category: "General"
|
|
artifacts:
|
|
- jellyfin-smart-playlist.dll
|
|
- YamlDotNet.dll
|
|
changelog: |
|
|
## v0.4.0.0
|
|
- Add a basic UI to configure the playlists.
|
|
- It's now possible to print log messages to the jellyfin log by calling `logd`, `logi`, `logw` or `loge`
|
|
for the respective levels `debug`, `info`, `warning` or `error`.
|
|
- Allow calling generic methods via `(invoke-generic object methodname args list-of-types)`.
|
|
- Add quoting via single quote: `'`.
|
|
- Add special case for `(quote <form>)` to be rendered as `'<form>`.
|
|
- It is now possible to include comments in the source via a semicolon (`;`).
|
|
- Respect the `Enabled` flag and only process the playlists that are enabled.
|
|
- New methods have been added: `rand`, `shuf`.
|
|
- Add `find-artist`, `get-name` and `find-parent` default definitions.
|
|
- Update YamlDotNet to v16.2.1.
|
|
|
|
**Breaking changes**:
|
|
- Rename global environment variables to be enclosed by `*`.
|
|
|
|
**Fixes**:
|
|
- The initialization of the executor now contains the same default definitions for the SortProgram and the normal Program.
|
|
- The progress report now considers the SmartPlaylists and not the individual playlists per user.
|
|
- It is now possible to pass builtins as arguments. Previously to get `(qsort > (list 1 2 3))` one had to write
|
|
something like this: `(qsort (lambda (a b) (> a b)) (list 1 2 3))`.
|
|
- A program no longer has to be a list, `t` is a valid program.
|
|
- Fix list parsing in cases where a space was before the closing parenthesis.
|
|
|
|
|
|
## v0.3.0.0
|
|
- Add a second program (`SortProgram`) which is run after the filtering, this
|
|
program should return the list of items, but in the order in which they should appear in
|
|
the playlist. The default is `(begin items)` which returns the list as is.
|
|
- Extend builtin lisp definitions: add `qsort` and string comparison methods
|
|
- Extend default program definitions: add `all-genres` and `any-genres` to quickly specify a list of genres which to include (or excluding when negating)
|
|
- Update Jellyfin to v 10.10.3
|
|
|
|
**Fixes**:
|
|
- The progress report now correctly gives a percentage in the range [0, 100].
|
|
|
|
## v0.2.2.0
|
|
- Update Jellyfin to v 10.10.2
|
|
|
|
## v0.2.1.0
|
|
- Make default program configuration a textarea in the settings page
|
|
- Add convinience definitions: `is-type`, `name-contains`
|
|
- Update YamlDotNet to v 16.2.0
|
|
|
|
**Fixes**:
|
|
- The default program was malformed, a closing bracket was at the wrong position
|
|
- The `haskeys` function could only be called on Objects
|
|
|
|
## v0.2.0.0
|
|
- Switch to yaml loading, old json files are still accepted
|
|
- Rework lisp interpreter to be more conventional
|
|
- Use arbitrary strings as ids for playlists
|
|
- Add configuration page with some default definitions for
|
|
the filter expressions.
|
|
|
|
**Breaking Changes**:
|
|
- The lisp interpreter will now only detect strings in double quotes (`"`).
|
|
- The interpreter will also not allow specifying lists without quoting them.
|
|
`(1 2 3)` ... used to work but will no longer, replace by either specifying
|
|
the list as `(list 1 2 3)` or `(quote (1 2 3))`.
|
|
|
|
## v0.1.1.0
|
|
- Initial Alpha release.
|