- Pass quality parameter to /tracks/{track_id}/download-info API request
- Add GetTrackDownloadURL method that resolves signed download URLs by
downloading XML from download_info_url, parsing host/path/ts/s,
computing MD5 signature (salt: XGRlBW9FXlekgbPrRHuSiA), and
returning https://{host}/get-mp3/{sign}/{ts}{path}
- Add DownloadInfoURL field to DownloadInfo model for the XML URL
- Update DownloadTrack to use GetDirectLink resolution when URL is empty
- Port signing logic from yandex-music-api-python download_info.py
- Remove .serena/.gitignore and .serena/project.yml from version control
- Add .serena/ to .gitignore to prevent future tracking
- Files remain on disk, only removed from git tracking
The Yandex Music API returns IDs as both JSON strings and numbers depending
on the endpoint. Added JSONID custom type in internal/models/base.go that
implements json.Unmarshaler to accept both formats and store as string.
Changed ID fields from string to JSONID:
- Track.ID, Major.ID, TrackLyricsInfo.ID (track.go)
- Album.ID, TrailerInfo.TrackID, TrailerInfo.AlbumID (album.go)
Updated example to convert JSONID to string when passing to client methods.
Co-Authored-By: Claude Code <noreply@anthropic.com>
- Document all exported types, functions, methods, and constants across 52 files
- Add package-level doc comments to client, models, utils, and ynison packages
- Document HTTP method and endpoint path for each API client method
- Document model struct fields and DeJSON/DeList/ToJSON/ToMap methods
- Fix duplicate package doc comment in internal/models/base.go
Co-Authored-By: Claude Code <noreply@anthropic.com>