You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Prowlarr/src/NzbDrone.Core/Parser/Augmenters/AugmentWithReleaseInfo.cs

69 lines
2.2 KiB

using System;
using System.Linq;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Indexers;
using NzbDrone.Core.Languages;
using NzbDrone.Core.Parser.Model;
namespace NzbDrone.Core.Parser.Augmenters
{
public class AugmentWithReleaseInfo : IAugmentParsedMovieInfo
{
private readonly IIndexerFactory _indexerFactory;
public AugmentWithReleaseInfo(IIndexerFactory indexerFactory)
{
_indexerFactory = indexerFactory;
}
public Type HelperType
{
get
{
return typeof(ReleaseInfo);
}
}
public ParsedMovieInfo AugmentMovieInfo(ParsedMovieInfo movieInfo, object helper)
{
if (helper is ReleaseInfo releaseInfo)
{
IIndexerSettings indexerSettings = null;
try {
indexerSettings = _indexerFactory.Get(releaseInfo.IndexerId)?.Settings as IIndexerSettings;
}
catch (Exception)
{
//_logger.Debug("Indexer with id {0} does not exist, skipping minimum seeder checks.", subject.Release.IndexerId);
} // First, let's augment the language!
var languageTitle = movieInfo.SimpleReleaseTitle;
if (movieInfo.MovieTitle.IsNotNullOrWhiteSpace())
{
if (languageTitle.ToLower().Contains("multi") && indexerSettings?.MultiLanguages?.Any() == true)
{
foreach (var i in indexerSettings.MultiLanguages)
{
var language = (Language) i;
if (!movieInfo.Languages.Contains(language))
movieInfo.Languages.Add(language);
}
}
}
//Next, let's add other useful info to the extra info dict
if (!movieInfo.ExtraInfo.ContainsKey("Size"))
{
movieInfo.ExtraInfo["Size"] = releaseInfo.Size;
}
movieInfo.ExtraInfo["IndexerFlags"] = releaseInfo.IndexerFlags;
}
return movieInfo;
}
}
}