mirror of
https://github.com/Prowlarr/Prowlarr.git
synced 2026-04-24 22:55:21 -04:00
a19bcf9683
Sizes need to be parsed as a long not an int else anything with a size > 2GiB will fail to be parsed and be set with size 0 Fixes #4262
65 lines
2.3 KiB
C#
65 lines
2.3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using NzbDrone.Common.Extensions;
|
|
using NzbDrone.Core.History;
|
|
using NzbDrone.Core.Indexers;
|
|
using NzbDrone.Core.Parser.Model;
|
|
|
|
namespace NzbDrone.Core.Parser.Augmenters
|
|
{
|
|
public class AugmentWithHistory : IAugmentParsedMovieInfo
|
|
{
|
|
private readonly IIndexerFactory _indexerFactory;
|
|
private readonly IEnumerable<IAugmentParsedMovieInfo> _augmenters;
|
|
|
|
public AugmentWithHistory(IIndexerFactory indexerFactory, IEnumerable<IAugmentParsedMovieInfo> augmenters)
|
|
{
|
|
_indexerFactory = indexerFactory;
|
|
_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))
|
|
{
|
|
//var indexerSettings = _indexerFactory.Get(indexerId).Settings as IIndexerSettings;
|
|
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.HelperType.IsInstanceOfType(releaseInfo));
|
|
foreach (var augmenter in releaseInfoAugmenters)
|
|
{
|
|
movieInfo = augmenter.AugmentMovieInfo(movieInfo, releaseInfo);
|
|
}
|
|
}
|
|
|
|
return movieInfo;
|
|
}
|
|
}
|
|
}
|