to_proto now emits the recording's ISRC as provider_item_id (falling back to the numeric track id when absent). Two Tidal track objects for the same recording share an ISRC, so capturing the same song reached via different Tidal paths de-duplicates by provider id to one store entry. The library path still uses the numeric id. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| src | ||
| Cargo.toml | ||
| README.md | ||
README.md
tidaldy — the Tidal provider
Mounts your Tidal account at /tidal in the crabidy library, using
Tidal's web API.
How it works
On first start the provider runs Tidal's OAuth device login: the
server prints a link.tidal.com verification URL to its stdout (for
cbd, check the log file) — open it in a browser, authorize, and the
provider finishes logging in by itself. The obtained tokens are written
back into the config file and refreshed automatically from then on; you
should not need to log in again.
The tree offers your playlists, favorite artists (with their albums and
tracks), and a search node: press % under /tidal/search to
create a search term; the term becomes a persistent child node holding
its results (tracks, artists, albums). Terms are renamable (e,
re-runs the search) and deletable (d).
Everything queueable is also capturable: w bookmarks a subtree as
links, W downloads a subtree's audio into /captures/<name>.
Configuration — ~/.config/crabidy/tidaly.toml
The file is rewritten on every server start with the current values (including refreshed tokens), so it contains your credentials — keep it private. All options with their defaults:
# Tidal API endpoints. Change only if you know why.
base_url = "https://api.tidal.com/v1"
hifi_url = "https://api.tidalhifi.com/v1"
# Stream quality: "Low" | "High" | "Lossless" | "HiRes".
audio_quality = "Lossless"
# Managed by the provider: filled in by the device login and refreshed
# automatically. Delete this whole section to force a fresh login.
[login]
# device_code = ...
# user_id = ...
# country_code = ...
# access_token = ...
# refresh_token = ...
# expires_after = ...
# OAuth client identity used for the device flow. Working defaults are
# built in; override only to use your own client registration.
[oauth]
# client_id = ...
# client_secret = ...
base_url = "https://auth.tidal.com/v1/oauth2"
Notes:
- A missing or empty file is fine: defaults are used and the device login runs on the next start.
- If Tidal ever invalidates the session (long offline periods), delete
the
[login]section and restart.