starrcmd

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Aug 29, 2023 License: MIT Imports: 7 Imported by: 0

README

Starr Command

This sub-module can be used to process Custom Script commands in your Go app.

See example_test.go for an example of how you can consume the event data that this module produces.

Documentation

Overview

Package starrcmd provides the bindings to consume a custom script command hook from any Starr app. Create these by going into Settings->Connect->Custom Script in Lidarr, Prowlarr, Radarr, Readarr, or Sonarr. See the included example_test.go file for examples on how to use this module.

Example

This is an example main() function that uses the golft.io/starr/starrcmd module.

//nolint:exhaustive,testableexamples
package main

import (
	"fmt"

	"golift.io/starr"
	"golift.io/starr/starrcmd"
)

/* This example assumes you want to handle custom script command hooks for all applications.
   Trim it to what you need; this is just an example.
*/

// This is an example main() function that uses the golft.io/starr/starrcmd module.
func main() {
	// Do your own configuration input here.
	cmd, err := starrcmd.New()
	if err != nil {
		panic(err)
	}

	switch cmd.App {
	case starr.Radarr:
		DoRadarr(cmd)
	case starr.Sonarr:
		DoSonarr(cmd)
	case starr.Readarr:
		DoReadarr(cmd)
	case starr.Lidarr:
		DoLidarr(cmd)
	case starr.Prowlarr:
		DoProwlarr(cmd)
	}
}

// DoRadarr handles any Radarr event.
func DoRadarr(cmd *starrcmd.CmdEvent) { //nolint:cyclop
	fmt.Println("Processing Radarr Event: ", cmd.Type)

	switch cmd.Type {
	case starrcmd.EventGrab:
		grab, err := cmd.GetRadarrGrab()
		if err != nil {
			panic(err)
		}

		fmt.Println(grab.Title)
	case starrcmd.EventApplicationUpdate:
		update, err := cmd.GetRadarrApplicationUpdate()
		if err != nil {
			panic(err)
		}

		fmt.Println(update.Message)
	case starrcmd.EventDownload:
		download, err := cmd.GetRadarrDownload()
		if err != nil {
			panic(err)
		}

		fmt.Println(download.Title)
	case starrcmd.EventHealthIssue:
		health, err := cmd.GetRadarrHealthIssue()
		if err != nil {
			panic(err)
		}

		fmt.Println(health.IssueType, health.Message)
	case starrcmd.EventMovieFileDelete:
		movie, err := cmd.GetRadarrMovieFileDelete()
		if err != nil {
			panic(err)
		}

		fmt.Println(movie.Title, movie.Path)
	case starrcmd.EventTest:
		// nothing, it's useless
	default:
		fmt.Println("Ignored Radarr Event: ", cmd.Type)
	}
}

/* The following procedures are just more examples. They're left empty on purpose. */

// DoSonarr handles any Sonarr event.
func DoSonarr(command *starrcmd.CmdEvent) {
	fmt.Println("Processing Sonarr Event: ", command.Type)

	switch command.Type {
	case starrcmd.EventGrab:
	case starrcmd.EventApplicationUpdate:
	case starrcmd.EventDownload:
	case starrcmd.EventHealthIssue:
	default:
		fmt.Println("Ignored Sonarr Event: ", command.Type)
	}
}

// DoLidarr handles any Lidarr event.
func DoLidarr(command *starrcmd.CmdEvent) {
	fmt.Println("Processing Lidarr Event: ", command.Type)

	switch command.Type {
	case starrcmd.EventGrab:
	case starrcmd.EventApplicationUpdate:
	case starrcmd.EventDownload:
	case starrcmd.EventHealthIssue:
	default:
		fmt.Println("Ignored Lidarr Event: ", command.Type)
	}
}

// DoReadarr handles any Readarr event.
func DoReadarr(command *starrcmd.CmdEvent) {
	fmt.Println("Processing Readarr Event: ", command.Type)

	switch command.Type {
	case starrcmd.EventGrab:
	case starrcmd.EventApplicationUpdate:
	case starrcmd.EventDownload:
	case starrcmd.EventHealthIssue:
	default:
		fmt.Println("Ignored Readarr Event: ", command.Type)
	}
}

// DoProwlarr handles any Prowlarr event.
func DoProwlarr(command *starrcmd.CmdEvent) {
	fmt.Println("Processing Prowlarr Event: ", command.Type)

	switch command.Type {
	case starrcmd.EventApplicationUpdate:
	case starrcmd.EventHealthIssue:
	default:
		fmt.Println("Ignored Prowlarr Event: ", command.Type)
	}
}
Output:

Index

Examples

Constants

View Source
const DateFormat = "1/2/2006 3:04:05 PM"

DateFormat matches the date output from most apps.

View Source
const DateFormat2 = "01/02/2006 15:04:05"

DateFormat2 matches the date output from Readarr.

Variables

View Source
var (
	// ErrInvalidEvent is returned if you invoke a procedure for the wrong event.
	ErrInvalidEvent = fmt.Errorf("incorrect event type requested")
	// ErrNoEventFound is returned if an event type is not found.
	// This should only happen when testing and you forget a variable.
	ErrNoEventFound = fmt.Errorf("no eventType environment variable found")
)

Functions

This section is empty.

Types

type CmdEvent

type CmdEvent struct {
	App  starr.App
	Type Event
}

CmdEvent holds the current event type and the app that triggered it. Get one of these by calling New().

func New

func New() (*CmdEvent, error)

New returns the current Event and Application it's from, or an error if the type doesn't exist. When running from a Starr App Custom Script this should not return an error.

func NewMust

func NewMust() *CmdEvent

NewMust returns a command event without returning an error. It will panic if the event does not exist. When running from a Starr App Custom Script this should not panic.

func NewMustNoPanic

func NewMustNoPanic() *CmdEvent

NewMustNoPanic returns a command event and allows your code to handle the problem. When running from a Starr App Custom Script this should always return a proper event.

func (*CmdEvent) GetLidarrAlbumDownload

func (c *CmdEvent) GetLidarrAlbumDownload() (output LidarrAlbumDownload, err error)

GetLidarrAlbumDownload returns the AlbumDownload event data.

func (*CmdEvent) GetLidarrApplicationUpdate

func (c *CmdEvent) GetLidarrApplicationUpdate() (output LidarrApplicationUpdate, err error)

GetLidarrApplicationUpdate returns the ApplicationUpdate event data.

func (*CmdEvent) GetLidarrGrab

func (c *CmdEvent) GetLidarrGrab() (output LidarrGrab, err error)

GetLidarrGrab returns the Grab event data.

func (*CmdEvent) GetLidarrHealthIssue

func (c *CmdEvent) GetLidarrHealthIssue() (output LidarrHealthIssue, err error)

GetLidarrHealthIssue returns the ApplicationUpdate event data.

func (*CmdEvent) GetLidarrRename

func (c *CmdEvent) GetLidarrRename() (output LidarrRename, err error)

GetLidarrRename returns the Rename event data.

func (*CmdEvent) GetLidarrTest

func (c *CmdEvent) GetLidarrTest() (output LidarrTest, err error)

GetLidarrTest returns the ApplicationUpdate event data.

func (*CmdEvent) GetLidarrTrackRetag

func (c *CmdEvent) GetLidarrTrackRetag() (output LidarrTrackRetag, err error)

GetLidarrTrackRetag returns the TrackRetag event data.

func (*CmdEvent) GetProwlarrApplicationUpdate

func (c *CmdEvent) GetProwlarrApplicationUpdate() (output ProwlarrApplicationUpdate, err error)

GetProwlarrApplicationUpdate returns the ApplicationUpdate event data.

func (*CmdEvent) GetProwlarrHealthIssue

func (c *CmdEvent) GetProwlarrHealthIssue() (output ProwlarrHealthIssue, err error)

GetProwlarrHealthIssue returns the ApplicationUpdate event data.

func (*CmdEvent) GetProwlarrTest

func (c *CmdEvent) GetProwlarrTest() (output ProwlarrTest, err error)

GetProwlarrTest returns the ApplicationUpdate event data.

func (*CmdEvent) GetRadarrApplicationUpdate

func (c *CmdEvent) GetRadarrApplicationUpdate() (output RadarrApplicationUpdate, err error)

GetRadarrApplicationUpdate returns the ApplicationUpdate event data.

func (*CmdEvent) GetRadarrDownload

func (c *CmdEvent) GetRadarrDownload() (output RadarrDownload, err error)

GetRadarrDownload returns the Download event data.

func (*CmdEvent) GetRadarrGrab

func (c *CmdEvent) GetRadarrGrab() (output RadarrGrab, err error)

GetRadarrGrab returns the Grab event data.

func (*CmdEvent) GetRadarrHealthIssue

func (c *CmdEvent) GetRadarrHealthIssue() (output RadarrHealthIssue, err error)

GetRadarrHealthIssue returns the HealthIssue event data.

func (*CmdEvent) GetRadarrMovieDelete

func (c *CmdEvent) GetRadarrMovieDelete() (output RadarrMovieDelete, err error)

GetRadarrMovieDelete returns the MovieDelete event data.

func (*CmdEvent) GetRadarrMovieFileDelete

func (c *CmdEvent) GetRadarrMovieFileDelete() (output RadarrMovieFileDelete, err error)

GetRadarrMovieFileDelete returns the MovieFileDelete event data.

func (*CmdEvent) GetRadarrRename

func (c *CmdEvent) GetRadarrRename() (output RadarrRename, err error)

GetRadarrRename returns the Rename event data.

func (*CmdEvent) GetRadarrTest

func (c *CmdEvent) GetRadarrTest() (output RadarrTest, err error)

GetRadarrTest returns the Test event data.

func (*CmdEvent) GetReadarrApplicationUpdate

func (c *CmdEvent) GetReadarrApplicationUpdate() (output ReadarrApplicationUpdate, err error)

GetReadarrApplicationUpdate returns the ApplicationUpdate event data.

func (*CmdEvent) GetReadarrAuthorDelete

func (c *CmdEvent) GetReadarrAuthorDelete() (output ReadarrAuthorDelete, err error)

GetReadarrAuthorDelete returns the AuthorDelete event data.

func (*CmdEvent) GetReadarrBookDelete

func (c *CmdEvent) GetReadarrBookDelete() (output ReadarrBookDelete, err error)

GetReadarrBookDelete returns the BookDelete event data.

func (*CmdEvent) GetReadarrBookFileDelete

func (c *CmdEvent) GetReadarrBookFileDelete() (output ReadarrBookFileDelete, err error)

GetReadarrBookFileDelete returns the BookFileDelete event data.

func (*CmdEvent) GetReadarrDownload

func (c *CmdEvent) GetReadarrDownload() (output ReadarrDownload, err error)

GetReadarrDownload returns the Download event data.

func (*CmdEvent) GetReadarrGrab

func (c *CmdEvent) GetReadarrGrab() (output ReadarrGrab, err error)

GetReadarrGrab returns the Grab event data.

func (*CmdEvent) GetReadarrHealthIssue

func (c *CmdEvent) GetReadarrHealthIssue() (output ReadarrHealthIssue, err error)

GetReadarrHealthIssue returns the ApplicationUpdate event data.

func (*CmdEvent) GetReadarrRename

func (c *CmdEvent) GetReadarrRename() (output ReadarrRename, err error)

GetReadarrRename returns the Rename event data.

func (*CmdEvent) GetReadarrTest

func (c *CmdEvent) GetReadarrTest() (output ReadarrTest, err error)

GetReadarrTest returns the ApplicationUpdate event data.

func (*CmdEvent) GetReadarrTrackRetag

func (c *CmdEvent) GetReadarrTrackRetag() (output ReadarrTrackRetag, err error)

GetReadarrTrackRetag returns the TrackRetag event data.

func (*CmdEvent) GetSonarrApplicationUpdate

func (c *CmdEvent) GetSonarrApplicationUpdate() (output SonarrApplicationUpdate, err error)

GetSonarrApplicationUpdate returns the ApplicationUpdate event data.

func (*CmdEvent) GetSonarrDownload

func (c *CmdEvent) GetSonarrDownload() (output SonarrDownload, err error)

GetSonarrDownload returns the Download event data.

func (*CmdEvent) GetSonarrEpisodeFileDelete

func (c *CmdEvent) GetSonarrEpisodeFileDelete() (output SonarrEpisodeFileDelete, err error)

GetSonarrEpisodeFileDelete returns the EpisodeFileDelete event data.

func (*CmdEvent) GetSonarrGrab

func (c *CmdEvent) GetSonarrGrab() (output SonarrGrab, err error)

GetSonarrGrab returns the Grab event data.

func (*CmdEvent) GetSonarrHealthIssue

func (c *CmdEvent) GetSonarrHealthIssue() (output SonarrHealthIssue, err error)

GetSonarrHealthIssue returns the ApplicationUpdate event data.

func (*CmdEvent) GetSonarrRename

func (c *CmdEvent) GetSonarrRename() (output SonarrRename, err error)

GetSonarrRename returns the Rename event data.

func (*CmdEvent) GetSonarrSeriesDelete

func (c *CmdEvent) GetSonarrSeriesDelete() (output SonarrSeriesDelete, err error)

GetSonarrSeriesDelete returns the SeriesDelete event data.

func (*CmdEvent) GetSonarrTest

func (c *CmdEvent) GetSonarrTest() (output SonarrTest, err error)

GetSonarrTest returns the ApplicationUpdate event data.

type Event

type Event string

Event is a custom type to hold our EventType.

const (
	EventTest              Event = "Test"              // All Apps, useless
	EventHealthIssue       Event = "HealthIssue"       // All Apps
	EventApplicationUpdate Event = "ApplicationUpdate" // All Apps
	EventGrab              Event = "Grab"              // All Apps except Prowlarr
	EventRename            Event = "Rename"            // All Apps except Prowlarr
	EventDownload          Event = "Download"          // All Apps except Prowlarr/Lidarr
	EventTrackRetag        Event = "TrackRetag"        // Lidarr & Readarr
	EventAlbumDownload     Event = "AlbumDownload"     // Lidarr
	EventMovieFileDelete   Event = "MovieFileDelete"   // Radarr
	EventMovieDelete       Event = "MovieDelete"       // Radarr
	EventBookDelete        Event = "BookDelete"        // Readarr
	EventAuthorDelete      Event = "AuthorDelete"      // Readarr
	EventBookFileDelete    Event = "BookFileDelete"    // Readarr
	EventSeriesDelete      Event = "SeriesDelete"      // Sonarr
	EventEpisodeFileDelete Event = "EpisodeFileDelete" // Sonarr
)

This list of constants represents all available and existing Event Types for all five Starr apps. Lidarr is complete; 1/30/2022. Prowlarr is complete; 1/30/2022. Radarr is complete; 1/30/2022. Readarr is complete; 1/30/2022. Sonarr is complete; 1/30/2022.

type LidarrAlbumDownload

type LidarrAlbumDownload struct {
	ArtistID         int64     `env:"lidarr_artist_id"`         // artist.Id.ToString())
	ArtistName       string    `env:"lidarr_artist_name"`       // artist.Metadata.Value.Name)
	Path             string    `env:"lidarr_artist_path"`       // artist.Path)
	ArtistMBID       string    `env:"lidarr_artist_mbid"`       // artist.Metadata.Value.ForeignArtistId)
	ArtistType       string    `env:"lidarr_artist_type"`       // artist.Metadata.Value.Type)
	AlbumID          int64     `env:"lidarr_album_id"`          // album.Id.ToString())
	Title            string    `env:"lidarr_album_title"`       // album.Title)
	MBID             string    `env:"lidarr_album_mbid"`        // album.ForeignAlbumId)
	AlbumReleaseMBID string    `env:"lidarr_albumrelease_mbid"` // release.ForeignReleaseId)
	ReleaseDate      time.Time `env:"lidarr_album_releasedate"` // album.ReleaseDate.ToString())
	DownloadClient   string    `env:"lidarr_download_client"`   // message.DownloadClient ?? string.Empty)
	DownloadID       string    `env:"lidarr_download_id"`       // message.DownloadId ?? string.Empty)
	AddedTrackPaths  []string  `env:"lidarr_addedtrackpaths,|"` // string.Join("|", message.TrackFiles.Select(e => e.Path)))
	DeletedPaths     []string  `env:"lidarr_deletedpaths,|"`    // string.Join("|", message.OldFiles.Select(e => e.Path)))
}

LidarrAlbumDownload is the AlbumDownload event.

type LidarrApplicationUpdate

type LidarrApplicationUpdate struct {
	PreviousVersion string `env:"lidarr_update_previousversion"` // 4.0.3.5875
	NewVersion      string `env:"lidarr_update_newversion"`      // 4.0.4.5909
	Message         string `env:"lidarr_update_message"`         // Lidarr updated from 4.0.3.5875 to 4.0.4.5909
}

LidarrApplicationUpdate is the ApplicationUpdate event.

type LidarrGrab

type LidarrGrab struct {
	DownloadClient string      `env:"lidarr_download_client"`             // Deluge
	AlbumCount     int         `env:"lidarr_release_albumcount"`          // 1
	Size           int64       `env:"lidarr_release_size"`                // 433061888
	ReleaseDates   []time.Time `env:"lidarr_release_albumreleasedates,,"` // 4/21/2010 12:00:00 AM
	ArtistID       int64       `env:"lidarr_artist_id"`                   // 262
	ArtistName     string      `env:"lidarr_artist_name"`                 // Tom Petty and the Heartbreakers
	MBID           string      `env:"lidarr_artist_mbid"`                 // f93dbc64-6f08-4033-bcc7-8a0bb4689849
	Indexer        string      `env:"lidarr_release_indexer"`             // Indexilate (Prowlarr)
	QualityVerson  int64       `env:"lidarr_release_qualityversion"`      // 1
	Quality        string      `env:"lidarr_release_quality"`             // FLAC
	ReleaseGroup   string      `env:"lidarr_release_releasegroup"`        //
	ReleaseTitle   string      `env:"lidarr_release_title"`               // Tom Petty & The Heartbreakers - Mojo (2010) [FLAC (tracks + cue)]
	AlbumMBIDs     []string    `env:"lidarr_release_albummbids,|"`        // 75f6f410-73e6-485b-898d-6fdaea4c0266
	DownloadID     string      `env:"lidarr_download_id"`                 // 4A87D9F5F92D82DF4076463E90CC49F27077CB10
	Titles         []string    `env:"lidarr_release_albumtitles,|"`       // Mojo
	ArtistType     string      `env:"lidarr_artist_type"`                 // Group
}

LidarrGrab is the Grab event.

type LidarrHealthIssue

type LidarrHealthIssue struct {
	Message   string `env:"lidarr_health_issue_message"` // Lists unavailable due to failures: List name here
	IssueType string `env:"lidarr_health_issue_type"`    // ImportListStatusCheck
	Wiki      string `env:"lidarr_health_issue_wiki"`    // https://wiki.servarr.com/lidarr/
	Level     string `env:"lidarr_health_issue_level"`   // Warning
}

LidarrHealthIssue is the HealthIssue event.

type LidarrRename

type LidarrRename struct {
	ArtistID   int64  `env:"lidarr_artist_id"`   // artist.Id.ToString())
	ArtistName string `env:"lidarr_artist_name"` // artist.Metadata.Value.Name)
	Path       string `env:"lidarr_artist_path"` // artist.Path)
	ArtistMBID string `env:"lidarr_artist_mbid"` // artist.Metadata.Value.ForeignArtistId)
	ArtistType string `env:"lidarr_artist_type"` // artist.Metadata.Value.Type)
}

LidarrRename is the Rename event.

type LidarrTest

type LidarrTest struct{}

LidarrTest has no members.

type LidarrTrackRetag

type LidarrTrackRetag struct {
	ArtistID         int64     `env:"lidarr_artist_id"`                // artist.Id.ToString())
	ArtistName       string    `env:"lidarr_artist_name"`              // artist.Metadata.Value.Name)
	Path             string    `env:"lidarr_artist_path"`              // artist.Path)
	ArtistMBID       string    `env:"lidarr_artist_mbid"`              // artist.Metadata.Value.ForeignArtistId)
	ArtistType       string    `env:"lidarr_artist_type"`              // artist.Metadata.Value.Type)
	ID               int64     `env:"lidarr_album_id"`                 // album.Id.ToString())
	Title            string    `env:"lidarr_album_title"`              // album.Title)
	MBID             string    `env:"lidarr_album_mbid"`               // album.ForeignAlbumId)
	AlbumReleaseMBID string    `env:"lidarr_albumrelease_mbid"`        // release.ForeignReleaseId)
	ReleaseDate      time.Time `env:"lidarr_album_releasedate"`        // album.ReleaseDate.ToString())
	FileID           int64     `env:"lidarr_trackfile_id"`             // trackFile.Id.ToString())
	TrackCount       string    `env:"lidarr_trackfile_trackcount"`     // trackFile.Tracks.Value.Count.ToString())
	FilePath         string    `env:"lidarr_trackfile_path"`           // trackFile.Path)
	TrackNumbers     []int     `env:"lidarr_trackfile_tracknumbers,,"` // string.Join(",", trackFile.Tracks.Value.Select(e => e.TrackNumber)))
	TrackTitles      []string  `env:"lidarr_trackfile_tracktitles,|"`  // string.Join("|", trackFile.Tracks.Value.Select(e => e.Title)))
	Quality          string    `env:"lidarr_trackfile_quality"`        // trackFile.Quality.Quality.Name)
	QualityVersion   int64     `env:"lidarr_trackfile_qualityversion"` // trackFile.Quality.Revision.Version.ToString())
	ReleaseGroup     string    `env:"lidarr_trackfile_releasegroup"`   // trackFile.ReleaseGroup ?? string.Empty)
	SceneName        string    `env:"lidarr_trackfile_scenename"`      // trackFile.SceneName ?? string.Empty)
	TagsDiff         string    `env:"lidarr_tags_diff"`                // message.Diff.ToJson())
	TagsScrubbed     bool      `env:"lidarr_tags_scrubbed"`            // message.Scrubbed.ToString())
}

LidarrTrackRetag is the TrackRetag event.

type ProwlarrApplicationUpdate

type ProwlarrApplicationUpdate struct {
	PreviousVersion string `env:"prowlarr_update_previousversion"` // 4.0.3.5875
	NewVersion      string `env:"prowlarr_update_newversion"`      // 4.0.4.5909
	Message         string `env:"prowlarr_update_message"`         // Prowlarr updated from 4.0.3.5875 to 4.0.4.5909
}

ProwlarrApplicationUpdate is the ApplicationUpdate event.

type ProwlarrHealthIssue

type ProwlarrHealthIssue struct {
	Message   string `env:"prowlarr_health_issue_message"` // some message about sme problem
	IssueType string `env:"prowlarr_health_issue_type"`    // NeverSeenOne
	Wiki      string `env:"prowlarr_health_issue_wiki"`    // something
	Level     string `env:"prowlarr_health_issue_level"`   // Warning
}

ProwlarrHealthIssue is the HealthIssue event.

type ProwlarrTest

type ProwlarrTest struct{}

ProwlarrTest has no members.

type RadarrApplicationUpdate

type RadarrApplicationUpdate struct {
	PreviousVersion string `env:"radarr_update_previousversion"` // 4.0.3.5875
	NewVersion      string `env:"radarr_update_newversion"`      // 4.0.4.5909
	Message         string `env:"radarr_update_message"`         // Radarr updated from 4.0.3.5875 to 4.0.4.5909
}

RadarrApplicationUpdate is the ApplicationUpdate event.

type RadarrDownload

type RadarrDownload struct {
	ReleaseDate          time.Time `env:"radarr_movie_physical_release_date"`
	FilePath             string    `env:"radarr_moviefile_path"`           // /movies/Just Go with It (2011)/Just.Go.with.It.2011.Bluray-1080p.mkv
	IMDbID               string    `env:"radarr_movie_imdbid"`             // tt1564367
	SceneName            string    `env:"radarr_moviefile_scenename"`      // Just.Go.with.It.2011.1080p.BluRay.x264-OFT
	FileID               int64     `env:"radarr_moviefile_id"`             // 3594
	ReleaseGroup         string    `env:"radarr_moviefile_releasegroup"`   // OFT
	DownloadID           string    `env:"radarr_download_id"`              // string F3D870942BFDD643488852284E917336170CEA00
	InCinemas            time.Time `env:"radarr_movie_in_cinemas_date"`    // 2/10/2011 12:00:00 AM
	SourceFolder         string    `env:"radarr_moviefile_sourcefolder"`   // /downloads/Seeding/Just.Go.with.It.2011.1080p.BluRay.x264-OFT
	Year                 int       `env:"radarr_movie_year"`               // 2011
	IsUpgrade            bool      `env:"radarr_isupgrade"`                // False
	Path                 string    `env:"radarr_movie_path"`               // /movies/Just Go with It (2011)
	RelativePath         string    `env:"radarr_moviefile_relativepath"`   // Just.Go.with.It.2011.Bluray-1080p.mkv
	DownloadClient       string    `env:"radarr_download_client"`          // Deluge
	SourcePath           string    `env:"radarr_moviefile_sourcepath"`     // /downloads/Seeding/Just.Go.with.It.2011.1080p.BluRay.x264-OFT/Just.Go.with.It.2011.1080p.BluRay.x264-OFT.mkv
	TMDbID               int64     `env:"radarr_movie_tmdbid"`             // 50546
	ID                   int64     `env:"radarr_movie_id"`                 // 924
	Quality              string    `env:"radarr_moviefile_quality"`        // Bluray-1080p
	Title                string    `env:"radarr_movie_title"`              // Just Go with It
	QualityVersion       int64     `env:"radarr_moviefile_qualityversion"` // 1
	DeletedRelativePaths []string  `env:"radarr_deletedrelativepaths,|"`
	DeletedPaths         []string  `env:"radarr_deletedpaths,|"`
}

RadarrDownload is the Download event.

type RadarrGrab

type RadarrGrab struct {
	QualityVersion int64     `env:"radarr_release_qualityversion"`      // 1
	ReleaseDate    time.Time `env:"radarr_movie_physical_release_date"` // 1/19/2006 12:00:00 AM
	ReleaseGroup   string    `env:"radarr_release_releasegroup"`        // SLOT
	IndexerFlags   int64     `env:"radarr_indexerflags"`                // 0
	IMDbID         string    `env:"radarr_movie_imdbid"`                // tt0448172
	DownloadID     string    `env:"radarr_download_id"`                 // E63FAFFAAA0DEE42F0846348A9C0657BC53E7AA5
	ReleaseTitle   string    `env:"radarr_release_title"`               // 8MM 2 2005 1080p BluRay x264
	InCinemas      time.Time `env:"radarr_movie_in_cinemas_date"`       // 11/22/2005 12:00:00 AM
	Quality        string    `env:"radarr_release_quality"`             // Bluray-1080p
	Size           int64     `env:"radarr_release_size"`                // 2158221056
	Year           int       `env:"radarr_movie_year"`                  // 2005
	DownloadClient string    `env:"radarr_download_client"`             // Deluge
	TMDbID         int64     `env:"radarr_movie_tmdbid"`                // 7295
	ID             int64     `env:"radarr_movie_id"`                    // 339
	ReleaseIndexer string    `env:"radarr_release_indexer"`             // Inexilator (Prowlarr)
	Title          string    `env:"radarr_movie_title"`                 // 8MM 2
}

RadarrGrab is the Grab event.

type RadarrHealthIssue

type RadarrHealthIssue struct {
	Message   string `env:"radarr_health_issue_message"` // Lists unavailable due to failures: List name here
	IssueType string `env:"radarr_health_issue_type"`    // ImportListStatusCheck
	Wiki      string `env:"radarr_health_issue_wiki"`    // https://wiki.servarr.com/radarr/system#lists-are-unavailable-due-to-failures
	Level     string `env:"radarr_health_issue_level"`   // Warning
}

RadarrHealthIssue is the HealthIssue event.

type RadarrMovieDelete

type RadarrMovieDelete struct {
	ID          int64  `env:"radarr_movie_id"`           // 2173
	Title       string `env:"radarr_movie_title"`        // The French Dispatch
	Year        int    `env:"radarr_movie_year"`         // 2021
	Path        string `env:"radarr_movie_path"`         // /movies/The French Dispatch (2021)
	IMDbID      string `env:"radarr_movie_imdbid"`       // tt8847712
	TMDbID      int64  `env:"radarr_movie_tmdbid"`       // 542178
	Size        int64  `env:"radarr_movie_folder_size"`  // 3593317970
	DeleteFiles string `env:"radarr_movie_deletedfiles"` // XXX: no example. Does this need a split?
}

RadarrMovieDelete is the MovieDelete event.

type RadarrMovieFileDelete

type RadarrMovieFileDelete struct {
	Reason         string `env:"radarr_moviefile_deletereason"`   // Upgrade
	FilePath       string `env:"radarr_moviefile_path"`           // /movies/The French Dispatch (2021)/The.French.Dispatch.2021.Bluray-720p.mkv
	SceneName      string `env:"radarr_moviefile_scenename"`      // The.French.Dispatch.2021.720p.BluRay.x264-WoAT
	IMDbID         string `env:"radarr_movie_imdbid"`             // tt8847712
	FileID         int64  `env:"radarr_moviefile_id"`             // 3531
	ReleaseGroup   string `env:"radarr_moviefile_releasegroup"`   // WoAT
	Year           int    `env:"radarr_movie_year"`               // 2021
	Path           string `env:"radarr_movie_path"`               // /movies/The French Dispatch (2021)
	RelativePath   string `env:"radarr_moviefile_relativepath"`   // The.French.Dispatch.2021.Bluray-720p.mkv
	Size           int64  `env:"radarr_moviefile_size"`           // 3593317970
	TMDbID         string `env:"radarr_movie_tmdbid"`             // 542178
	ID             int64  `env:"radarr_movie_id"`                 // 2173
	Quality        string `env:"radarr_moviefile_quality"`        // Bluray-720p
	Title          string `env:"radarr_movie_title"`              // The French Dispatch
	QualityVersion int64  `env:"radarr_moviefile_qualityversion"` // 1
}

RadarrMovieFileDelete is the MovieFileDelete event.

type RadarrRename

type RadarrRename struct {
	ID                    int64     `env:"radarr_movie_id"`              // 2173
	Year                  int       `env:"radarr_movie_year"`            // 2021
	Path                  string    `env:"radarr_movie_path"`            // /movies/The French Dispatch (2021)
	IMDbID                string    `env:"radarr_movie_imdbid"`          // tt8847712
	TMDbID                int64     `env:"radarr_movie_tmdbid"`          // 542178
	InCinemas             time.Time `env:"radarr_movie_in_cinemas_date"` // 11/22/2005 12:00:00 AM
	ReleaseDate           time.Time `env:"radarr_movie_physical_release_date"`
	FileIDs               []int64   `env:"radarr_moviefile_ids,,"`
	RelativePaths         []string  `env:"radarr_moviefile_relativepaths,|"`
	Paths                 []string  `env:"radarr_moviefile_paths,|"`
	PreviousRelativePaths []string  `env:"radarr_moviefile_previousrelativepaths,|"`
	PreviousPaths         []string  `env:"radarr_moviefile_previouspaths,|"`
}

RadarrRename is the Rename event.

type RadarrTest

type RadarrTest struct{}

RadarrTest has no members.

type ReadarrApplicationUpdate

type ReadarrApplicationUpdate struct {
	PreviousVersion string `env:"readarr_update_previousversion"` // 4.0.3.5875
	NewVersion      string `env:"readarr_update_newversion"`      // 4.0.4.5909
	Message         string `env:"readarr_update_message"`         // Readarr updated from 4.0.3.5875 to 4.0.4.5909
}

ReadarrApplicationUpdate is the ApplicationUpdate event.

type ReadarrAuthorDelete

type ReadarrAuthorDelete struct {
	AuthorID     int64  `env:"readarr_author_id"`           // author.Id.ToString())
	AuthorName   string `env:"readarr_author_name"`         // author.Name)
	Path         string `env:"readarr_author_path"`         // author.Path)
	AuthorGrID   int64  `env:"readarr_author_goodreadsid"`  // author.ForeignAuthorId)
	DeletedFiles bool   `env:"readarr_author_deletedfiles"` // deleteMessage.DeletedFiles.ToString())
}

ReadarrAuthorDelete is the AuthorDelete event.

type ReadarrBookDelete

type ReadarrBookDelete struct {
	AuthorName   string `env:"readarr_author_name"`        // Alyssa Cole
	GrID         int64  `env:"readarr_book_goodreadsid"`   // 88514853
	AuthorGrID   int64  `env:"readarr_author_goodreadsid"` // 7790155
	Title        string `env:"readarr_book_title"`         // Unti Cole #6: A Novel
	Path         string `env:"readarr_author_path"`        // /books/Alyssa Cole
	ID           int64  `env:"readarr_book_id"`            // 636
	DeletedFiles bool   `env:"readarr_book_deletedfiles"`  // True
	AuthorID     string `env:"readarr_author_id"`          // 33
}

ReadarrBookDelete is the BookDelete event.

type ReadarrBookFileDelete

type ReadarrBookFileDelete struct {
	Reason         string `env:"readarr_delete_reason"`                // deleteMessage.Reason.ToString())
	AuthorID       int64  `env:"readarr_author_id"`                    // author.Id.ToString())
	AuthorName     string `env:"readarr_author_name"`                  // author.Name)
	AuthorGrID     int64  `env:"readarr_author_goodreadsid"`           // author.ForeignAuthorId)
	ID             string `env:"readarr_book_id"`                      // book.Id.ToString())
	Title          string `env:"readarr_book_title"`                   // book.Title)
	GrID           int64  `env:"readarr_book_goodreadsid"`             // book.ForeignBookId)
	FileID         int64  `env:"readarr_bookfile_id"`                  // bookFile.Id.ToString())
	Path           string `env:"readarr_bookfile_path"`                // bookFile.Path)
	Quality        string `env:"readarr_bookfile_quality"`             // bookFile.Quality.Quality.Name)
	QualityVersion int64  `env:"readarr_bookfile_qualityversion"`      // bookFile.Quality.Revision.Version.ToString())
	ReleaseGroup   string `env:"readarr_bookfile_releasegroup"`        // bookFile.ReleaseGroup ?? string.Empty)
	SceneName      string `env:"readarr_bookfile_scenename"`           // bookFile.SceneName ?? string.Empty)
	EditionID      int64  `env:"readarr_bookfile_edition_id"`          // edition.Id.ToString())
	EditionName    string `env:"readarr_bookfile_edition_name"`        // edition.Title)
	EditionGrID    int64  `env:"readarr_bookfile_edition_goodreadsid"` // edition.ForeignEditionId)
	EditionISBN13  string `env:"readarr_bookfile_edition_isbn13"`      // edition.Isbn13)
	EditionASIN    string `env:"readarr_bookfile_edition_asin"`        // edition.Asin)
}

ReadarrBookFileDelete is the BookFileDelete event.

type ReadarrDownload

type ReadarrDownload struct {
	AuthorID       int64    `env:"readarr_author_id"`        // author.Id.ToString())
	AuthorName     string   `env:"readarr_author_name"`      // author.Metadata.Value.Name)
	Path           string   `env:"readarr_author_path"`      // author.Path)
	AuthorGrID     int64    `env:"readarr_author_grid"`      // author.Metadata.Value.ForeignAuthorId)
	ID             int64    `env:"readarr_book_id"`          // book.Id.ToString())
	Title          string   `env:"readarr_book_title"`       // book.Title)
	GrID           int64    `env:"readarr_book_grid"`        // book.Editions.Value.Single(e => e.Monitored).ForeignEditionId.ToString())
	ReleaseDate    string   `env:"readarr_book_releasedate"` // book.ReleaseDate.ToString())
	DownloadClient string   `env:"readarr_download_client"`  // message.DownloadClient ?? string.Empty)
	DownloadID     string   `env:"readarr_download_id"`      // message.DownloadId ?? string.Empty)
	AddedBookPaths []string `env:"readarr_addedbookpaths,|"` // string.Join("|", message.BookFiles.Select(e => e.Path)))
	DeletedPaths   []string `env:"readarr_deletedpaths,|"`   // string.Join("|", message.OldFiles.Select(e => e.Path)))
}

ReadarrDownload is Download event.

type ReadarrGrab

type ReadarrGrab struct {
	AuthorGRID     int64       `env:"readarr_author_grid"`                // 1077326
	ReleaseGroup   string      `env:"readarr_release_releasegroup"`       // BitBook
	AuthorName     string      `env:"readarr_author_name"`                // J.K. Rowling
	ReleaseTitle   string      `env:"readarr_release_title"`              // J K Rowling - Harry Potter and the Order of the Phoenix 2012 Retail EPUB eBook-BitBook
	GRIDs          string      `env:"readarr_release_grids"`              // 21175582 // not sure what this looks like with 2+
	DownloadClient string      `env:"readarr_download_client"`            // qBittorrent
	Size           int64       `env:"readarr_release_size"`               // 1279262
	QualityVersion string      `env:"readarr_release_qualityversion"`     // 1
	Titles         []string    `env:"readarr_release_booktitles,|"`       // Harry Potter and the Order of the Phoenix
	IDs            []int64     `env:"readarr_release_bookids,|"`          // 649
	ReleaseIndexer string      `env:"readarr_release_indexer"`            // InfoWars (Prowlarr)
	DownloadID     string      `env:"readarr_download_id"`                // 3852BA2204A84185B2B43281E53BE93D56DE5C81
	BookCount      int         `env:"readarr_release_bookcount"`          // 1
	ReleaseDates   []time.Time `env:"readarr_release_bookreleasedates,,"` // 07/10/2003 07:00:00
	Quality        string      `env:"readarr_release_quality"`            // EPUB
	AuthorID       int64       `env:"readarr_author_id"`                  // 4
}

ReadarrGrab is the Grab event.

type ReadarrHealthIssue

type ReadarrHealthIssue struct {
	Message   string `env:"readarr_health_issue_message"` // Lists unavailable due to failures: List name here
	IssueType string `env:"readarr_health_issue_type"`    // ImportListStatusCheck
	Wiki      string `env:"readarr_health_issue_wiki"`    // https://wiki.servarr.com/
	Level     string `env:"readarr_health_issue_level"`   // Warning
}

ReadarrHealthIssue is the HealthIssue event.

type ReadarrRename

type ReadarrRename struct {
	AuthorID   int64  `env:"readarr_author_id"`   // author.Id.ToString())
	AuthorName string `env:"readarr_author_name"` // author.Metadata.Value.Name)
	Path       string `env:"readarr_author_path"` // author.Path)
	AuthorGrID int64  `env:"readarr_author_grid"` // author.Metadata.Value.ForeignAuthorId)
}

ReadarrRename is the Rename event.

type ReadarrTest

type ReadarrTest struct{}

ReadarrTest has no members.

type ReadarrTrackRetag

type ReadarrTrackRetag struct {
	AuthorID       int64     `env:"readarr_author_id"`               // author.Id.ToString())
	AuthorName     string    `env:"readarr_author_name"`             // author.Metadata.Value.Name)
	Path           string    `env:"readarr_author_path"`             // author.Path)
	AuthorGrID     int64     `env:"readarr_author_grid"`             // author.Metadata.Value.ForeignAuthorId)
	ID             int64     `env:"readarr_book_id"`                 // book.Id.ToString())
	Title          string    `env:"readarr_book_title"`              // book.Title)
	GrID           int64     `env:"readarr_book_grid"`               // book.Editions.Value.Single(e => e.Monitored).ForeignEditionId.ToString())
	ReleaseDate    time.Time `env:"readarr_book_releasedate"`        // book.ReleaseDate.ToString())
	FileID         int64     `env:"readarr_bookfile_id"`             // bookFile.Id.ToString())
	FilePath       string    `env:"readarr_bookfile_path"`           // bookFile.Path)
	Quality        string    `env:"readarr_bookfile_quality"`        // bookFile.Quality.Quality.Name)
	QualityVersion int64     `env:"readarr_bookfile_qualityversion"` // bookFile.Quality.Revision.Version.ToString())
	ReleaseGroup   string    `env:"readarr_bookfile_releasegroup"`   // bookFile.ReleaseGroup ?? string.Empty)
	SceneName      string    `env:"readarr_bookfile_scenename"`      // bookFile.SceneName ?? string.Empty)
	TagsDiff       string    `env:"readarr_tags_diff"`               // message.Diff.ToJson())
	Scrubbed       bool      `env:"readarr_tags_scrubbed"`           // message.Scrubbed.ToString())
}

ReadarrTrackRetag is the TrackRetag event.

type SonarrApplicationUpdate

type SonarrApplicationUpdate struct {
	PreviousVersion string `env:"sonarr_update_previousversion"` // 4.0.3.5875
	NewVersion      string `env:"sonarr_update_newversion"`      // 4.0.4.5909
	Message         string `env:"sonarr_update_message"`         // Sonarr updated from 4.0.3.5875 to 4.0.4.5909
}

SonarrApplicationUpdate is the ApplicationUpdate event.

type SonarrDownload

type SonarrDownload struct {
	Title                string      `env:"sonarr_series_title"`                     // Puppy Dog Pals
	SeriesID             int64       `env:"sonarr_series_id"`                        // 108
	SourceFolder         string      `env:"sonarr_episodefile_sourcefolder"`         // /downloads/completed/Series/Puppy.Dog.Pals.S05E03e04.The.Puppy.Outdoor.Play.Day.Games.for.the.Glove.of.the.Game.HULU.WEB-DL.AAC2.0.H.264-LAZY
	QualityVersion       int64       `env:"sonarr_episodefile_qualityversion"`       // 1
	Quality              string      `env:"sonarr_episodefile_quality"`              // WEBDL-480p
	ReleaseGroup         string      `env:"sonarr_episodefile_releasegroup"`         // LAZY
	DownloadClient       string      `env:"sonarr_download_client"`                  // NZBGET
	EpisodePath          string      `env:"sonarr_episodefile_path"`                 // /tv/Puppy Dog Pals/Season 5/Puppy Dog Pals - S05E03-04 - The Puppy Outdoor Play Day Games + For the Glove of the Game WEBDL-480p.mkv
	EpisodeIDs           []int64     `env:"sonarr_episodefile_episodeids,,"`         // 22691,22692
	SceneName            string      `env:"sonarr_episodefile_scenename"`            // Puppy.Dog.Pals.S05E03e04.The.Puppy.Outdoor.Play.Day.Games.for.the.Glove.of.the.Game.HULU.WEB-DL.AAC2.0.H.264-LAZY
	EpisodeNumbers       []int       `env:"sonarr_episodefile_episodenumbers,,"`     // 3,4
	Path                 string      `env:"sonarr_series_path"`                      // /tv/Puppy Dog Pals
	FileID               int64       `env:"sonarr_episodefile_id"`                   // 14996
	SourcePath           string      `env:"sonarr_episodefile_sourcepath"`           // /downloads/completed/Series/Puppy.Dog.Pals.S05E03e04.The.Puppy.Outdoor.Play.Day.Games.for.the.Glove.of.the.Game.HULU.WEB-DL.AAC2.0.H.264-LAZY/9ZMAepAkHwQsOn.mkv
	EpisodeAirDates      []string    `env:"sonarr_episodefile_episodeairdates,,"`    // 2022-01-21,2022-01-21
	DownloadID           string      `env:"sonarr_download_id"`                      // 977d4bd4ac3845c0a2d5c890cc5a10e4
	SeriesType           string      `env:"sonarr_series_type"`                      // Standard
	TVDbID               int64       `env:"sonarr_series_tvdbid"`                    // 325978
	TVMazeID             int64       `env:"sonarr_series_tvmazeid"`                  // 26341
	EpisodeCount         int         `env:"sonarr_episodefile_episodecount"`         // 2
	SeasonNumber         int         `env:"sonarr_episodefile_seasonnumber"`         // 5
	EpisodeTitles        []string    `env:"sonarr_episodefile_episodetitles,|"`      // The Puppy Outdoor Play Day Games|For the Glove of the Game
	IMDbID               string      `env:"sonarr_series_imdbid"`                    // tt6688750
	EpisodeAirDatesUTC   []time.Time `env:"sonarr_episodefile_episodeairdatesutc,,"` // 1/21/2022 2:00:00 PM,1/21/2022 2:12:00 PM
	RelativePath         string      `env:"sonarr_episodefile_relativepath"`         // Season 5/Puppy Dog Pals - S05E03-04 - The Puppy Outdoor Play Day Games + For the Glove of the Game WEBDL-480p.mkv
	IsUpgrade            bool        `env:"sonarr_isupgrade"`                        // False
	DeletedRelativePaths []string    `env:"sonarr_deletedrelativepaths,|"`           // Not always present.
	DeletedPaths         []string    `env:"sonarr_deletedpaths,|"`                   // Not always present.
}

SonarrDownload is the Download event.

type SonarrEpisodeFileDelete

type SonarrEpisodeFileDelete struct {
	Reason             string      `env:"sonarr_episodefile_deletereason"`         // deleteMessage.Reason.ToString())
	ID                 int64       `env:"sonarr_series_id"`                        // series.Id.ToString())
	Title              string      `env:"sonarr_series_title"`                     // series.Title)
	Path               string      `env:"sonarr_series_path"`                      // series.Path)
	TVDbID             int64       `env:"sonarr_series_tvdbid"`                    // series.TvdbId.ToString())
	TVMazeID           int64       `env:"sonarr_series_tvmazeid"`                  // series.TvMazeId.ToString())
	IMDbID             string      `env:"sonarr_series_imdbid"`                    // series.ImdbId ?? string.Empty)
	SeriesType         string      `env:"sonarr_series_type"`                      // series.SeriesType.ToString())
	FileID             int64       `env:"sonarr_episodefile_id"`                   // episodeFile.Id.ToString())
	EpisodeCount       int         `env:"sonarr_episodefile_episodecount"`         // episodeFile.Episodes.Value.Count.ToString())
	RelativePath       string      `env:"sonarr_episodefile_relativepath"`         // episodeFile.RelativePath)
	FilePath           string      `env:"sonarr_episodefile_path"`                 // Path.Combine(series.Path, episodeFile.RelativePath))
	EpisodeIDs         []int64     `env:"sonarr_episodefile_episodeids,,"`         // string.Join(",", episodeFile.Episodes.Value.Select(e => e.Id)))
	SeasonNumber       string      `env:"sonarr_episodefile_seasonnumber"`         // episodeFile.SeasonNumber.ToString())
	EpisodeNumbers     []int       `env:"sonarr_episodefile_episodenumbers,,"`     // string.Join(",", episodeFile.Episodes.Value.Select(e => e.EpisodeNumber)))
	EpisodeAirDates    []string    `env:"sonarr_episodefile_episodeairdates,,"`    // string.Join(",", episodeFile.Episodes.Value.Select(e => e.AirDate)))
	EpisodeAirDatesUTC []time.Time `env:"sonarr_episodefile_episodeairdatesutc,,"` // string.Join(",", episodeFile.Episodes.Value.Select(e => e.AirDateUtc)))
	EpisodeTitles      []string    `env:"sonarr_episodefile_episodetitles,|"`      // string.Join("|", episodeFile.Episodes.Value.Select(e => e.Title)))
	Quality            string      `env:"sonarr_episodefile_quality"`              // episodeFile.Quality.Quality.Name)
	QualityVersion     string      `env:"sonarr_episodefile_qualityversion"`       // episodeFile.Quality.Revision.Version.ToString())
	ReleaseGroup       string      `env:"sonarr_episodefile_releasegroup"`         // episodeFile.ReleaseGroup ?? string.Empty)
	SceneName          string      `env:"sonarr_episodefile_scenename"`            // episodeFile.SceneName ?? string.Empty)
}

SonarrEpisodeFileDelete is the EpisodeFileDelete event.

type SonarrGrab

type SonarrGrab struct {
	Quality            string      `env:"sonarr_release_quality"`                  // HDTV-720p
	Title              string      `env:"sonarr_series_title"`                     // This Is Us
	QualityVersion     int64       `env:"sonarr_release_qualityversion"`           // 1
	SeriesID           int64       `env:"sonarr_series_id"`                        // 47
	EpisodeNumbers     []int       `env:"sonarr_release_episodenumbers,,"`         // 4
	EpisodeCount       int         `env:"sonarr_release_episodecount"`             // 1
	DownloadClient     string      `env:"sonarr_download_client"`                  // NZBGet
	EpisodeAirDates    []string    `env:"sonarr_release_episodeairdates,,"`        // 2022-01-25
	EpisodeTitles      []string    `env:"sonarr_release_episodetitles,|"`          // Don't Let Me Keep You
	ReleaseTitle       string      `env:"sonarr_release_title"`                    // This.is.Us.S06E04.720p.HDTV.x264-SYNCOPY
	DownloadID         string      `env:"sonarr_download_id"`                      // a87bda3c0e7f40a1b8fa011b421a5201
	ReleaseIndexer     string      `env:"sonarr_release_indexer"`                  // Indexor (Prowlarr)
	SeriesType         string      `env:"sonarr_series_type"`                      // Standard
	Size               int64       `env:"sonarr_release_size"`                     // 885369406
	TVDbID             int64       `env:"sonarr_series_tvdbid"`                    // 311714
	TVMazeID           int64       `env:"sonarr_series_tvmazeid"`                  // 17128
	ReleaseGroup       string      `env:"sonarr_release_releasegroup"`             // SYNCOPY
	SeasonNumber       int         `env:"sonarr_release_seasonnumber"`             // 6
	AbsEpisodeNumbers  []int       `env:"sonarr_release_absoluteepisodenumbers,,"` // 92
	IMDbID             string      `env:"sonarr_series_imdbid"`                    // tt5555260
	EpisodeAirDatesUTC []time.Time `env:"sonarr_release_episodeairdatesutc,,"`     // 1/26/2022 2:00:00 AM
}

SonarrGrab is the Grab event.

type SonarrHealthIssue

type SonarrHealthIssue struct {
	Message   string `env:"sonarr_health_issue_message"` // Lists unavailable due to failures: Listnamehere
	IssueType string `env:"sonarr_health_issue_type"`    // ImportListStatusCheck
	Wiki      string `env:"sonarr_health_issue_wiki"`    // https://wiki.servarr.com/
	Level     string `env:"sonarr_health_issue_level"`   // Warning
}

SonarrHealthIssue is the HealthIssue event.

type SonarrRename

type SonarrRename struct {
	ID                    int64    `env:"sonarr_series_id"`                           // series.Id.ToString())
	Title                 string   `env:"sonarr_series_title"`                        // series.Title)
	Path                  string   `env:"sonarr_series_path"`                         // series.Path)
	TVDbID                int64    `env:"sonarr_series_tvdbid"`                       // series.TvdbId.ToString())
	TVMazeID              int64    `env:"sonarr_series_tvmazeid"`                     // series.TvMazeId.ToString())
	IMDbID                string   `env:"sonarr_series_imdbid"`                       // series.ImdbId ?? string.Empty)
	SeriesType            string   `env:"sonarr_series_type"`                         // series.SeriesType.ToString())
	FileIDs               []int64  `env:"sonarr_episodefile_ids,,"`                   // string.Join(",", renamedFiles.Select(e => e.EpisodeFile.Id)))
	RelativePaths         []string `env:"sonarr_episodefile_relativepaths,|"`         // string.Join("|", renamedFiles.Select(e => e.EpisodeFile.RelativePath)))
	Paths                 []string `env:"sonarr_episodefile_paths,|"`                 // string.Join("|", renamedFiles.Select(e => e.EpisodeFile.Path)))
	PreviousRelativePaths []string `env:"sonarr_episodefile_previousrelativepaths,|"` // string.Join("|", renamedFiles.Select(e => e.PreviousRelativePath)))
	PreviousPaths         []string `env:"sonarr_episodefile_previouspaths,|"`         // string.Join("|", renamedFiles.Select(e => e.PreviousPath)))
}

SonarrRename is the Rename event.

type SonarrSeriesDelete

type SonarrSeriesDelete struct {
	ID           int64  `env:"sonarr_series_id"`           // series.Id.ToString())
	Title        string `env:"sonarr_series_title"`        // series.Title)
	Path         string `env:"sonarr_series_path"`         // series.Path)
	TVDbID       int64  `env:"sonarr_series_tvdbid"`       // series.TvdbId.ToString())
	TVMazeID     int64  `env:"sonarr_series_tvmazeid"`     // series.TvMazeId.ToString())
	IMDbID       string `env:"sonarr_series_imdbid"`       // series.ImdbId ?? string.Empty)
	SeriesType   string `env:"sonarr_series_type"`         // series.SeriesType.ToString())
	DeletedFiles string `env:"sonarr_series_deletedfiles"` // deleteMessage.DeletedFiles.ToString())
}

SonarrSeriesDelete is the SeriesDelete event.

type SonarrTest

type SonarrTest struct{}

SonarrTest has no members.

Jump to

Keyboard shortcuts

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