uTorrent start/stop on add

New: Start torrents added to uTorrent by default
New: Option to add torrents to uTorrent in a stopped state
Closes #2141
This commit is contained in:
Mark McDowall 2017-08-20 21:29:02 -07:00
parent 9a82f45020
commit fa34af8f15
No known key found for this signature in database
GPG Key ID: D4CEFA9A718052E0
3 changed files with 41 additions and 0 deletions

View File

@ -49,6 +49,15 @@ namespace NzbDrone.Core.Download.Clients.UTorrent
_proxy.MoveTorrentToTopInQueue(hash, Settings); _proxy.MoveTorrentToTopInQueue(hash, Settings);
} }
if (Settings.AddStopped)
{
_proxy.StopTorrent(hash, Settings);
}
else
{
_proxy.StartTorrent(hash, Settings);
}
return hash; return hash;
} }
@ -65,6 +74,15 @@ namespace NzbDrone.Core.Download.Clients.UTorrent
_proxy.MoveTorrentToTopInQueue(hash, Settings); _proxy.MoveTorrentToTopInQueue(hash, Settings);
} }
if (Settings.AddStopped)
{
_proxy.StopTorrent(hash, Settings);
}
else
{
_proxy.StartTorrent(hash, Settings);
}
return hash; return hash;
} }

View File

@ -22,6 +22,8 @@ namespace NzbDrone.Core.Download.Clients.UTorrent
void RemoveTorrent(string hash, bool removeData, UTorrentSettings settings); void RemoveTorrent(string hash, bool removeData, UTorrentSettings settings);
void SetTorrentLabel(string hash, string label, UTorrentSettings settings); void SetTorrentLabel(string hash, string label, UTorrentSettings settings);
void MoveTorrentToTopInQueue(string hash, UTorrentSettings settings); void MoveTorrentToTopInQueue(string hash, UTorrentSettings settings);
void StartTorrent(string hash, UTorrentSettings settings);
void StopTorrent(string hash, UTorrentSettings settings);
} }
public class UTorrentProxy : IUTorrentProxy public class UTorrentProxy : IUTorrentProxy
@ -157,6 +159,24 @@ namespace NzbDrone.Core.Download.Clients.UTorrent
ProcessRequest(requestBuilder, settings); ProcessRequest(requestBuilder, settings);
} }
public void StartTorrent(string hash, UTorrentSettings settings)
{
var requestBuilder = BuildRequest(settings)
.AddQueryParam("action", "start")
.AddQueryParam("hash", hash);
ProcessRequest(requestBuilder, settings);
}
public void StopTorrent(string hash, UTorrentSettings settings)
{
var requestBuilder = BuildRequest(settings)
.AddQueryParam("action", "stop")
.AddQueryParam("hash", hash);
ProcessRequest(requestBuilder, settings);
}
private HttpRequestBuilder BuildRequest(UTorrentSettings settings) private HttpRequestBuilder BuildRequest(UTorrentSettings settings)
{ {
var requestBuilder = new HttpRequestBuilder(false, settings.Host, settings.Port) var requestBuilder = new HttpRequestBuilder(false, settings.Host, settings.Port)

View File

@ -47,6 +47,9 @@ namespace NzbDrone.Core.Download.Clients.UTorrent
[FieldDefinition(6, Label = "Older Priority", Type = FieldType.Select, SelectOptions = typeof(UTorrentPriority), HelpText = "Priority to use when grabbing episodes that aired over 14 days ago")] [FieldDefinition(6, Label = "Older Priority", Type = FieldType.Select, SelectOptions = typeof(UTorrentPriority), HelpText = "Priority to use when grabbing episodes that aired over 14 days ago")]
public int OlderTvPriority { get; set; } public int OlderTvPriority { get; set; }
[FieldDefinition(7, Label = "Add Stopped", Type = FieldType.Checkbox, SelectOptions = typeof(UTorrentPriority), HelpText = "Torrents will need to be started manually in uTorrent")]
public bool AddStopped { get; set; }
public NzbDroneValidationResult Validate() public NzbDroneValidationResult Validate()
{ {
return new NzbDroneValidationResult(Validator.Validate(this)); return new NzbDroneValidationResult(Validator.Validate(this));