Exemplo n.º 1
0
        public override void OnDownload(DownloadMessage message)
        {
            var isUpgrade = message.OldMovieFiles.Count > 0;
            var embed     = new Embed
            {
                Author = new DiscordAuthor
                {
                    Name    = Settings.Author.IsNullOrWhiteSpace() ? Environment.MachineName : Settings.Author,
                    IconUrl = "https://raw.githubusercontent.com/Radarr/Radarr/develop/Logo/256.png"
                },
                Url         = $"https://www.themoviedb.org/movie/{message.Movie.TmdbId}",
                Description = isUpgrade ? "Movie Upgraded" : "Movie Imported",
                Title       = message.Movie.Year > 0 ? $"{message.Movie.Title} ({message.Movie.Year})" : message.Movie.Title,
                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 = message.Movie.Images.FirstOrDefault(x => x.CoverType == MediaCoverTypes.Poster)?.Url
                };
            }

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

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

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

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

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

                case DiscordImportFieldType.Quality:
                    discordField.Name   = "Quality";
                    discordField.Inline = true;
                    discordField.Value  = message.MovieFile.Quality.Quality.Name;
                    break;

                case DiscordImportFieldType.Codecs:
                    discordField.Name   = "Codecs";
                    discordField.Inline = true;
                    discordField.Value  = string.Format("{0} / {1} {2}",
                                                        MediaInfoFormatter.FormatVideoCodec(message.MovieFile.MediaInfo, null),
                                                        MediaInfoFormatter.FormatAudioCodec(message.MovieFile.MediaInfo, null),
                                                        MediaInfoFormatter.FormatAudioChannels(message.MovieFile.MediaInfo));
                    break;

                case DiscordImportFieldType.Group:
                    discordField.Name  = "Group";
                    discordField.Value = message.MovieFile.ReleaseGroup;
                    break;

                case DiscordImportFieldType.Size:
                    discordField.Name   = "Size";
                    discordField.Value  = BytesToString(message.MovieFile.Size);
                    discordField.Inline = true;
                    break;

                case DiscordImportFieldType.Languages:
                    discordField.Name  = "Languages";
                    discordField.Value = message.MovieFile.MediaInfo.AudioLanguages;
                    break;

                case DiscordImportFieldType.Subtitles:
                    discordField.Name  = "Subtitles";
                    discordField.Value = message.MovieFile.MediaInfo.Subtitles;
                    break;

                case DiscordImportFieldType.Release:
                    discordField.Name  = "Release";
                    discordField.Value = string.Format("```{0}```", message.MovieFile.SceneName);
                    break;

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

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

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

            _proxy.SendPayload(payload, Settings);
        }
Exemplo n.º 2
0
        public override void OnGrab(GrabMessage message)
        {
            var series   = message.Series;
            var episodes = message.Episode.Episodes;

            var embed = new Embed
            {
                Author = new DiscordAuthor
                {
                    Name    = Settings.Author.IsNullOrWhiteSpace() ? Environment.MachineName : Settings.Author,
                    IconUrl = "https://raw.githubusercontent.com/Sonarr/Sonarr/phantom-develop/Logo/256.png"
                },
                Url         = $"http://thetvdb.com/?tab=series&id={series.TvdbId}",
                Description = "Episode Grabbed",
                Title       = GetTitle(series, episodes),
                Color       = (int)DiscordColors.Standard,
                Fields      = new List <DiscordField>(),
                Timestamp   = DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ss.fffZ")
            };

            if (Settings.GrabFields.Contains((int)DiscordGrabFieldType.Poster))
            {
                embed.Thumbnail = new DiscordImage
                {
                    Url = series.Images.FirstOrDefault(x => x.CoverType == MediaCoverTypes.Poster)?.Url
                };
            }

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

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

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

                case DiscordGrabFieldType.Rating:
                    discordField.Name  = "Rating";
                    discordField.Value = episodes.First().Ratings.Value.ToString();
                    break;

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

                case DiscordGrabFieldType.Quality:
                    discordField.Name   = "Quality";
                    discordField.Inline = true;
                    discordField.Value  = message.Quality.Quality.Name;
                    break;

                case DiscordGrabFieldType.Group:
                    discordField.Name  = "Group";
                    discordField.Value = message.Episode.ParsedEpisodeInfo.ReleaseGroup;
                    break;

                case DiscordGrabFieldType.Size:
                    discordField.Name   = "Size";
                    discordField.Value  = BytesToString(message.Episode.Release.Size);
                    discordField.Inline = true;
                    break;

                case DiscordGrabFieldType.Release:
                    discordField.Name  = "Release";
                    discordField.Value = string.Format("```{0}```", message.Episode.Release.Title);
                    break;

                case DiscordGrabFieldType.Links:
                    discordField.Name  = "Links";
                    discordField.Value = GetLinksString(series);
                    break;
                }

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

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

            _proxy.SendPayload(payload, Settings);
        }
Exemplo n.º 3
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);
        }