Update README for Settings restructure, playlist compare, credential toggles
Nav references were stale (Manage credentials/playlists -> Settings > Credentials, Playlists), the credentials table was missing the required/optional split and enable-disable toggles, and AzuraCast's description was wrong (it's not a buy-link source, that's Bandcamp/Qobuz -- AzuraCast's key just triggers an immediate reprocess). Added the playlist compare view, dashboard public-IP check, and Artist Casing page to the feature list and day-to-day usage section.
This commit is contained in:
@@ -39,10 +39,11 @@ Give alembic a Spotify playlist link, and from then on it will:
|
||||
- **Import everything into your music library**, ready to show up in Navidrome or any other music server that reads a normal folder-based library
|
||||
- **Rebuild the playlist as a real M3U file**, so it plays back in the right order in your music app
|
||||
- **Keep checking on a schedule**, so when you add new songs to the Spotify playlist, they show up in your library on their own
|
||||
- **Find duplicate copies of songs** (the same track downloaded twice, or in two different formats) and let you review and clean them up, nothing gets deleted without your say-so
|
||||
- **Show you exactly what's downloaded and what's still waiting**, side by side with the original Spotify tracklist, per playlist
|
||||
- **Find duplicate copies of songs** (same track downloaded twice, a different format, or the same recording under different tags) and let you review and clean them up, nothing gets deleted without your say-so
|
||||
- **Let you fix things by hand** when needed: correct a tag, re-tag a track from a URL, manually import a file you dropped in yourself, or delete something you don't want
|
||||
|
||||
It also keeps a dashboard showing what's in your library, what got downloaded recently, and the history of every automated job it's run.
|
||||
It also keeps a dashboard showing what's in your library, what got downloaded recently, the history of every automated job it's run, and a quick check that your traffic is actually going through a VPN if you've set one up.
|
||||
|
||||
Everything runs in one Docker container. There's no separate database to install and no cron jobs to hand-edit, alembic manages all of that internally.
|
||||
|
||||
@@ -173,21 +174,23 @@ Open `http://<your-server>:8420` in a browser. You'll be redirected to your OIDC
|
||||
|
||||
## Setting up your credentials
|
||||
|
||||
Once logged in, go to **Manage credentials** and fill in each service you plan to use. Nothing here is required all at once, add them as you need them. Values are write-only: once saved, they're encrypted and never shown back to you in the browser (you'll just see a "set" badge).
|
||||
Once logged in, go to **Settings → Credentials** and fill in each service you plan to use. Nothing here is required all at once, add them as you need them. Values are write-only: once saved, they're encrypted and never shown back to you in the browser (you'll just see a "Configured" badge). Each service also shows a one-line description right on the page of what it's actually used for.
|
||||
|
||||
Spotify, Soulseek, and Navidrome are marked **Required** — every playlist sync depends on them, so there's no way to turn them off. Bandcamp, AzuraCast, Qobuz, and Telegram are optional and each has an on/off switch: turning one off pauses whatever it drives (its scheduled sync, or just not being used for buy-link lookups) without deleting the credential you already saved.
|
||||
|
||||
| Service | What to enter | Where to get it |
|
||||
|---|---|---|
|
||||
| **Spotify** | Client ID, Client Secret | Create a free app at [developer.spotify.com/dashboard](https://developer.spotify.com/dashboard). You don't need any special access, the basic free tier is enough to read playlist contents. |
|
||||
| **Soulseek** | Username, Password | Your normal Soulseek login. |
|
||||
| **Navidrome** | Base URL, admin username, admin password | The address of your Navidrome server and an admin account on it. Used so alembic can trigger a library rescan after downloads. |
|
||||
| **Spotify** *(required)* | Client ID, Client Secret | Create a free app at [developer.spotify.com/dashboard](https://developer.spotify.com/dashboard). You don't need any special access, the basic free tier is enough to read playlist contents. |
|
||||
| **Soulseek** *(required)* | Username, Password | Your normal Soulseek login. |
|
||||
| **Navidrome** *(required)* | Base URL, admin username, admin password | The address of your Navidrome server and an admin account on it. Used so alembic can trigger a library rescan after downloads. |
|
||||
| **Bandcamp** *(optional)* | Username, format preference, cookies | Export your Bandcamp cookies while logged into bandcamp.com in your browser, using an extension like "Get cookies.txt LOCALLY", and paste the contents in. Format preference is a space-separated list like `flac mp3-320`. |
|
||||
| **AzuraCast** *(optional)* | API key | From your AzuraCast station's API settings, if you run one. |
|
||||
| **Qobuz** *(optional)* | Token, App ID, region | From your Qobuz account, if you use it. |
|
||||
| **Telegram** *(optional)* | Bot token, chat ID | Create a bot via [@BotFather](https://t.me/BotFather) if you want job notifications sent to a chat. |
|
||||
| **Qobuz** *(optional)* | Token, App ID, region | A logged-in Qobuz session token — used (alongside Bandcamp) as a source for "buy this" links stamped onto tracks you didn't purchase there. |
|
||||
| **AzuraCast** *(optional)* | API key | Only relevant if you also run an AzuraCast radio station off the same library. It's not a buy-link source itself (that's Bandcamp/Qobuz, written straight to the file); this just lets alembic tell AzuraCast to immediately pick up a tag change instead of waiting for its own periodic scan. |
|
||||
| **Telegram** *(optional)* | Bot token, chat ID | Create a bot via [@BotFather](https://t.me/BotFather) if you want the daily status digest sent to a chat. |
|
||||
|
||||
## Adding your first playlist
|
||||
|
||||
1. Go to **Manage playlists** → **Add playlist**.
|
||||
1. Go to **Playlists** → **Add playlist**.
|
||||
2. Paste the Spotify playlist URL and give it a name (this name becomes the folder/tag name in your library).
|
||||
3. Pick a daily sync time.
|
||||
4. Save.
|
||||
@@ -196,13 +199,13 @@ That's it. On its next scheduled run (or immediately, using the **Run now** butt
|
||||
|
||||
## Using alembic day to day
|
||||
|
||||
- **Dashboard** — a snapshot of your library: track counts, formats, what got downloaded in the last 24 hours, and recent job activity.
|
||||
- **Playlists** — add, pause, or remove synced Spotify playlists, and see per-playlist download status.
|
||||
- **Dashboard** — a snapshot of your library: track counts, formats, what got downloaded in the last 24 hours, recent job activity, and a public-IP check (handy if you route alembic's traffic through a VPN container and want to confirm it's actually taking effect).
|
||||
- **Playlists** — add, pause, or remove synced Spotify playlists. Each playlist's page shows the original Spotify tracklist side by side with a "Downloaded" / "Waiting to download" breakdown, so you can see exactly what's made it into your library and what hasn't.
|
||||
- **Library** — browse and search everything in your library. Fix tags on a track, re-tag it from a URL, or delete it entirely.
|
||||
- **Import** — drop a file into your import folder (or upload it through the browser) to manually add something outside of the normal playlist flow.
|
||||
- **Dedup** — review duplicate tracks alembic has found. Nothing is ever deleted automatically, you approve each deletion, or mark a pair as "keep both" if it's not actually a duplicate.
|
||||
- **Genres** — review genre tags alembic has written or wants to write, and lock an artist's genre so it's never changed again.
|
||||
- **Jobs** — see the history and status of every scheduled and manual job, with full logs.
|
||||
- **Import** — drag a file onto the dropzone (or click to browse) to add it to your import folder, then import it individually or all at once, with an optional playlist tag.
|
||||
- **Dedup** — click "Scan now" to check for duplicates both by filename/tags and by matching the actual audio (catches the same recording filed under different names). Nothing is ever deleted automatically: you approve each deletion, or mark a pair as "keep both" if it's not actually a duplicate.
|
||||
- **Genres** — preview what a genre refresh from Spotify would change, then apply it, or lock an artist's genre so it's never overwritten again.
|
||||
- **Settings** — three sub-pages: **Credentials** (see above), **Jobs** (every scheduled task, enable/disable each one, run it on demand, and see the history and logs of every past run), and **Artist Casing** (a list of canonical artist name spellings, e.g. "Mall Grab" not "MALL GRAB", so the same artist doesn't end up split across differently-cased folders).
|
||||
|
||||
## Updating alembic
|
||||
|
||||
@@ -223,7 +226,7 @@ Your library, credentials, and settings all live in your two mounted folders, so
|
||||
Double check the redirect URI registered with your OIDC provider exactly matches `https://<your-host>/auth/callback`, including `http` vs `https`.
|
||||
|
||||
**A playlist says it's synced but nothing downloaded.**
|
||||
Check that playlist's job history under **Jobs**, the log will usually show whether Soulseek couldn't find a track, or a credential is missing.
|
||||
Check that playlist's job history under **Settings → Jobs**, the log will usually show whether Soulseek couldn't find a track, or a credential is missing. The playlist's own page will also show everything as "Waiting to download" if nothing came through.
|
||||
|
||||
**Dedup found something that isn't actually a duplicate.**
|
||||
Use the "Keep both" button on that pair. alembic will remember your decision and won't flag that exact pair again.
|
||||
|
||||
Reference in New Issue
Block a user