add monitor sync jobs and duplicate-safe qobuz updates
This commit is contained in:
53
README.md
53
README.md
@@ -9,7 +9,7 @@ Spotify -> Qobuz playlist transfer tool in Go.
|
||||
- Session cache for Spotify/Qobuz credentials and tokens (so you do not need to re-enter each run).
|
||||
- Fetches all Spotify playlists and liked songs.
|
||||
- Playlist URL mode (`--playlist-url`) for direct targeted transfers.
|
||||
- Monitor mode to detect playlist updates (`--monitor`) with optional auto-transfer (`--monitor-transfer`).
|
||||
- Monitor mode to detect playlist updates (`--monitor`) with optional sync-to-Qobuz (`--monitor-transfer`) and sync modes (`--sync-mode`).
|
||||
- Interactive selection prompt (or non-interactive flags).
|
||||
- Creates Qobuz playlists and fills them with best-effort track matches.
|
||||
- Transfers liked songs into a dedicated playlist (not favorites).
|
||||
@@ -58,13 +58,16 @@ Credentials/tokens are cached in `~/.config/qtransfer/session.json` by default.
|
||||
- `--liked`: include liked songs as a generated Qobuz playlist
|
||||
- `--playlist "Name"` (repeatable): transfer specific playlists by exact name
|
||||
- `--playlist-url "..."` (repeatable): transfer specific Spotify playlists by URL/URI/ID
|
||||
- `--config sync.toml`: TOML config with global options and per-playlist monitor sync jobs
|
||||
- `--spotify-manual-code=true|false`: paste callback URL/code manually or use local callback server
|
||||
- `--remember-creds=true|false`: persist/reuse tokens and credentials in session file
|
||||
- `--session-file path`: custom session file path (default `~/.config/qtransfer/session.json`)
|
||||
- `--monitor`: monitor selected playlists for updates
|
||||
- `--monitor-interval 5m`: monitor polling interval
|
||||
- `--monitor-once`: run one monitor check and exit
|
||||
- `--monitor-transfer`: in monitor mode, transfer only changed playlists
|
||||
- `--monitor-transfer`: in monitor mode, sync changed playlists to Qobuz
|
||||
- `--sync-mode append|mirror`: append only, or mirror source by recreating target playlist
|
||||
- `--target-playlist-id 123456`: bind single monitored source playlist to an existing Qobuz playlist ID
|
||||
- `--qobuz-self-test`: run Qobuz login/verify/search checks and exit (skips Spotify)
|
||||
- `--qobuz-self-test-write`: when self-test is enabled, also create a test playlist and add one track
|
||||
- `--qobuz-self-test-query "..."`: search query used during self-test
|
||||
@@ -102,6 +105,49 @@ Monitor selected playlists for changes:
|
||||
--monitor --monitor-interval 2m
|
||||
```
|
||||
|
||||
Monitor with append-only sync (never removes from Qobuz):
|
||||
|
||||
```bash
|
||||
./qtransfer \
|
||||
--playlist-url "https://open.spotify.com/playlist/37i9dQZF1DX0XUsuxWHRQd" \
|
||||
--monitor --monitor-transfer --sync-mode append --monitor-interval 2m
|
||||
```
|
||||
|
||||
Monitor with mirror sync (recreates playlist on change):
|
||||
|
||||
```bash
|
||||
./qtransfer \
|
||||
--playlist-url "https://open.spotify.com/playlist/37i9dQZF1DX0XUsuxWHRQd" \
|
||||
--monitor --monitor-transfer --sync-mode mirror --monitor-interval 2m
|
||||
```
|
||||
|
||||
Config-file mode:
|
||||
|
||||
```bash
|
||||
./qtransfer --config sync.toml
|
||||
```
|
||||
|
||||
Example `sync.toml`:
|
||||
|
||||
```toml
|
||||
[global]
|
||||
monitor = true
|
||||
monitor_transfer = true
|
||||
monitor_interval = "10m"
|
||||
sync_mode = "append"
|
||||
include_liked = true
|
||||
|
||||
[[playlist]]
|
||||
url = "https://open.spotify.com/playlist/37i9dQZF1DX0XUsuxWHRQd"
|
||||
sync_mode = "append"
|
||||
target_playlist_id = 61646089
|
||||
|
||||
[[playlist]]
|
||||
url = "spotify:playlist:37i9dQZF1DWY4xHQp97fN6"
|
||||
sync_mode = "mirror"
|
||||
enabled = true
|
||||
```
|
||||
|
||||
Login command:
|
||||
|
||||
```bash
|
||||
@@ -122,10 +168,13 @@ Logout command (removes cached session):
|
||||
- `QTRANSFER_SPOTIFY_MANUAL_CODE` (optional, defaults to true)
|
||||
- `QTRANSFER_SESSION_FILE` (optional)
|
||||
- `QTRANSFER_REMEMBER_CREDS` (optional, defaults to true)
|
||||
- `QTRANSFER_CONFIG` (optional)
|
||||
- `QTRANSFER_MONITOR` (optional)
|
||||
- `QTRANSFER_MONITOR_ONCE` (optional)
|
||||
- `QTRANSFER_MONITOR_TRANSFER` (optional)
|
||||
- `QTRANSFER_MONITOR_INTERVAL` (optional)
|
||||
- `QTRANSFER_SYNC_MODE` (optional: append|mirror)
|
||||
- `QTRANSFER_TARGET_PLAYLIST_ID` (optional, monitor mode only)
|
||||
- `QTRANSFER_QOBUZ_SELF_TEST` (optional)
|
||||
- `QTRANSFER_QOBUZ_SELF_TEST_WRITE` (optional)
|
||||
- `QTRANSFER_QOBUZ_SELF_TEST_QUERY` (optional)
|
||||
|
||||
Reference in New Issue
Block a user