The library returns download_info but GetTrackDownloadURL cannot extract
a working URL (bestInfo.URL is empty). Added debug logging of all
download info candidates and a more descriptive error message to
diagnose why Yandex API returns entries without URL.
This is a ym-dl issue, not a library issue — the library correctly
returns download_info; ym-dl fails to build a download URL from it.
Library updated to v0.0.0-20261018080126-dbb823ade349 which fixes:
- R128 field type changed from float64 to JSONR128 (accepts object or number)
- Artist.ID type changed from string to JSONID (accepts number or string)
Converted Artist.ID usages in storage.go to string() for assignments.
The new library version uses models.JSONID (custom string type) for ID
fields instead of plain string. Convert to string where IDs are passed
to functions expecting string or compared with string values.
Affected: client.go (GetTrackInfoWithPosition), downloader.go
(track.ID usage), monitor.go (track.ID, album.ID usage), storage.go
(album/track ID assignment).
The library now accepts numeric IDs from Yandex Music API for
Major.ID (track) and Album.ID (album), fixing unmarshalling errors
when API returns numbers instead of strings.
go mod tidy in Docker build causes disk space issues on CI runners
(compiling modernc.org/ccgo pulls many C files). go.mod/go.sum are
committed to repo, so go mod download + go build is sufficient.
Upgrade to v0.0.0-20261018055743-0456ca0665a6 which fixes the
page=0 validation bug in GetArtistTracks/GetArtistAlbums.
The library now returns *ArtistTracks/*ArtistAlbums wrappers
instead of raw slices, so the YandexClient wrapper extracts
the inner slices for backward compatibility.
Reverted page numbering back to 0 in monitor since the API
bug is fixed server-side/library-side.
Start page numbering at 1 instead of 0 in checkArtistTracks and
checkArtistAlbums. Yandex Music API rejects page=0 with
400 'Parameters requirements are not met'.
GetArtistInfo works because it doesn't use pagination.
Replace github.com/mattn/go-sqlite3 (CGO required) with
modernc.org/sqlite (pure Go, works with CGO_ENABLED=0).
Binary built with CGO_ENABLED=0 in Dockerfile can now load
SQLite storage without cgo errors.
Upgrade builder image from golang:1.24-alpine to golang:1.27-alpine
to match go.mod requirement (go 1.27.2). Go 1.24 cannot process
go.mod with go >= 1.27.2 even with GOTOOLCHAIN=local.
Add .gitea/workflows/ci.yml with test → build → docker pipeline.
Docker images pushed to gitea.mrixs.me/mrixs/ym-dl on master and v* tags.
Requires PACKAGES_TOKEN repo secret (read:package, write:package).
Migrate ym-dl from custom oapi-codegen Yandex Music API client to external
gitea.mrixs.me/Mrixs/yandex-music-api-go library with token-only authentication.
Key changes:
- Replace custom Yandex API client with yandexmusic library wrapper
- Token-based OAuth authentication only (no username/password fallback)
- SQLite storage index with JSON index migration path
- Extended ID3 tag support: genre, comment, lyrics, publisher, ISRC, copyright
- High-resolution album covers (1000x1000)
- Fixed album download check (requires all tracks, not just one)