release / govulncheck (push) Successful in 14s
release / web (push) Failing after 16s
release / go (push) Successful in 1m13s
release / integration (push) Successful in 4m54s
release / android (push) Successful in 5m5s
release / Build signed APK (releases and dev) (push) Successful in 5m18s
release / Attach APK to the Release (tag releases only) (push) Skipped
release / Build + push container image (push) Skipped
release / Verify release artifacts (tag releases only) (push) Skipped
- Library: the folders, Run scan and a row per scan job, cover art, fingerprints and loudness (off the Overview and Duplicates) - Acquisition: indexers and clients, searching, re-acquisition (off Missing files), Lidarr - Metadata sources: AcoustID, and one provider block for cover art and tags in place of the pasted pair - Email & network: outgoing email, the notification schedule, public address, proxies - Lidarr, outgoing email and the provider block are rebuilt as SettingsGroup rows; failures read as sentences, not codes - Duplicates and Missing files say what their setting is and link to where it is set Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
98 lines
3.6 KiB
Go
98 lines
3.6 KiB
Go
// Package lidarr is a typed HTTP client for Lidarr's v1 API. It is the
|
||
// only place in the codebase that knows about Lidarr's wire format.
|
||
// Callers receive value structs, never raw JSON.
|
||
package lidarr
|
||
|
||
// LookupResult is the normalized shape returned by Lookup{Artist,Album,Track}.
|
||
// MBID is the kind's primary identifier (foreignArtistId / foreignAlbumId /
|
||
// foreignTrackId from Lidarr). ArtistMBID and AlbumMBID carry parent
|
||
// identifiers when the kind has them — request creation and admin
|
||
// approval need them to construct the lidarr_requests row and the
|
||
// AddArtist/AddAlbum API calls.
|
||
type LookupResult struct {
|
||
MBID string // foreignArtistId / foreignAlbumId / foreignTrackId
|
||
ArtistMBID string // parent artist's foreignArtistId — set on album/track results, empty on artist results
|
||
AlbumMBID string // parent album's foreignAlbumId — set on track results only
|
||
Name string // artist name; album/track returns Title here too
|
||
Secondary string // genre + album count for artist; year for album; album for track
|
||
ImageURL string // cover-art URL Lidarr surfaced (may be empty)
|
||
}
|
||
|
||
// lidarrImage is the wire shape for image entries in Lidarr's API responses.
|
||
type lidarrImage struct {
|
||
CoverType string `json:"coverType"`
|
||
RemoteURL string `json:"remoteUrl"`
|
||
URL string `json:"url"`
|
||
}
|
||
|
||
// QualityProfile is the dropdown choice on Admin › Acquisition.
|
||
type QualityProfile struct {
|
||
ID int
|
||
Name string
|
||
}
|
||
|
||
// MetadataProfile controls which release types Lidarr tracks for an artist
|
||
// (album / single / EP / compilation). It's a separate Lidarr concept from
|
||
// quality profile and is required on POST /api/v1/artist — Lidarr 4xx's
|
||
// the request with "'Metadata Profile Id' must be greater than '0'" if
|
||
// it's missing or zero.
|
||
type MetadataProfile struct {
|
||
ID int
|
||
Name string
|
||
}
|
||
|
||
// RootFolder is the dropdown choice on Admin › Acquisition.
|
||
type RootFolder struct {
|
||
Path string
|
||
Accessible bool
|
||
FreeSpace int64
|
||
}
|
||
|
||
// AddArtistParams are the fields Lidarr requires on POST /api/v1/artist.
|
||
// ArtistName and MetadataProfileID are both required; omitting either
|
||
// produces a 400 with field-validation errors.
|
||
type AddArtistParams struct {
|
||
ForeignArtistID string
|
||
ArtistName string
|
||
QualityProfileID int
|
||
MetadataProfileID int
|
||
RootFolderPath string
|
||
MonitorAll bool // true => addOptions.monitor="all"; false => "future"
|
||
}
|
||
|
||
// AddAlbumParams identify the album to add and carry the settings Lidarr
|
||
// needs when it has to create the parent artist on the fly (an album by an
|
||
// artist not yet in Lidarr). The artist fields are a fallback only: the
|
||
// album lookup normally supplies the artist itself.
|
||
type AddAlbumParams struct {
|
||
ForeignAlbumID string
|
||
ForeignArtistID string // Lidarr requires the artist's foreign id too
|
||
ArtistName string
|
||
QualityProfileID int
|
||
MetadataProfileID int
|
||
RootFolderPath string
|
||
}
|
||
|
||
// PingResult is the response shape from GET /api/v1/system/status.
|
||
type PingResult struct {
|
||
Version string
|
||
}
|
||
|
||
// LidarrArtist is the subset of Lidarr's artist resource used by M5b
|
||
// admin actions. The "id" field is Lidarr's internal numeric ID — needed
|
||
// for DELETE /api/v1/artist/{id} calls.
|
||
type LidarrArtist struct {
|
||
ID int `json:"id"`
|
||
ForeignArtistID string `json:"foreignArtistId"` // MBID
|
||
ArtistName string `json:"artistName"`
|
||
}
|
||
|
||
// LidarrAlbum is the subset of Lidarr's album resource used by M5b
|
||
// admin actions.
|
||
type LidarrAlbum struct {
|
||
ID int `json:"id"`
|
||
ForeignAlbumID string `json:"foreignAlbumId"` // MBID
|
||
Title string `json:"title"`
|
||
ArtistID int `json:"artistId"`
|
||
}
|