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 }