golift.io/starr@v1.0.0/starrcmd/sonarr.go (about)

     1  //nolint:lll
     2  package starrcmd
     3  
     4  /*
     5  All events accounted for; 1/30/2022.
     6  https://github.com/Sonarr/Sonarr/blob/develop/src/NzbDrone.Core/Notifications/CustomScript/CustomScript.cs
     7  */
     8  
     9  import (
    10  	"time"
    11  )
    12  
    13  // SonarrApplicationUpdate is the ApplicationUpdate event.
    14  type SonarrApplicationUpdate struct {
    15  	PreviousVersion string `env:"sonarr_update_previousversion"` // 4.0.3.5875
    16  	NewVersion      string `env:"sonarr_update_newversion"`      // 4.0.4.5909
    17  	Message         string `env:"sonarr_update_message"`         // Sonarr updated from 4.0.3.5875 to 4.0.4.5909
    18  }
    19  
    20  // SonarrHealthIssue is the HealthIssue event.
    21  type SonarrHealthIssue struct {
    22  	Message   string `env:"sonarr_health_issue_message"` // Lists unavailable due to failures: Listnamehere
    23  	IssueType string `env:"sonarr_health_issue_type"`    // ImportListStatusCheck
    24  	Wiki      string `env:"sonarr_health_issue_wiki"`    // https://wiki.servarr.com/
    25  	Level     string `env:"sonarr_health_issue_level"`   // Warning
    26  }
    27  
    28  // SonarrGrab is the Grab event.
    29  type SonarrGrab struct {
    30  	Quality            string      `env:"sonarr_release_quality"`                  // HDTV-720p
    31  	Title              string      `env:"sonarr_series_title"`                     // This Is Us
    32  	QualityVersion     int64       `env:"sonarr_release_qualityversion"`           // 1
    33  	SeriesID           int64       `env:"sonarr_series_id"`                        // 47
    34  	EpisodeNumbers     []int       `env:"sonarr_release_episodenumbers,,"`         // 4
    35  	EpisodeCount       int         `env:"sonarr_release_episodecount"`             // 1
    36  	DownloadClient     string      `env:"sonarr_download_client"`                  // NZBGet
    37  	EpisodeAirDates    []string    `env:"sonarr_release_episodeairdates,,"`        // 2022-01-25
    38  	EpisodeTitles      []string    `env:"sonarr_release_episodetitles,|"`          // Don't Let Me Keep You
    39  	ReleaseTitle       string      `env:"sonarr_release_title"`                    // This.is.Us.S06E04.720p.HDTV.x264-SYNCOPY
    40  	DownloadID         string      `env:"sonarr_download_id"`                      // a87bda3c0e7f40a1b8fa011b421a5201
    41  	ReleaseIndexer     string      `env:"sonarr_release_indexer"`                  // Indexor (Prowlarr)
    42  	SeriesType         string      `env:"sonarr_series_type"`                      // Standard
    43  	Size               int64       `env:"sonarr_release_size"`                     // 885369406
    44  	TVDbID             int64       `env:"sonarr_series_tvdbid"`                    // 311714
    45  	TVMazeID           int64       `env:"sonarr_series_tvmazeid"`                  // 17128
    46  	ReleaseGroup       string      `env:"sonarr_release_releasegroup"`             // SYNCOPY
    47  	SeasonNumber       int         `env:"sonarr_release_seasonnumber"`             // 6
    48  	AbsEpisodeNumbers  []int       `env:"sonarr_release_absoluteepisodenumbers,,"` // 92
    49  	IMDbID             string      `env:"sonarr_series_imdbid"`                    // tt5555260
    50  	EpisodeAirDatesUTC []time.Time `env:"sonarr_release_episodeairdatesutc,,"`     // 1/26/2022 2:00:00 AM
    51  }
    52  
    53  // SonarrDownload is the Download event.
    54  type SonarrDownload struct {
    55  	Title                string      `env:"sonarr_series_title"`                     // Puppy Dog Pals
    56  	SeriesID             int64       `env:"sonarr_series_id"`                        // 108
    57  	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
    58  	QualityVersion       int64       `env:"sonarr_episodefile_qualityversion"`       // 1
    59  	Quality              string      `env:"sonarr_episodefile_quality"`              // WEBDL-480p
    60  	ReleaseGroup         string      `env:"sonarr_episodefile_releasegroup"`         // LAZY
    61  	DownloadClient       string      `env:"sonarr_download_client"`                  // NZBGET
    62  	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
    63  	EpisodeIDs           []int64     `env:"sonarr_episodefile_episodeids,,"`         // 22691,22692
    64  	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
    65  	EpisodeNumbers       []int       `env:"sonarr_episodefile_episodenumbers,,"`     // 3,4
    66  	Path                 string      `env:"sonarr_series_path"`                      // /tv/Puppy Dog Pals
    67  	FileID               int64       `env:"sonarr_episodefile_id"`                   // 14996
    68  	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
    69  	EpisodeAirDates      []string    `env:"sonarr_episodefile_episodeairdates,,"`    // 2022-01-21,2022-01-21
    70  	DownloadID           string      `env:"sonarr_download_id"`                      // 977d4bd4ac3845c0a2d5c890cc5a10e4
    71  	SeriesType           string      `env:"sonarr_series_type"`                      // Standard
    72  	TVDbID               int64       `env:"sonarr_series_tvdbid"`                    // 325978
    73  	TVMazeID             int64       `env:"sonarr_series_tvmazeid"`                  // 26341
    74  	EpisodeCount         int         `env:"sonarr_episodefile_episodecount"`         // 2
    75  	SeasonNumber         int         `env:"sonarr_episodefile_seasonnumber"`         // 5
    76  	EpisodeTitles        []string    `env:"sonarr_episodefile_episodetitles,|"`      // The Puppy Outdoor Play Day Games|For the Glove of the Game
    77  	IMDbID               string      `env:"sonarr_series_imdbid"`                    // tt6688750
    78  	EpisodeAirDatesUTC   []time.Time `env:"sonarr_episodefile_episodeairdatesutc,,"` // 1/21/2022 2:00:00 PM,1/21/2022 2:12:00 PM
    79  	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
    80  	IsUpgrade            bool        `env:"sonarr_isupgrade"`                        // False
    81  	DeletedRelativePaths []string    `env:"sonarr_deletedrelativepaths,|"`           // Not always present.
    82  	DeletedPaths         []string    `env:"sonarr_deletedpaths,|"`                   // Not always present.
    83  }
    84  
    85  // SonarrRename is the Rename event.
    86  type SonarrRename struct {
    87  	ID                    int64    `env:"sonarr_series_id"`                           // series.Id.ToString())
    88  	Title                 string   `env:"sonarr_series_title"`                        // series.Title)
    89  	Path                  string   `env:"sonarr_series_path"`                         // series.Path)
    90  	TVDbID                int64    `env:"sonarr_series_tvdbid"`                       // series.TvdbId.ToString())
    91  	TVMazeID              int64    `env:"sonarr_series_tvmazeid"`                     // series.TvMazeId.ToString())
    92  	IMDbID                string   `env:"sonarr_series_imdbid"`                       // series.ImdbId ?? string.Empty)
    93  	SeriesType            string   `env:"sonarr_series_type"`                         // series.SeriesType.ToString())
    94  	FileIDs               []int64  `env:"sonarr_episodefile_ids,,"`                   // string.Join(",", renamedFiles.Select(e => e.EpisodeFile.Id)))
    95  	RelativePaths         []string `env:"sonarr_episodefile_relativepaths,|"`         // string.Join("|", renamedFiles.Select(e => e.EpisodeFile.RelativePath)))
    96  	Paths                 []string `env:"sonarr_episodefile_paths,|"`                 // string.Join("|", renamedFiles.Select(e => e.EpisodeFile.Path)))
    97  	PreviousRelativePaths []string `env:"sonarr_episodefile_previousrelativepaths,|"` // string.Join("|", renamedFiles.Select(e => e.PreviousRelativePath)))
    98  	PreviousPaths         []string `env:"sonarr_episodefile_previouspaths,|"`         // string.Join("|", renamedFiles.Select(e => e.PreviousPath)))
    99  }
   100  
   101  // SonarrSeriesDelete is the SeriesDelete event.
   102  type SonarrSeriesDelete struct {
   103  	ID           int64  `env:"sonarr_series_id"`           // series.Id.ToString())
   104  	Title        string `env:"sonarr_series_title"`        // series.Title)
   105  	Path         string `env:"sonarr_series_path"`         // series.Path)
   106  	TVDbID       int64  `env:"sonarr_series_tvdbid"`       // series.TvdbId.ToString())
   107  	TVMazeID     int64  `env:"sonarr_series_tvmazeid"`     // series.TvMazeId.ToString())
   108  	IMDbID       string `env:"sonarr_series_imdbid"`       // series.ImdbId ?? string.Empty)
   109  	SeriesType   string `env:"sonarr_series_type"`         // series.SeriesType.ToString())
   110  	DeletedFiles string `env:"sonarr_series_deletedfiles"` // deleteMessage.DeletedFiles.ToString())
   111  }
   112  
   113  // SonarrEpisodeFileDelete is the EpisodeFileDelete event.
   114  type SonarrEpisodeFileDelete struct {
   115  	Reason             string      `env:"sonarr_episodefile_deletereason"`         // deleteMessage.Reason.ToString())
   116  	ID                 int64       `env:"sonarr_series_id"`                        // series.Id.ToString())
   117  	Title              string      `env:"sonarr_series_title"`                     // series.Title)
   118  	Path               string      `env:"sonarr_series_path"`                      // series.Path)
   119  	TVDbID             int64       `env:"sonarr_series_tvdbid"`                    // series.TvdbId.ToString())
   120  	TVMazeID           int64       `env:"sonarr_series_tvmazeid"`                  // series.TvMazeId.ToString())
   121  	IMDbID             string      `env:"sonarr_series_imdbid"`                    // series.ImdbId ?? string.Empty)
   122  	SeriesType         string      `env:"sonarr_series_type"`                      // series.SeriesType.ToString())
   123  	FileID             int64       `env:"sonarr_episodefile_id"`                   // episodeFile.Id.ToString())
   124  	EpisodeCount       int         `env:"sonarr_episodefile_episodecount"`         // episodeFile.Episodes.Value.Count.ToString())
   125  	RelativePath       string      `env:"sonarr_episodefile_relativepath"`         // episodeFile.RelativePath)
   126  	FilePath           string      `env:"sonarr_episodefile_path"`                 // Path.Combine(series.Path, episodeFile.RelativePath))
   127  	EpisodeIDs         []int64     `env:"sonarr_episodefile_episodeids,,"`         // string.Join(",", episodeFile.Episodes.Value.Select(e => e.Id)))
   128  	SeasonNumber       string      `env:"sonarr_episodefile_seasonnumber"`         // episodeFile.SeasonNumber.ToString())
   129  	EpisodeNumbers     []int       `env:"sonarr_episodefile_episodenumbers,,"`     // string.Join(",", episodeFile.Episodes.Value.Select(e => e.EpisodeNumber)))
   130  	EpisodeAirDates    []string    `env:"sonarr_episodefile_episodeairdates,,"`    // string.Join(",", episodeFile.Episodes.Value.Select(e => e.AirDate)))
   131  	EpisodeAirDatesUTC []time.Time `env:"sonarr_episodefile_episodeairdatesutc,,"` // string.Join(",", episodeFile.Episodes.Value.Select(e => e.AirDateUtc)))
   132  	EpisodeTitles      []string    `env:"sonarr_episodefile_episodetitles,|"`      // string.Join("|", episodeFile.Episodes.Value.Select(e => e.Title)))
   133  	Quality            string      `env:"sonarr_episodefile_quality"`              // episodeFile.Quality.Quality.Name)
   134  	QualityVersion     string      `env:"sonarr_episodefile_qualityversion"`       // episodeFile.Quality.Revision.Version.ToString())
   135  	ReleaseGroup       string      `env:"sonarr_episodefile_releasegroup"`         // episodeFile.ReleaseGroup ?? string.Empty)
   136  	SceneName          string      `env:"sonarr_episodefile_scenename"`            // episodeFile.SceneName ?? string.Empty)
   137  }
   138  
   139  // SonarrTest has no members.
   140  type SonarrTest struct{}
   141  
   142  // GetSonarrApplicationUpdate returns the ApplicationUpdate event data.
   143  func (c *CmdEvent) GetSonarrApplicationUpdate() (output SonarrApplicationUpdate, err error) {
   144  	return output, c.get(EventApplicationUpdate, &output)
   145  }
   146  
   147  // GetSonarrHealthIssue returns the ApplicationUpdate event data.
   148  func (c *CmdEvent) GetSonarrHealthIssue() (output SonarrHealthIssue, err error) {
   149  	return output, c.get(EventHealthIssue, &output)
   150  }
   151  
   152  // GetSonarrTest returns the ApplicationUpdate event data.
   153  func (c *CmdEvent) GetSonarrTest() (output SonarrTest, err error) {
   154  	return output, c.get(EventTest, &output)
   155  }
   156  
   157  // GetSonarrGrab returns the Grab event data.
   158  func (c *CmdEvent) GetSonarrGrab() (output SonarrGrab, err error) {
   159  	return output, c.get(EventGrab, &output)
   160  }
   161  
   162  // GetSonarrDownload returns the Download event data.
   163  func (c *CmdEvent) GetSonarrDownload() (output SonarrDownload, err error) {
   164  	return output, c.get(EventDownload, &output)
   165  }
   166  
   167  // GetSonarrRename returns the Rename event data.
   168  func (c *CmdEvent) GetSonarrRename() (output SonarrRename, err error) {
   169  	return output, c.get(EventRename, &output)
   170  }
   171  
   172  // GetSonarrSeriesDelete returns the SeriesDelete event data.
   173  func (c *CmdEvent) GetSonarrSeriesDelete() (output SonarrSeriesDelete, err error) {
   174  	return output, c.get(EventSeriesDelete, &output)
   175  }
   176  
   177  // GetSonarrEpisodeFileDelete returns the EpisodeFileDelete event data.
   178  func (c *CmdEvent) GetSonarrEpisodeFileDelete() (output SonarrEpisodeFileDelete, err error) {
   179  	return output, c.get(EventEpisodeFileDelete, &output)
   180  }