Added Seed Time and Season-Pack seed time.

pull/2577/head
Taloth Saldono 7 years ago
parent 47018b02a8
commit 6df61e305d

@ -1,10 +0,0 @@
using NzbDrone.Core.Download.Clients;
using NzbDrone.Core.Parser.Model;
namespace NzbDrone.Core.Configuration
{
public interface ISeedConfigProvider
{
TorrentSeedConfiguration GetSeedConfiguration(ReleaseInfo release);
}
}

@ -1,9 +1,15 @@
using NzbDrone.Core.Download.Clients; using System;
using NzbDrone.Core.Download.Clients;
using NzbDrone.Core.Indexers; using NzbDrone.Core.Indexers;
using NzbDrone.Core.Parser.Model; using NzbDrone.Core.Parser.Model;
namespace NzbDrone.Core.Configuration namespace NzbDrone.Core.Configuration
{ {
public interface ISeedConfigProvider
{
TorrentSeedConfiguration GetSeedConfiguration(RemoteEpisode release);
}
public class SeedConfigProvider: ISeedConfigProvider public class SeedConfigProvider: ISeedConfigProvider
{ {
private readonly IIndexerFactory _indexerFactory; private readonly IIndexerFactory _indexerFactory;
@ -13,18 +19,27 @@ namespace NzbDrone.Core.Configuration
_indexerFactory = indexerFactory; _indexerFactory = indexerFactory;
} }
public TorrentSeedConfiguration GetSeedConfiguration(ReleaseInfo release) public TorrentSeedConfiguration GetSeedConfiguration(RemoteEpisode remoteEpisode)
{ {
if (release.DownloadProtocol != DownloadProtocol.Torrent) return null; if (remoteEpisode.Release.DownloadProtocol != DownloadProtocol.Torrent) return null;
var indexer = _indexerFactory.Get(release.IndexerId); var indexer = _indexerFactory.Get(remoteEpisode.Release.IndexerId);
var torrentIndexerSettings = indexer?.Settings as ITorrentIndexerSettings;
if (indexer.Settings is ITorrentIndexerSettings torrentIndexerSettings) if (torrentIndexerSettings != null)
{ {
return new TorrentSeedConfiguration var seedConfig = new TorrentSeedConfiguration
{ {
Ratio = torrentIndexerSettings.SeedCriteria.SeedRatio Ratio = torrentIndexerSettings.SeedCriteria.SeedRatio
}; };
var seedTime = remoteEpisode.ParsedEpisodeInfo.FullSeason ? torrentIndexerSettings.SeedCriteria.SeasonPackSeedTime : torrentIndexerSettings.SeedCriteria.SeedTime;
if (seedTime.HasValue)
{
seedConfig.SeedTime = TimeSpan.FromSeconds(seedTime.Value);
}
return seedConfig;
} }
return null; return null;

@ -61,7 +61,7 @@ namespace NzbDrone.Core.Download
} }
// Get the seed configuration for this release. // Get the seed configuration for this release.
remoteEpisode.SeedConfiguration = _seedConfigProvider.GetSeedConfiguration(remoteEpisode.Release); remoteEpisode.SeedConfiguration = _seedConfigProvider.GetSeedConfiguration(remoteEpisode);
// Limit grabs to 2 per second. // Limit grabs to 2 per second.
if (remoteEpisode.Release.DownloadUrl.IsNotNullOrWhiteSpace() && !remoteEpisode.Release.DownloadUrl.StartsWith("magnet:")) if (remoteEpisode.Release.DownloadUrl.IsNotNullOrWhiteSpace() && !remoteEpisode.Release.DownloadUrl.StartsWith("magnet:"))

@ -13,8 +13,8 @@ namespace NzbDrone.Core.Indexers
public SeedCriteriaSettingsValidator() public SeedCriteriaSettingsValidator()
{ {
RuleFor(c => c.SeedRatio).GreaterThan(0.0).When(c => c.SeedRatio.HasValue); RuleFor(c => c.SeedRatio).GreaterThan(0.0).When(c => c.SeedRatio.HasValue);
//RuleFor(c => c.SeedTime).GreaterThan(0).When(c => c.SeedTime.HasValue); RuleFor(c => c.SeedTime).GreaterThan(0).When(c => c.SeedTime.HasValue);
//RuleFor(c => c.SeasonPackSeedTime).GreaterThan(0).When(c => c.SeasonPackSeedTime.HasValue); RuleFor(c => c.SeasonPackSeedTime).GreaterThan(0).When(c => c.SeasonPackSeedTime.HasValue);
} }
} }
@ -25,10 +25,10 @@ namespace NzbDrone.Core.Indexers
[FieldDefinition(0, Type = FieldType.Textbox, Label = "Seed Ratio", HelpText = "The ratio a torrent should reach before stopping, empty is download client's default", Advanced = true)] [FieldDefinition(0, Type = FieldType.Textbox, Label = "Seed Ratio", HelpText = "The ratio a torrent should reach before stopping, empty is download client's default", Advanced = true)]
public double? SeedRatio { get; set; } public double? SeedRatio { get; set; }
//[FieldDefinition(1, Type = FieldType.Textbox, Label = "Seed Time", HelpText = "The time a torrent should be seeded before stopping, empty is download client's default", Advanced = true)] [FieldDefinition(1, Type = FieldType.Textbox, Label = "Seed Time", HelpText = "The time a torrent should be seeded before stopping, empty is download client's default", Advanced = true)]
//public int? SeedTime { get; set; } public int? SeedTime { get; set; }
//[FieldDefinition(2, Type = FieldType.Textbox, Label = "Season-Pack Seed Time", HelpText = "The time a torrent should be seeded before stopping, empty is download client's default", Advanced = true)] [FieldDefinition(2, Type = FieldType.Textbox, Label = "Season-Pack Seed Time", HelpText = "The time a torrent should be seeded before stopping, empty is download client's default", Advanced = true)]
//public int? SeasonPackSeedTime { get; set; } public int? SeasonPackSeedTime { get; set; }
} }
} }

Loading…
Cancel
Save