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.
64 lines
1.9 KiB
64 lines
1.9 KiB
using System;
|
|
using NzbDrone.Core.Datastore;
|
|
using NzbDrone.Core.Download.Clients;
|
|
using NzbDrone.Core.Parser.Model;
|
|
|
|
namespace NzbDrone.Core.Indexers
|
|
{
|
|
public interface ISeedConfigProvider
|
|
{
|
|
TorrentSeedConfiguration GetSeedConfiguration(RemoteAlbum release);
|
|
}
|
|
|
|
public class SeedConfigProvider : ISeedConfigProvider
|
|
{
|
|
private readonly IIndexerFactory _indexerFactory;
|
|
|
|
public SeedConfigProvider(IIndexerFactory indexerFactory)
|
|
{
|
|
_indexerFactory = indexerFactory;
|
|
}
|
|
|
|
public TorrentSeedConfiguration GetSeedConfiguration(RemoteAlbum remoteAlbum)
|
|
{
|
|
if (remoteAlbum.Release.DownloadProtocol != DownloadProtocol.Torrent)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
if (remoteAlbum.Release.IndexerId == 0)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
try
|
|
{
|
|
var indexer = _indexerFactory.Get(remoteAlbum.Release.IndexerId);
|
|
var torrentIndexerSettings = indexer.Settings as ITorrentIndexerSettings;
|
|
|
|
if (torrentIndexerSettings != null && torrentIndexerSettings.SeedCriteria != null)
|
|
{
|
|
var seedConfig = new TorrentSeedConfiguration
|
|
{
|
|
Ratio = torrentIndexerSettings.SeedCriteria.SeedRatio
|
|
};
|
|
|
|
var seedTime = remoteAlbum.ParsedAlbumInfo.Discography ? torrentIndexerSettings.SeedCriteria.DiscographySeedTime : torrentIndexerSettings.SeedCriteria.SeedTime;
|
|
if (seedTime.HasValue)
|
|
{
|
|
seedConfig.SeedTime = TimeSpan.FromMinutes(seedTime.Value);
|
|
}
|
|
|
|
return seedConfig;
|
|
}
|
|
}
|
|
catch (ModelNotFoundException)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
return null;
|
|
}
|
|
}
|
|
}
|