New: Indexer flags in webhook for grabbed releases

This commit is contained in:
Bogdan 2025-04-01 17:27:30 +03:00
parent 3aa93e7946
commit ad7b85f76d
4 changed files with 35 additions and 2 deletions

View file

@ -64,7 +64,7 @@ protected WebhookImportPayload BuildOnDownloadPayload(DownloadMessage message)
{ {
SourcePath = message.SourcePath SourcePath = message.SourcePath
}, },
Release = new WebhookGrabbedRelease(message.Release), Release = new WebhookGrabbedRelease(message.Release, movieFile.IndexerFlags),
IsUpgrade = message.OldMovieFiles.Any(), IsUpgrade = message.OldMovieFiles.Any(),
DownloadClient = message.DownloadClientInfo?.Name, DownloadClient = message.DownloadClientInfo?.Name,
DownloadClientType = message.DownloadClientInfo?.Type, DownloadClientType = message.DownloadClientInfo?.Type,

View file

@ -1,3 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using NzbDrone.Core.Parser.Model; using NzbDrone.Core.Parser.Model;
namespace NzbDrone.Core.Notifications.Webhook namespace NzbDrone.Core.Notifications.Webhook
@ -18,10 +21,36 @@ public WebhookGrabbedRelease(GrabbedReleaseInfo release)
ReleaseTitle = release.Title; ReleaseTitle = release.Title;
Indexer = release.Indexer; Indexer = release.Indexer;
Size = release.Size; Size = release.Size;
IndexerFlags = GetListOfIndexerFlags(release.IndexerFlags);
}
public WebhookGrabbedRelease(GrabbedReleaseInfo release, IndexerFlags indexerFlags)
{
if (release == null)
{
IndexerFlags = GetListOfIndexerFlags(indexerFlags);
return;
}
ReleaseTitle = release.Title;
Indexer = release.Indexer;
Size = release.Size;
IndexerFlags = GetListOfIndexerFlags(release.IndexerFlags);
} }
public string ReleaseTitle { get; set; } public string ReleaseTitle { get; set; }
public string Indexer { get; set; } public string Indexer { get; set; }
public long Size { get; set; } public long Size { get; set; }
public List<string> IndexerFlags { get; set; }
private static List<string> GetListOfIndexerFlags(IndexerFlags indexerFlags)
{
return Enum.GetValues(typeof(IndexerFlags))
.Cast<IndexerFlags>()
.Where(f => (indexerFlags & f) == f)
.Select(f => f.ToString())
.ToList();
}
} }
} }

View file

@ -24,7 +24,7 @@ public WebhookRelease(QualityModel quality, RemoteMovie remoteMovie)
CustomFormats = remoteMovie.CustomFormats?.Select(x => x.Name).ToList(); CustomFormats = remoteMovie.CustomFormats?.Select(x => x.Name).ToList();
CustomFormatScore = remoteMovie.CustomFormatScore; CustomFormatScore = remoteMovie.CustomFormatScore;
Languages = remoteMovie.Languages; Languages = remoteMovie.Languages;
IndexerFlags = Enum.GetValues(typeof(IndexerFlags)).Cast<IndexerFlags>().Where(r => (remoteMovie.Release.IndexerFlags & r) == r).Select(r => r.ToString()).ToList(); IndexerFlags = Enum.GetValues(typeof(IndexerFlags)).Cast<IndexerFlags>().Where(f => (remoteMovie.Release.IndexerFlags & f) == f).Select(f => f.ToString()).ToList();
} }
public string Quality { get; set; } public string Quality { get; set; }

View file

@ -1,3 +1,4 @@
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using NzbDrone.Core.History; using NzbDrone.Core.History;
@ -9,6 +10,7 @@ public class GrabbedReleaseInfo
public string Title { get; set; } public string Title { get; set; }
public string Indexer { get; set; } public string Indexer { get; set; }
public long Size { get; set; } public long Size { get; set; }
public IndexerFlags IndexerFlags { get; set; }
public List<int> MovieIds { get; set; } public List<int> MovieIds { get; set; }
@ -19,11 +21,13 @@ public GrabbedReleaseInfo(List<MovieHistory> grabbedHistories)
grabbedHistory.Data.TryGetValue("indexer", out var indexer); grabbedHistory.Data.TryGetValue("indexer", out var indexer);
grabbedHistory.Data.TryGetValue("size", out var sizeString); grabbedHistory.Data.TryGetValue("size", out var sizeString);
Enum.TryParse(grabbedHistory.Data.GetValueOrDefault("indexerFlags"), out IndexerFlags indexerFlags);
long.TryParse(sizeString, out var size); long.TryParse(sizeString, out var size);
Title = grabbedHistory.SourceTitle; Title = grabbedHistory.SourceTitle;
Indexer = indexer; Indexer = indexer;
Size = size; Size = size;
IndexerFlags = indexerFlags;
MovieIds = movieIds; MovieIds = movieIds;
} }
} }