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 @@ namespace NzbDrone.Core.Notifications.Webhook
{
SourcePath = message.SourcePath
},
Release = new WebhookGrabbedRelease(message.Release),
Release = new WebhookGrabbedRelease(message.Release, movieFile.IndexerFlags),
IsUpgrade = message.OldMovieFiles.Any(),
DownloadClient = message.DownloadClientInfo?.Name,
DownloadClientType = message.DownloadClientInfo?.Type,

View file

@ -1,3 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using NzbDrone.Core.Parser.Model;
namespace NzbDrone.Core.Notifications.Webhook
@ -18,10 +21,36 @@ namespace NzbDrone.Core.Notifications.Webhook
ReleaseTitle = release.Title;
Indexer = release.Indexer;
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 Indexer { 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 @@ namespace NzbDrone.Core.Notifications.Webhook
CustomFormats = remoteMovie.CustomFormats?.Select(x => x.Name).ToList();
CustomFormatScore = remoteMovie.CustomFormatScore;
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; }

View file

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