# Whats up in Jellyplist 0.1.7?
### Major overhaul
I´ve been working the past week to make this project work again, after [Spotify announced to deprecate](https://developer.spotify.com/blog/2024-11-27-changes-to-the-web-api) the playlist discover API´s , which were a crucial part of this project.
I also took this opportunity at the same time to do a major overhaul, on how Jellyplist gathers data from a music provider. Music provider API implementations must now implement defined abstract classes to work with Jellyplist, think of it like _plugins_. Jellyplist now, in theory, can gather data from any music provider - just the _plugins_ must be written. It also doesn´t matter, if it have 1,2 or 10 Music Providers to playlists. So stay tuned for more to come. 
The next ones will be Deezer and YTM

After the providers will be implemented, I will at some point do the same with the media backend - so Jellyplist will be able to support other media backends like Navidrome, Plex, Emby and so on...

### 🆕New API Implementation for Spotify
As mentioned above, I needed a new way to get playlists. 
Now, to get them , you don´t need an API Key to authenticate, you even don´t need to be authenticated at all. If you like to have Playlists recommended or created for you, you can use authentication via a cookie. 
To do this, add a env var to you `.env` file:
```bash
SPOTIFY_COOKIE_FILE = '/jellyplist/spotify-cookie.txt'
```
And map the cookie from your local filesystem to the container path you´ve set in the `.env`file
```yaml
...
...
 volumes:
      - /your/local/path/open.spotify.com_cookies.txt:${SPOTIFY_COOKIE_FILE}
...
...
```

### 🆕Lidarr integration is here
To enable the Lidarr integration add these to your `.env` file
```bash
LIDARR_API_KEY = aabbccddeeffgghh11223344 # self explaining
LIDARR_URL = http://<your_lidarr_ip>:8686 # too
LIDARR_MONITOR_ARTISTS = false # If false, only the corresponding
# album will be set to monitored in lidarr, if true the whole artist 
# will be set as monitored. Be careful in the beginning as you might 
# hammer your lidarr instance and you indexers. Defaults to false
``` 
After you enabled Lidarr integration, make sure to go to _"Admin -> Lidarr"_ and set the default quality profile and music root folder.

With the Lidarr integration you get a nice workflow:
1. Add Playlist
2. Playlist gets downloaded via SpotDL and is available after some time
3. At some point (every hour on x:50) the requests to Lidarr are made.
4. Lidarr gets all files.
5. Once a day Jellyplist is doing a full update on all tracks, and searches for the same track but with a better quality profile.

### ⚠️ New required env var
Ensure to add `MUSIC_STORAGE_BASE_PATH` to your `.env` file. 
```bash
MUSIC_STORAGE_BASE_PATH = '/storage/media/music' # The base path where
# your music library is located. 
# Must be the same value as your music library in jellyfin
```

### ⚠️ Breaking change
As some table columns has been renamed, make sure to wipe your existing Jellyplist pgdata. Sorry for the inconvenience.

### Other changes, improvements and fixes
- UI/UX: The index page now has content. From there you can directly drop a playlist link
- UI/UX: The Search bar now works with the new API implementation
- UI/UX: A new `Browse All` (per Music Provider) Page from where you can discover playlists
- UI/UX: Check technical details on a track. Just doubleclick a row in the details view of a playlist.
- UI/UX: Allow to link a track even it´s not marked as downloaded. 
- UI/UX: Reworked celery task management and the /admin/tasks UI