Example #1
0
        public override void OnReleaseImport(AlbumDownloadMessage message)
        {
            const string header = "Gamearr - Downloaded";

            Notify(Settings, header, message.Message);
            Update();
        }
Example #2
0
        public override void OnReleaseImport(AlbumDownloadMessage message)
        {
            var artist    = message.Artist;
            var album     = message.Album;
            var release   = message.Release;
            var variables = new StringDictionary();

            variables.Add("Lidarr_EventType", "Download");
            variables.Add("Lidarr_Artist_Id", artist.Id.ToString());
            variables.Add("Lidarr_Artist_Name", artist.Metadata.Value.Name);
            variables.Add("Lidarr_Artist_Path", artist.Path);
            variables.Add("Lidarr_Artist_MBId", artist.Metadata.Value.ForeignArtistId);
            variables.Add("Lidarr_Artist_Type", artist.Metadata.Value.Type);
            variables.Add("Lidarr_Album_Id", album.Id.ToString());
            variables.Add("Lidarr_Album_Title", album.Title);
            variables.Add("Lidarr_Album_MBId", album.ForeignAlbumId);
            variables.Add("Lidarr_AlbumRelease_MBId", release.ForeignReleaseId);
            variables.Add("Lidarr_Album_ReleaseDate", album.ReleaseDate.ToString());
            variables.Add("Lidarr_Download_Client", message.DownloadClient ?? string.Empty);
            variables.Add("Lidarr_Download_Id", message.DownloadId ?? string.Empty);

            if (message.TrackFiles.Any())
            {
                variables.Add("Lidarr_AddedTrackPaths", string.Join("|", message.TrackFiles.Select(e => e.Path)));
            }

            if (message.OldFiles.Any())
            {
                variables.Add("Lidarr_DeletedPaths", string.Join("|", message.OldFiles.Select(e => e.Path)));
            }

            _proxy.SendNotification(variables, Settings);
        }
Example #3
0
        public override void OnReleaseImport(AlbumDownloadMessage message)
        {
            const string header = "Gamearr - Downloaded";

            Notify(Settings, header, message.Message);
            UpdateAndClean(message.Artist, message.OldFiles.Any());
        }
Example #4
0
        public override void OnReleaseImport(AlbumDownloadMessage message)
        {
            if (Settings.Notify)
            {
                _mediaBrowserService.Notify(Settings, ALBUM_DOWNLOADED_TITLE_BRANDED, message.Message);
            }

            if (Settings.UpdateLibrary)
            {
                _mediaBrowserService.Update(Settings, message.Artist);
            }
        }
Example #5
0
        public override void OnImportFailure(AlbumDownloadMessage message)
        {
            var attachments = new List <Attachment>
            {
                new Attachment
                {
                    Fallback = message.Message,
                    Text     = message.Message,
                    Color    = "warning"
                }
            };
            var payload = CreatePayload($"Import Failed: {message.Message}", attachments);

            _proxy.SendPayload(payload, Settings);
        }
Example #6
0
        public override void OnReleaseImport(AlbumDownloadMessage message)
        {
            var attachments = new List <Attachment>
            {
                new Attachment
                {
                    Fallback = message.Message,
                    Title    = message.Artist.Name,
                    Text     = message.Message,
                    Color    = "good"
                }
            };
            var payload = CreatePayload($"Imported: {message.Message}", attachments);

            _proxy.SendPayload(payload, Settings);
        }
Example #7
0
        public override void OnImportFailure(AlbumDownloadMessage message)
        {
            var attachments = new List <Embed>
            {
                new Embed
                {
                    Description = message.Message,
                    Title       = message.Album.Title,
                    Text        = message.Message,
                    Color       = (int)DiscordColors.Warning
                }
            };
            var payload = CreatePayload($"Import Failed: {message.Message}", attachments);

            _proxy.SendPayload(payload, Settings);
        }
Example #8
0
        public override void OnReleaseImport(AlbumDownloadMessage message)
        {
            var attachments = new List <Embed>
            {
                new Embed
                {
                    Description = message.Message,
                    Title       = message.Artist.Name,
                    Text        = message.Message,
                    Color       = (int)DiscordColors.Success
                }
            };
            var payload = CreatePayload($"Imported: {message.Message}", attachments);

            _proxy.SendPayload(payload, Settings);
        }
Example #9
0
        public override void OnReleaseImport(AlbumDownloadMessage message)
        {
            if (Settings.UpdateLibrary)
            {
                foreach (var oldFile in message.OldFiles)
                {
                    var fullPath = oldFile.Path;

                    _indexerProxy.DeleteFile(fullPath);
                }

                foreach (var newFile in message.TrackFiles)
                {
                    var fullPath = newFile.Path;

                    _indexerProxy.AddFile(fullPath);
                }
            }
        }
Example #10
0
        public override void OnImportFailure(AlbumDownloadMessage message)
        {
            var attachments = new List <Embed>
            {
                new Embed
                {
                    Author = new DiscordAuthor
                    {
                        Name    = Settings.Author.IsNullOrWhiteSpace() ? Environment.MachineName : Settings.Author,
                        IconUrl = "https://raw.githubusercontent.com/lidarr/Lidarr/develop/Logo/256.png"
                    },
                    Description = message.Message,
                    Title       = message.Album?.Title ?? message.Message,
                    Text        = message.Message,
                    Color       = (int)DiscordColors.Warning
                }
            };
            var payload = CreatePayload($"Import Failed: {message.Message}", attachments);

            _proxy.SendPayload(payload, Settings);
        }
Example #11
0
        public void SetUp()
        {
            _artist = new Artist()
            {
                Path = rootPath,
            };

            _upgrade = new AlbumDownloadMessage()
            {
                Artist = _artist,

                TrackFiles = new List <TrackFile>
                {
                    new TrackFile
                    {
                        Path = Path.Combine(rootPath, "file1.S01E01E02.mkv")
                    }
                },

                OldFiles = new List <TrackFile>
                {
                    new TrackFile
                    {
                        Path = Path.Combine(rootPath, "file1.S01E01.mkv")
                    },
                    new TrackFile
                    {
                        Path = Path.Combine(rootPath, "file1.S01E02.mkv")
                    }
                }
            };

            Subject.Definition = new NotificationDefinition
            {
                Settings = new SynologyIndexerSettings
                {
                    UpdateLibrary = true
                }
            };
        }
Example #12
0
        public override void OnReleaseImport(AlbumDownloadMessage message)
        {
            var trackFiles = message.TrackFiles;

            var payload = new WebhookImportPayload

            {
                EventType = "Download",
                Artist    = new WebhookArtist(message.Artist),
                Tracks    = trackFiles.SelectMany(x => x.Tracks.Value.Select(y => new WebhookTrack(y)
                {
                    // TODO: Stop passing these parameters inside an episode v3
                    Quality        = x.Quality.Quality.Name,
                    QualityVersion = x.Quality.Revision.Version,
                    ReleaseGroup   = x.ReleaseGroup
                })).ToList(),
                TrackFiles = trackFiles.ConvertAll(x => new WebhookTrackFile(x)),
                IsUpgrade  = message.OldFiles.Any()
            };

            _proxy.SendWebhook(payload, Settings);
        }
        public void Setup()
        {
            var artist = Builder <Artist> .CreateNew()
                         .Build();

            var trackFile = Builder <TrackFile> .CreateNew()
                            .Build();

            _albumDownloadMessage = Builder <AlbumDownloadMessage> .CreateNew()
                                    .With(d => d.Artist     = artist)
                                    .With(d => d.TrackFiles = new List <TrackFile> {
                trackFile
            })
                                    .With(d => d.OldFiles = new List <TrackFile>())
                                    .Build();

            Subject.Definition          = new NotificationDefinition();
            Subject.Definition.Settings = new XbmcSettings
            {
                UpdateLibrary = true
            };
        }
Example #14
0
 public override void OnReleaseImport(AlbumDownloadMessage message)
 {
     _growlService.SendNotification(ALBUM_DOWNLOADED_TITLE, message.Message, "ALBUMDOWNLOAD", Settings.Host, Settings.Port, Settings.Password);
 }
Example #15
0
        public override void OnReleaseImport(AlbumDownloadMessage message)
        {
            var body = $"{message.Message} Downloaded and sorted.";

            _emailService.SendEmail(Settings, ALBUM_DOWNLOADED_TITLE_BRANDED, body);
        }
Example #16
0
 public override void OnImportFailure(AlbumDownloadMessage message)
 {
     _proxy.SendNotification(IMPORT_FAILURE_TITLE, message.Message, Settings);
 }
Example #17
0
 public override void OnReleaseImport(AlbumDownloadMessage message)
 {
     _proxy.SendNotification(ALBUM_DOWNLOADED_TITLE, message.Message, Settings);
 }
Example #18
0
 public override void OnImportFailure(AlbumDownloadMessage message)
 {
     _emailService.SendEmail(Settings, IMPORT_FAILURE_TITLE_BRANDED, message.Message);
 }
Example #19
0
 public override void OnReleaseImport(AlbumDownloadMessage message)
 {
     Notify(ALBUM_DOWNLOADED_TITLE_BRANDED, message.Message);
 }
Example #20
0
 public override void OnReleaseImport(AlbumDownloadMessage message)
 {
     _prowlService.SendNotification(ALBUM_DOWNLOADED_TITLE, message.Message, Settings.ApiKey, (NotificationPriority)Settings.Priority);
 }
Example #21
0
 public override void OnReleaseImport(AlbumDownloadMessage message)
 {
     TestLogger.Info("OnAlbumDownload was called");
 }
Example #22
0
 public override void OnImportFailure(AlbumDownloadMessage message)
 {
     TestLogger.Info("OnImportFailure was called");
 }
Example #23
0
 public override void OnReleaseImport(AlbumDownloadMessage message)
 {
     UpdateIfEnabled(message.Artist);
 }
Example #24
0
 public override void OnImportFailure(AlbumDownloadMessage message)
 {
     _twitterService.SendNotification($"Import Failed: {message.Message}", Settings);
 }
Example #25
0
 public override void OnReleaseImport(AlbumDownloadMessage message)
 {
     _plexClientService.Notify(Settings, ALBUM_DOWNLOADED_TITLE_BRANDED, message.Message);
 }
Example #26
0
 public override void OnImportFailure(AlbumDownloadMessage message)
 {
     _growlService.SendNotification(IMPORT_FAILURE_TITLE, message.Message, "IMPORTFAILURE", Settings.Host, Settings.Port, Settings.Password);
 }
Example #27
0
        public override void OnReleaseImport(AlbumDownloadMessage message)
        {
            var artist         = message.Artist;
            var artistMetadata = message.Artist.Metadata.Value;
            var album          = message.Album;
            var episodes       = message.TrackFiles;
            var isUpgrade      = message.OldFiles.Count > 0;

            var embed = new Embed
            {
                Author = new DiscordAuthor
                {
                    Name    = Settings.Author.IsNullOrWhiteSpace() ? Environment.MachineName : Settings.Author,
                    IconUrl = "https://raw.githubusercontent.com/lidarr/Lidarr/develop/Logo/256.png"
                },
                Url         = $"https://musicbrainz.org/artist/{artist.ForeignArtistId}",
                Description = isUpgrade ? "Album Upgraded" : "Album Imported",
                Title       = GetTitle(artist, new List <Album> {
                    album
                }),
                Color     = isUpgrade ? (int)DiscordColors.Upgrade : (int)DiscordColors.Success,
                Fields    = new List <DiscordField>(),
                Timestamp = DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ss.fffZ")
            };

            if (Settings.ImportFields.Contains((int)DiscordImportFieldType.Poster))
            {
                embed.Thumbnail = new DiscordImage
                {
                    Url = album.Images.FirstOrDefault(x => x.CoverType == MediaCoverTypes.Cover)?.Url
                };
            }

            if (Settings.ImportFields.Contains((int)DiscordImportFieldType.Fanart))
            {
                embed.Image = new DiscordImage
                {
                    Url = artistMetadata.Images.FirstOrDefault(x => x.CoverType == MediaCoverTypes.Fanart)?.Url
                };
            }

            foreach (var field in Settings.ImportFields)
            {
                var discordField = new DiscordField();

                switch ((DiscordImportFieldType)field)
                {
                case DiscordImportFieldType.Overview:
                    var overview = album.Overview ?? "";
                    discordField.Name  = "Overview";
                    discordField.Value = overview.Length <= 300 ? overview : overview.Substring(0, 300) + "...";
                    break;

                case DiscordImportFieldType.Rating:
                    discordField.Name  = "Rating";
                    discordField.Value = album.Ratings.Value.ToString();
                    break;

                case DiscordImportFieldType.Genres:
                    discordField.Name  = "Genres";
                    discordField.Value = album.Genres.Take(5).Join(", ");
                    break;

                case DiscordImportFieldType.Quality:
                    discordField.Name   = "Quality";
                    discordField.Inline = true;
                    discordField.Value  = message.TrackFiles.First().Quality.Quality.Name;
                    break;

                case DiscordImportFieldType.Group:
                    discordField.Name  = "Group";
                    discordField.Value = message.TrackFiles.First().ReleaseGroup;
                    break;

                case DiscordImportFieldType.Size:
                    discordField.Name   = "Size";
                    discordField.Value  = BytesToString(message.TrackFiles.Sum(x => x.Size));
                    discordField.Inline = true;
                    break;

                case DiscordImportFieldType.Release:
                    discordField.Name  = "Release";
                    discordField.Value = message.TrackFiles.First().SceneName;
                    break;

                case DiscordImportFieldType.Links:
                    discordField.Name  = "Links";
                    discordField.Value = GetLinksString(artist);
                    break;
                }

                if (discordField.Name.IsNotNullOrWhiteSpace() && discordField.Value.IsNotNullOrWhiteSpace())
                {
                    embed.Fields.Add(discordField);
                }
            }

            var payload = CreatePayload(null, new List <Embed> {
                embed
            });

            _proxy.SendPayload(payload, Settings);
        }