lidarr

package
v0.12.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 2, 2022 License: MIT Imports: 8 Imported by: 9

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AddAlbumInput

type AddAlbumInput struct {
	ForeignAlbumID string                  `json:"foreignAlbumId"`
	Monitored      bool                    `json:"monitored"`
	Releases       []*AddAlbumInputRelease `json:"releases"`
	AddOptions     *AlbumAddOptions        `json:"addOptions"`
	Artist         *Artist                 `json:"artist"`
}

AddAlbumInput is currently unknown.

type AddAlbumInputRelease

type AddAlbumInputRelease struct {
	ForeignReleaseID string   `json:"foreignReleaseId"`
	Title            string   `json:"title"`
	Media            []*Media `json:"media"`
	Monitored        bool     `json:"monitored"`
}

AddAlbumInputRelease is part of AddAlbumInput.

type Album

type Album struct {
	ID             int64            `json:"id,omitempty"`
	Title          string           `json:"title"`
	Disambiguation string           `json:"disambiguation"`
	Overview       string           `json:"overview"`
	ArtistID       int64            `json:"artistId"`
	ForeignAlbumID string           `json:"foreignAlbumId"`
	ProfileID      int64            `json:"profileId"`
	Duration       int              `json:"duration"`
	AlbumType      string           `json:"albumType"`
	SecondaryTypes []interface{}    `json:"secondaryTypes"`
	MediumCount    int              `json:"mediumCount"`
	Ratings        *starr.Ratings   `json:"ratings"`
	ReleaseDate    time.Time        `json:"releaseDate"`
	Releases       []*Release       `json:"releases"`
	Genres         []interface{}    `json:"genres"`
	Media          []*Media         `json:"media"`
	Artist         *Artist          `json:"artist"`
	Links          []*starr.Link    `json:"links"`
	Images         []*starr.Image   `json:"images"`
	Statistics     *Statistics      `json:"statistics"`
	RemoteCover    string           `json:"remoteCover,omitempty"`
	AddOptions     *AlbumAddOptions `json:"addOptions,omitempty"`
	Monitored      bool             `json:"monitored"`
	AnyReleaseOk   bool             `json:"anyReleaseOk"`
	Grabbed        bool             `json:"grabbed"`
}

Album is the /api/v1/album endpoint.

type AlbumAddOptions

type AlbumAddOptions struct {
	SearchForNewAlbum bool `json:"searchForNewAlbum,omitempty"`
}

AlbumAddOptions is part of an Album.

type AlbumType

type AlbumType struct {
	AlbumType *starr.Value `json:"albumType"`
	Allowed   bool         `json:"allowed"`
}

AlbumType is part of MetadataProfile.

type Artist

type Artist struct {
	ID                int64             `json:"id"`
	Status            string            `json:"status,omitempty"`
	LastInfoSync      time.Time         `json:"lastInfoSync,omitempty"`
	ArtistName        string            `json:"artistName,omitempty"`
	ForeignArtistID   string            `json:"foreignArtistId,omitempty"`
	TadbID            int64             `json:"tadbId,omitempty"`
	DiscogsID         int64             `json:"discogsId,omitempty"`
	QualityProfileID  int64             `json:"qualityProfileId,omitempty"`
	MetadataProfileID int64             `json:"metadataProfileId,omitempty"`
	Overview          string            `json:"overview,omitempty"`
	ArtistType        string            `json:"artistType,omitempty"`
	Disambiguation    string            `json:"disambiguation,omitempty"`
	RootFolderPath    string            `json:"rootFolderPath,omitempty"`
	Path              string            `json:"path,omitempty"`
	CleanName         string            `json:"cleanName,omitempty"`
	SortName          string            `json:"sortName,omitempty"`
	Links             []*starr.Link     `json:"links,omitempty"`
	Images            []*starr.Image    `json:"images,omitempty"`
	Genres            []string          `json:"genres,omitempty"`
	Tags              []int             `json:"tags,omitempty"`
	Added             time.Time         `json:"added,omitempty"`
	Ratings           *starr.Ratings    `json:"ratings,omitempty"`
	Statistics        *Statistics       `json:"statistics,omitempty"`
	LastAlbum         *Album            `json:"lastAlbum,omitempty"`
	NextAlbum         *Album            `json:"nextAlbum,omitempty"`
	AddOptions        *ArtistAddOptions `json:"addOptions,omitempty"`
	AlbumFolder       bool              `json:"albumFolder,omitempty"`
	Monitored         bool              `json:"monitored"`
	Ended             bool              `json:"ended,omitempty"`
}

Artist represents the /api/v1/artist endpoint, and it's part of an Album.

type ArtistAddOptions

type ArtistAddOptions struct {
	Monitor                string `json:"monitor,omitempty"`
	Monitored              bool   `json:"monitored,omitempty"`
	SearchForMissingAlbums bool   `json:"searchForMissingAlbums,omitempty"`
}

ArtistAddOptions is part of an artist and an album.

type CommandRequest added in v0.9.10

type CommandRequest struct {
	Name     string  `json:"name"`
	AlbumIDs []int64 `json:"albumIds,omitempty"`
	AlbumID  int64   `json:"albumId,omitempty"`
}

CommandRequest goes into the /api/v1/command endpoint. This was created from the search command and may not support other commands yet.

type CommandResponse added in v0.9.10

type CommandResponse struct {
	ID                  int64                  `json:"id"`
	Name                string                 `json:"name"`
	CommandName         string                 `json:"commandName"`
	Message             string                 `json:"message,omitempty"`
	Priority            string                 `json:"priority"`
	Status              string                 `json:"status"`
	Queued              time.Time              `json:"queued"`
	Started             time.Time              `json:"started,omitempty"`
	Ended               time.Time              `json:"ended,omitempty"`
	StateChangeTime     time.Time              `json:"stateChangeTime,omitempty"`
	LastExecutionTime   time.Time              `json:"lastExecutionTime,omitempty"`
	Duration            string                 `json:"duration,omitempty"`
	Trigger             string                 `json:"trigger"`
	SendUpdatesToClient bool                   `json:"sendUpdatesToClient"`
	UpdateScheduledTask bool                   `json:"updateScheduledTask"`
	Body                map[string]interface{} `json:"body"`
}

CommandResponse comes from the /api/v1/command endpoint.

type History added in v0.10.6

type History struct {
	Page          int              `json:"page"`
	PageSize      int              `json:"pageSize"`
	SortKey       string           `json:"sortKey"`
	SortDirection string           `json:"sortDirection"`
	TotalRecords  int              `json:"totalRecords"`
	Records       []*HistoryRecord `json:"records"`
}

History represents the /api/v1/history endpoint.

type HistoryRecord added in v0.10.6

type HistoryRecord struct {
	ID                  int64          `json:"id"`
	AlbumID             int64          `json:"albumId"`
	ArtistID            int64          `json:"artistId"`
	TrackID             int64          `json:"trackId"`
	SourceTitle         string         `json:"sourceTitle"`
	Quality             *starr.Quality `json:"quality"`
	QualityCutoffNotMet bool           `json:"qualityCutoffNotMet"`
	Date                time.Time      `json:"date"`
	DownloadID          string         `json:"downloadId"`
	EventType           string         `json:"eventType"`
	Data                struct {
		Age             string    `json:"age"`
		AgeHours        string    `json:"ageHours"`
		AgeMinutes      string    `json:"ageMinutes"`
		DownloadClient  string    `json:"downloadClient"`
		DownloadForced  string    `json:"downloadForced"`
		DownloadURL     string    `json:"downloadUrl"`
		DroppedPath     string    `json:"droppedPath"`
		GUID            string    `json:"guid"`
		ImportedPath    string    `json:"importedPath"`
		Indexer         string    `json:"indexer"`
		Message         string    `json:"message"`
		NzbInfoURL      string    `json:"nzbInfoUrl"`
		Protocol        string    `json:"protocol"`
		PublishedDate   time.Time `json:"publishedDate"`
		Reason          string    `json:"reason"`
		ReleaseGroup    string    `json:"releaseGroup"`
		Size            string    `json:"size"`
		StatusMessages  string    `json:"statusMessages"`
		TorrentInfoHash string    `json:"torrentInfoHash"`
	} `json:"data"`
}

HistoryRecord is part of the history. Not all items have all Data members. Check EventType for events you need.

type Lidarr

type Lidarr struct {
	starr.APIer
}

Lidarr contains all the methods to interact with a Lidarr server.

func New

func New(config *starr.Config) *Lidarr

New returns a Lidarr object used to interact with the Lidarr API.

func (*Lidarr) AddAlbum

func (l *Lidarr) AddAlbum(album *AddAlbumInput) (*Album, error)

AddAlbum adds a new album to Lidarr, and probably does not yet work.

func (*Lidarr) AddArtist

func (l *Lidarr) AddArtist(artist *Artist) (*Artist, error)

AddArtist adds a new artist to Lidarr, and probably does not yet work.

func (*Lidarr) AddQualityProfile added in v0.9.11

func (l *Lidarr) AddQualityProfile(profile *QualityProfile) (int64, error)

AddQualityProfile updates a quality profile in place.

func (*Lidarr) AddTag

func (l *Lidarr) AddTag(label string) (int, error)

AddTag adds a tag or returns the ID for an existing tag.

func (*Lidarr) Fail added in v0.12.0

func (l *Lidarr) Fail(historyID int64) error

Fail marks the given history item as failed by id.

func (*Lidarr) GetAlbum

func (l *Lidarr) GetAlbum(mbID string) ([]*Album, error)

GetAlbum returns an album or all albums if mbID is "" (empty). mbID is the music brainz UUID for a "release-group".

func (*Lidarr) GetAlbumByID

func (l *Lidarr) GetAlbumByID(albumID int64) (*Album, error)

GetAlbumByID returns an album by DB ID.

func (*Lidarr) GetArtist

func (l *Lidarr) GetArtist(mbID string) ([]*Artist, error)

GetArtist returns an artist or all artists.

func (*Lidarr) GetArtistByID

func (l *Lidarr) GetArtistByID(artistID int64) (*Artist, error)

GetArtistByID returns an artist from an ID.

func (*Lidarr) GetBackupFiles added in v0.12.0

func (l *Lidarr) GetBackupFiles() ([]*starr.BackupFile, error)

GetBackupFiles returns all available Lidarr backup files. Use GetBody to download a file using BackupFile.Path.

func (*Lidarr) GetCommands added in v0.9.10

func (l *Lidarr) GetCommands() ([]*CommandResponse, error)

GetCommands returns all available Lidarr commands.

func (*Lidarr) GetHistory added in v0.10.6

func (l *Lidarr) GetHistory(records, perPage int) (*History, error)

GetHistory returns the Lidarr History (grabs/failures/completed). WARNING: 12/30/2021 - this method changed. If you need control over the page, use lidarr.GetHistoryPage(). This function simply returns the number of history records desired, up to the number of records present in the application. It grabs records in (paginated) batches of perPage, and concatenates them into one list. Passing zero for records will return all of them.

func (*Lidarr) GetHistoryPage added in v0.12.0

func (l *Lidarr) GetHistoryPage(params *starr.Req) (*History, error)

GetHistoryPage returns a single page from the Lidarr History (grabs/failures/completed). The page size and number is configurable with the input request parameters.

func (*Lidarr) GetMetadataProfiles

func (l *Lidarr) GetMetadataProfiles() ([]*MetadataProfile, error)

GetMetadataProfiles returns the metadata profiles.

func (*Lidarr) GetQualityDefinition

func (l *Lidarr) GetQualityDefinition() ([]*QualityDefinition, error)

GetQualityDefinition returns the Quality Definitions.

func (*Lidarr) GetQualityProfiles

func (l *Lidarr) GetQualityProfiles() ([]*QualityProfile, error)

GetQualityProfiles returns the quality profiles.

func (*Lidarr) GetQueue

func (l *Lidarr) GetQueue(records, perPage int) (*Queue, error)

GetQueue returns a single page from the Lidarr Queue (processing, but not yet imported). WARNING: 12/30/2021 - this method changed. If you need control over the page, use lidarr.GetQueuePage(). This function simply returns the number of queue records desired, up to the number of records present in the application. It grabs records in (paginated) batches of perPage, and concatenates them into one list. Passing zero for records will return all of them.

func (*Lidarr) GetQueuePage added in v0.12.0

func (l *Lidarr) GetQueuePage(params *starr.Req) (*Queue, error)

GetQueuePage returns a single page from the Lidarr Queue. The page size and number is configurable with the input request parameters.

func (*Lidarr) GetRootFolders

func (l *Lidarr) GetRootFolders() ([]*RootFolder, error)

GetRootFolders returns all configured root folders.

func (*Lidarr) GetSystemStatus

func (l *Lidarr) GetSystemStatus() (*SystemStatus, error)

GetSystemStatus returns system status.

func (*Lidarr) GetTags

func (l *Lidarr) GetTags() ([]*starr.Tag, error)

GetTags returns all the tags.

func (*Lidarr) Lookup added in v0.12.0

func (l *Lidarr) Lookup(term string) ([]*Album, error)

Lookup will search for albums matching the specified search term.

func (*Lidarr) SendCommand added in v0.9.10

func (l *Lidarr) SendCommand(cmd *CommandRequest) (*CommandResponse, error)

SendCommand sends a command to Lidarr.

func (*Lidarr) UpdateAlbum

func (l *Lidarr) UpdateAlbum(albumID int64, album *Album) (*Album, error)

UpdateAlbum updates an album in place; the output of this is currently unknown!!!!

func (*Lidarr) UpdateArtist

func (l *Lidarr) UpdateArtist(artist *Artist) (*Artist, error)

UpdateArtist updates an artist in place.

func (*Lidarr) UpdateQualityProfile added in v0.9.11

func (l *Lidarr) UpdateQualityProfile(profile *QualityProfile) error

UpdateQualityProfile updates a quality profile in place.

func (*Lidarr) UpdateTag

func (l *Lidarr) UpdateTag(tagID int, label string) (int, error)

UpdateTag updates the label for a tag.

type Media

type Media struct {
	MediumNumber int64  `json:"mediumNumber"`
	MediumName   string `json:"mediumName"`
	MediumFormat string `json:"mediumFormat"`
}

Media is part of an Album.

type MetadataProfile

type MetadataProfile struct {
	Name                string           `json:"name"`
	ID                  int64            `json:"id"`
	PrimaryAlbumTypes   []*AlbumType     `json:"primaryAlbumTypes"`
	SecondaryAlbumTypes []*AlbumType     `json:"secondaryAlbumTypes"`
	ReleaseStatuses     []*ReleaseStatus `json:"releaseStatuses"`
}

MetadataProfile is the /api/v1/metadataprofile endpoint.

type QualityDefinition

type QualityDefinition struct {
	ID      int64        `json:"id"`
	Quality *starr.Value `json:"quality"`
	Title   string       `json:"title"`
	Weight  int64        `json:"weight"`
	MinSize float64      `json:"minSize"`
	MaxSize float64      `json:"maxSize,omitempty"`
}

QualityDefinition is the /api/v1/qualitydefinition endpoint.

type QualityProfile

type QualityProfile struct {
	ID             int64            `json:"id"`
	Name           string           `json:"name"`
	UpgradeAllowed bool             `json:"upgradeAllowed"`
	Cutoff         int64            `json:"cutoff"`
	Qualities      []*starr.Quality `json:"items"`
}

QualityProfile is the /api/v1/qualityprofile endpoint.

type Queue

type Queue struct {
	Page          int            `json:"page"`
	PageSize      int            `json:"pageSize"`
	SortKey       string         `json:"sortKey"`
	SortDirection string         `json:"sortDirection"`
	TotalRecords  int            `json:"totalRecords"`
	Records       []*QueueRecord `json:"records"`
}

Queue is the /api/v1/queue endpoint.

type QueueRecord added in v0.10.4

type QueueRecord struct {
	ArtistID                int64                  `json:"artistId"`
	AlbumID                 int64                  `json:"albumId"`
	Quality                 *starr.Quality         `json:"quality"`
	Size                    float64                `json:"size"`
	Title                   string                 `json:"title"`
	Sizeleft                float64                `json:"sizeleft"`
	Timeleft                string                 `json:"timeleft"`
	EstimatedCompletionTime time.Time              `json:"estimatedCompletionTime"`
	Status                  string                 `json:"status"`
	TrackedDownloadStatus   string                 `json:"trackedDownloadStatus"`
	StatusMessages          []*starr.StatusMessage `json:"statusMessages"`
	DownloadID              string                 `json:"downloadId"`
	Protocol                string                 `json:"protocol"`
	DownloadClient          string                 `json:"downloadClient"`
	Indexer                 string                 `json:"indexer"`
	OutputPath              string                 `json:"outputPath"`
	DownloadForced          bool                   `json:"downloadForced"`
	ID                      int64                  `json:"id"`
	ErrorMessage            string                 `json:"errorMessage"`
}

QueueRecord represents the records returns by the /api/v1/queue endpoint.

type Release

type Release struct {
	ID               int64    `json:"id"`
	AlbumID          int64    `json:"albumId"`
	ForeignReleaseID string   `json:"foreignReleaseId"`
	Title            string   `json:"title"`
	Status           string   `json:"status"`
	Duration         int      `json:"duration"`
	TrackCount       int      `json:"trackCount"`
	Media            []*Media `json:"media"`
	MediumCount      int      `json:"mediumCount"`
	Disambiguation   string   `json:"disambiguation"`
	Country          []string `json:"country"`
	Label            []string `json:"label"`
	Format           string   `json:"format"`
	Monitored        bool     `json:"monitored"`
}

Release is part of an Album.

type ReleaseStatus

type ReleaseStatus struct {
	ReleaseStatus *starr.Value `json:"releaseStatus"`
	Allowed       bool         `json:"allowed"`
}

ReleaseStatus is part of MetadataProfile.

type RootFolder

type RootFolder struct {
	ID              int64         `json:"id"`
	Path            string        `json:"path"`
	FreeSpace       int64         `json:"freeSpace"`
	TotalSpace      int64         `json:"totalSpace"`
	UnmappedFolders []*starr.Path `json:"unmappedFolders"`
}

RootFolder is the /api/v1/rootfolder endpoint.

type Statistics

type Statistics struct {
	AlbumCount      int     `json:"albumCount,omitempty"`
	TrackFileCount  int     `json:"trackFileCount"`
	TrackCount      int     `json:"trackCount"`
	TotalTrackCount int     `json:"totalTrackCount"`
	SizeOnDisk      int     `json:"sizeOnDisk"`
	PercentOfTracks float64 `json:"percentOfTracks"`
}

Statistics is part of Artist.

type SystemStatus

type SystemStatus struct {
	Version           string    `json:"version"`
	BuildTime         time.Time `json:"buildTime"`
	IsDebug           bool      `json:"isDebug"`
	IsProduction      bool      `json:"isProduction"`
	IsAdmin           bool      `json:"isAdmin"`
	IsUserInteractive bool      `json:"isUserInteractive"`
	StartupPath       string    `json:"startupPath"`
	AppData           string    `json:"appData"`
	OsName            string    `json:"osName"`
	OsVersion         string    `json:"osVersion"`
	IsMonoRuntime     bool      `json:"isMonoRuntime"`
	IsMono            bool      `json:"isMono"`
	IsLinux           bool      `json:"isLinux"`
	IsOsx             bool      `json:"isOsx"`
	IsWindows         bool      `json:"isWindows"`
	IsDocker          bool      `json:"isDocker"`
	Mode              string    `json:"mode"`
	Branch            string    `json:"branch"`
	Authentication    string    `json:"authentication"`
	SqliteVersion     string    `json:"sqliteVersion"`
	MigrationVersion  int64     `json:"migrationVersion"`
	URLBase           string    `json:"urlBase"`
	RuntimeVersion    string    `json:"runtimeVersion"`
	RuntimeName       string    `json:"runtimeName"`
	StartTime         time.Time `json:"startTime"`
}

SystemStatus is the /api/v1/system/status endpoint.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL