1
0
mirror of https://github.com/Radarr/Radarr.git synced 2026-04-24 22:35:49 -04:00
Files
Radarr/src/NzbDrone.Core/Parser/Augmenters/AugmentWithHistory.cs
T
ta264 06e2d5b3c3 New: Use native dotnet host and DryIoc
(cherry picked from commit d6170dbfedf27a6218afe242a0fae2eb8b368aec)
(cherry picked from commit 7fe36a7e9222e830f4920e09a85115df0bdbf190)
2021-10-25 13:45:44 -04:00

60 lines
2.0 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using NzbDrone.Core.History;
using NzbDrone.Core.Parser.Model;
namespace NzbDrone.Core.Parser.Augmenters
{
public class AugmentWithHistory : IAugmentParsedMovieInfo
{
private readonly IEnumerable<Lazy<IAugmentParsedMovieInfo>> _augmenters;
public AugmentWithHistory(IEnumerable<Lazy<IAugmentParsedMovieInfo>> augmenters)
{
_augmenters = augmenters;
}
public Type HelperType
{
get
{
return typeof(MovieHistory);
}
}
public ParsedMovieInfo AugmentMovieInfo(ParsedMovieInfo movieInfo, object helper)
{
if (helper is MovieHistory history && history.EventType == MovieHistoryEventType.Grabbed)
{
//First we create a release info from history data.
var releaseInfo = new ReleaseInfo();
if (int.TryParse(history.Data.GetValueOrDefault("indexerId"), out var indexerId))
{
releaseInfo.IndexerId = indexerId;
}
if (long.TryParse(history.Data.GetValueOrDefault("size"), out var size))
{
releaseInfo.Size = size;
}
if (Enum.TryParse(history.Data.GetValueOrDefault("indexerFlags"), true, out IndexerFlags indexerFlags))
{
releaseInfo.IndexerFlags = indexerFlags;
}
//Now we run the release info augmenters from the history release info. TODO: Add setting to only do that if you trust your indexer!
var releaseInfoAugmenters = _augmenters.Where(a => a.Value.HelperType.IsInstanceOfType(releaseInfo));
foreach (var augmenter in releaseInfoAugmenters)
{
movieInfo = augmenter.Value.AugmentMovieInfo(movieInfo, releaseInfo);
}
}
return movieInfo;
}
}
}