diff --git a/src/NzbDrone.Core/Download/Clients/QBittorrent/QBittorrent.cs b/src/NzbDrone.Core/Download/Clients/QBittorrent/QBittorrent.cs
index eaa4165d2..1f0985162 100644
--- a/src/NzbDrone.Core/Download/Clients/QBittorrent/QBittorrent.cs
+++ b/src/NzbDrone.Core/Download/Clients/QBittorrent/QBittorrent.cs
@@ -48,6 +48,8 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
_proxy.MoveTorrentToTopInQueue(hash.ToLower(), Settings);
}
+ SetInitialState(hash.ToLower());
+
return hash;
}
@@ -82,6 +84,8 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
_logger.Warn(ex, "Failed to set the torrent priority for {0}.", filename);
}
+ SetInitialState(hash);
+
return hash;
}
@@ -306,5 +310,28 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
return null;
}
+
+ private void SetInitialState(string hash)
+ {
+ try
+ {
+ switch ((QBittorrentState) Settings.InitialState)
+ {
+ case QBittorrentState.ForceStart:
+ _proxy.SetForceStart(hash, true, Settings);
+ break;
+ case QBittorrentState.Start:
+ _proxy.ResumeTorrent(hash, Settings);
+ break;
+ case QBittorrentState.Pause:
+ _proxy.PauseTorrent(hash, Settings);
+ break;
+ }
+ }
+ catch (Exception ex)
+ {
+ _logger.Warn(ex, "Failed to set inital state for {0}.", hash);
+ }
+ }
}
}
diff --git a/src/NzbDrone.Core/Download/Clients/QBittorrent/QBittorrentProxy.cs b/src/NzbDrone.Core/Download/Clients/QBittorrent/QBittorrentProxy.cs
index 5b058e998..cdb79255d 100644
--- a/src/NzbDrone.Core/Download/Clients/QBittorrent/QBittorrentProxy.cs
+++ b/src/NzbDrone.Core/Download/Clients/QBittorrent/QBittorrentProxy.cs
@@ -23,6 +23,9 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
void RemoveTorrent(string hash, Boolean removeData, QBittorrentSettings settings);
void SetTorrentLabel(string hash, string label, QBittorrentSettings settings);
void MoveTorrentToTopInQueue(string hash, QBittorrentSettings settings);
+ void PauseTorrent(string hash, QBittorrentSettings settings);
+ void ResumeTorrent(string hash, QBittorrentSettings settings);
+ void SetForceStart(string hash, bool enabled, QBittorrentSettings settings);
}
public class QBittorrentProxy : IQBittorrentProxy
@@ -154,6 +157,34 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
}
+ public void PauseTorrent(string hash, QBittorrentSettings settings)
+ {
+ var request = BuildRequest(settings).Resource("/command/pause")
+ .Post()
+ .AddFormParameter("hash", hash);
+
+ ProcessRequest(request, settings);
+ }
+
+ public void ResumeTorrent(string hash, QBittorrentSettings settings)
+ {
+ var request = BuildRequest(settings).Resource("/command/resume")
+ .Post()
+ .AddFormParameter("hash", hash);
+
+ ProcessRequest(request, settings);
+ }
+
+ public void SetForceStart(string hash, bool enabled, QBittorrentSettings settings)
+ {
+ var request = BuildRequest(settings).Resource("/command/setForceStart")
+ .Post()
+ .AddFormParameter("hashes", hash)
+ .AddFormParameter("value", enabled ? "true" : "false");
+
+ ProcessRequest(request, settings);
+ }
+
private HttpRequestBuilder BuildRequest(QBittorrentSettings settings)
{
var requestBuilder = new HttpRequestBuilder(settings.UseSsl, settings.Host, settings.Port);
diff --git a/src/NzbDrone.Core/Download/Clients/QBittorrent/QBittorrentSettings.cs b/src/NzbDrone.Core/Download/Clients/QBittorrent/QBittorrentSettings.cs
index 6bdffa80c..8984d616d 100644
--- a/src/NzbDrone.Core/Download/Clients/QBittorrent/QBittorrentSettings.cs
+++ b/src/NzbDrone.Core/Download/Clients/QBittorrent/QBittorrentSettings.cs
@@ -1,4 +1,4 @@
-using FluentValidation;
+using FluentValidation;
using NzbDrone.Core.Annotations;
using NzbDrone.Core.ThingiProvider;
using NzbDrone.Core.Validation;
@@ -46,7 +46,10 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
[FieldDefinition(6, Label = "Older Priority", Type = FieldType.Select, SelectOptions = typeof(QBittorrentPriority), HelpText = "Priority to use when grabbing albums released over 14 days ago")]
public int OlderTvPriority { get; set; }
- [FieldDefinition(7, Label = "Use SSL", Type = FieldType.Checkbox, HelpText = "Use a secure connection. See Options -> Web UI -> 'Use HTTPS instead of HTTP' in qBittorrent.")]
+ [FieldDefinition(7, Label = "Initial State", Type = FieldType.Select, SelectOptions = typeof(QBittorrentState), HelpText = "Initial state for torrents added to qBittorrent")]
+ public int InitialState { get; set; }
+
+ [FieldDefinition(8, Label = "Use SSL", Type = FieldType.Checkbox, HelpText = "Use a secure connection. See Options -> Web UI -> 'Use HTTPS instead of HTTP' in qBittorrent.")]
public bool UseSsl { get; set; }
public NzbDroneValidationResult Validate()
diff --git a/src/NzbDrone.Core/Download/Clients/QBittorrent/QBittorrentState.cs b/src/NzbDrone.Core/Download/Clients/QBittorrent/QBittorrentState.cs
new file mode 100644
index 000000000..56c5ddf1a
--- /dev/null
+++ b/src/NzbDrone.Core/Download/Clients/QBittorrent/QBittorrentState.cs
@@ -0,0 +1,9 @@
+namespace NzbDrone.Core.Download.Clients.QBittorrent
+{
+ public enum QBittorrentState
+ {
+ Start = 0,
+ ForceStart = 1,
+ Pause = 2
+ }
+}
diff --git a/src/NzbDrone.Core/NzbDrone.Core.csproj b/src/NzbDrone.Core/NzbDrone.Core.csproj
index 8156d0196..8736224bf 100644
--- a/src/NzbDrone.Core/NzbDrone.Core.csproj
+++ b/src/NzbDrone.Core/NzbDrone.Core.csproj
@@ -321,6 +321,7 @@
+