133 lines
5.6 KiB
Markdown
133 lines
5.6 KiB
Markdown
# Whats up in Jellyplist v0.1.9?
|
||
## ⚠️ BREAKING CHANGE: docker-compose.yml
|
||
>[!WARNING]
|
||
>In this release I´ve done some rework so now the setup is a bit easier, because you don´t have to spin up the -worker -beat container, these are now all in the default container and managed via supervisor. This means you have to update your `docker-compose.yml` when updating!
|
||
|
||
So now your compose file should look more or less like this
|
||
|
||
```yaml
|
||
services:
|
||
redis:
|
||
image: redis:7-alpine
|
||
container_name: redis
|
||
volumes:
|
||
- redis_data:/data
|
||
networks:
|
||
- jellyplist-network
|
||
postgres:
|
||
container_name: postgres-jellyplist
|
||
image: postgres:17.2
|
||
environment:
|
||
POSTGRES_USER: ${POSTGRES_USER}
|
||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
||
PGDATA: /data/postgres
|
||
volumes:
|
||
- /jellyplist_pgdata/postgres:/data/postgres
|
||
networks:
|
||
- jellyplist-network
|
||
restart: unless-stopped
|
||
|
||
jellyplist:
|
||
container_name: jellyplist
|
||
image: ${IMAGE}
|
||
depends_on:
|
||
- postgres
|
||
- redis
|
||
ports:
|
||
- "5055:5055"
|
||
networks:
|
||
- jellyplist-network
|
||
volumes:
|
||
- /jellyplist/cookies.txt:/jellyplist/cookies.txt
|
||
- /jellyplist/open.spotify.com_cookies.txt:/jellyplist/spotify-cookie.txt
|
||
- ${MUSIC_STORAGE_BASE_PATH}:${MUSIC_STORAGE_BASE_PATH}
|
||
- /my/super/cool/storage/jellyplist/settings.yaml:/jellyplist/settings.yaml
|
||
env_file:
|
||
- .env
|
||
|
||
networks:
|
||
jellyplist-network:
|
||
driver: bridge
|
||
|
||
volumes:
|
||
postgres:
|
||
redis_data:
|
||
```
|
||
And the `.env` File
|
||
```env
|
||
IMAGE = ghcr.io/kamilkosek/jellyplist:latest
|
||
POSTGRES_USER = jellyplist
|
||
POSTGRES_PASSWORD = jellyplist
|
||
SECRET_KEY = supersecretkey # Secret key for session management
|
||
JELLYFIN_SERVER_URL = http://<jellyfin_server>:8096 # Default to local Jellyfin server
|
||
JELLYFIN_ACCESS_TOKEN = <jellyfin access token>
|
||
JELLYFIN_ADMIN_USER = <jellyfin admin username>
|
||
JELLYFIN_ADMIN_PASSWORD = <jellyfin admin password>
|
||
SPOTIFY_CLIENT_ID = <spotify client id>
|
||
SPOTIFY_CLIENT_SECRET = <spotify client secret>
|
||
JELLYPLIST_DB_HOST = postgres-jellyplist
|
||
JELLYPLIST_DB_USER = jellyplist
|
||
JELLYPLIST_DB_PASSWORD = jellyplist
|
||
LOG_LEVEL = INFO
|
||
LIDARR_API_KEY = <lidarr api key>
|
||
LIDARR_URL = http://<lidarr server>:8686
|
||
LIDARR_MONITOR_ARTISTS = false
|
||
SPOTIFY_COOKIE_FILE = '/jellyplist/spotify-cookie.txt'
|
||
MUSIC_STORAGE_BASE_PATH = '/storage/media/music'
|
||
|
||
```
|
||
### 🆕 Log Viewer
|
||
Under the `Admin` Page there is now a tab called `Logs` from where you can view the current logs, change the log-level on demand and copy a prepared markdown snippet ready to be pasted into a GitHub issue.
|
||
|
||
### 🆕 New env var´s, a bit more control over spotDL
|
||
#### `SPOTDL_PROXY`
|
||
Set a Proxy for spotDL. See [https://spotdl.readthedocs.io/en/latest/usage/#command-line-options](https://spotdl.readthedocs.io/en/latest/usage/#command-line-options)
|
||
#### `SPOTDL_OUTPUT_FORMAT`
|
||
Set the output folder and file name format for downloaded tracks via spotDL. Not all variables, which are supported by spotDL are supported by Jellyplist.
|
||
- `{title}`
|
||
- `{artist}`
|
||
- `{artists}`
|
||
- `{album}`
|
||
|
||
This way you will have a bit more controler over how the files are stored.
|
||
The complete output path is joined from `MUSIC_STORAGE_BASE_PATH` and `SPOTDL_OUTPUT_FORMAT`
|
||
|
||
_*Example:*_
|
||
|
||
`MUSIC_STORAGE_BASE_PATH = /storage/media/music`
|
||
|
||
and
|
||
|
||
`SPOTDL_OUTPUT_FORMAT = /{artist}/{album}/{title}`
|
||
|
||
The Track is _All I Want for Christmas Is You by Mariah Carey_ this will result in the following folder structure:
|
||
|
||
`/storage/media/music/Mariah Carey/Merry Christmas/All I Want for Christmas Is You.mp3`
|
||
|
||
### 🆕 Admin Users can now add Playlists to multiple Users
|
||
Sometimes I want to add a playlist to several users at once, because it´s either a _generic_ one or because my wife doesn´t want to bother with the technical stuff 😬
|
||
So now, when logged in as an admin user, when adding a playlist you can select users from your Jellyfin server which will also receive it.
|
||
Under `Admin` you can also select users which will be preselected by default. These will be stored in the file `settings.yaml`.
|
||
You can or should map this file to a file outside the container, so it will persist accross image updates (see compose sample above)
|
||
|
||
### 🆕 New `env` var `QUALITY_SCORE_THRESHOLD`
|
||
Get a better control over the `update_jellyfin_id_for_downloaded_tracks()` behaviour.
|
||
Until now this tasks performed a __full update__ every 24h: This means, every track from every playlist was searched through the Jellyfin API with the hope of finding the same track but with a better quality. While this is ok and works fine for small libraries, this tasks eats a lot of power on large libraries and also takes time.
|
||
So there is now the new `env` variable `QUALITY_SCORE_THRESHOLD` (default: `1000.0`). When a track was once found with a quality score above 1000.0, Jellyplist wont try to perform another `quality update` anymore on this track.
|
||
In order to be able to classify it a little better, here are a few common quality scores:
|
||
- spotDL downloaded track without yt-music premium: `< 300`
|
||
- spotDL downloaded track **with** yt-music premium: `< 450`
|
||
- flac `> 1000`
|
||
|
||
>[!TIP]
|
||
>Want to know what quality score (and many other details) a track has ? Just double-click the table row in the playlist details view to get all the info´s!
|
||
|
||
### Other changes, improvements and fixes
|
||
- Fix for #38 and #22 , where the manual task starting was missing a return value
|
||
- Fixed an issue where the content-type of a playlist cover image, would cause the Jellyfin API Client to fail. Thanks @artyorsh
|
||
- Fixed missing lock keys to task manager and task status rendering
|
||
- Pinned postgres version to 17.2
|
||
- Enhanced error logging in tasks
|
||
- several fixes and improvements for the Jellyfin API Client
|
||
|