mirror of
https://github.com/lidarr/lidarr.git
synced 2025-07-14 09:03:49 -07:00
New: Optional directory setting for Aria2
(cherry picked from commit fd17df0dd03a5feb088c3241a247eac20f0e8c6c) Closes #4449
This commit is contained in:
parent
74834988b5
commit
1b19e44562
4 changed files with 25 additions and 2 deletions
|
@ -92,6 +92,10 @@ namespace NzbDrone.Common.Http
|
||||||
{
|
{
|
||||||
data = new XElement("base64", Convert.ToBase64String(bytes));
|
data = new XElement("base64", Convert.ToBase64String(bytes));
|
||||||
}
|
}
|
||||||
|
else if (value is Dictionary<string, string> d)
|
||||||
|
{
|
||||||
|
data = new XElement("struct", d.Select(p => new XElement("member", new XElement("name", p.Key), new XElement("value", p.Value))));
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
throw new InvalidOperationException($"Unhandled argument type {value.GetType().Name}");
|
throw new InvalidOperationException($"Unhandled argument type {value.GetType().Name}");
|
||||||
|
|
|
@ -2,6 +2,7 @@ using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Xml.Linq;
|
using System.Xml.Linq;
|
||||||
using System.Xml.XPath;
|
using System.Xml.XPath;
|
||||||
|
using NzbDrone.Common.Extensions;
|
||||||
using NzbDrone.Common.Http;
|
using NzbDrone.Common.Http;
|
||||||
using NzbDrone.Core.Download.Extensions;
|
using NzbDrone.Core.Download.Extensions;
|
||||||
|
|
||||||
|
@ -97,8 +98,14 @@ namespace NzbDrone.Core.Download.Clients.Aria2
|
||||||
|
|
||||||
public string AddMagnet(Aria2Settings settings, string magnet)
|
public string AddMagnet(Aria2Settings settings, string magnet)
|
||||||
{
|
{
|
||||||
var response = ExecuteRequest(settings, "aria2.addUri", GetToken(settings), new List<string> { magnet });
|
var options = new Dictionary<string, string>();
|
||||||
|
|
||||||
|
if (settings.Directory.IsNotNullOrWhiteSpace())
|
||||||
|
{
|
||||||
|
options.Add("dir", settings.Directory);
|
||||||
|
}
|
||||||
|
|
||||||
|
var response = ExecuteRequest(settings, "aria2.addUri", GetToken(settings), new List<string> { magnet }, options);
|
||||||
var gid = response.GetStringResponse();
|
var gid = response.GetStringResponse();
|
||||||
|
|
||||||
return gid;
|
return gid;
|
||||||
|
@ -106,8 +113,16 @@ namespace NzbDrone.Core.Download.Clients.Aria2
|
||||||
|
|
||||||
public string AddTorrent(Aria2Settings settings, byte[] torrent)
|
public string AddTorrent(Aria2Settings settings, byte[] torrent)
|
||||||
{
|
{
|
||||||
var response = ExecuteRequest(settings, "aria2.addTorrent", GetToken(settings), torrent);
|
// Aria2's second parameter is an array of URIs and needs to be sent if options are provided, this satisfies that requirement.
|
||||||
|
var emptyListOfUris = new List<string>();
|
||||||
|
var options = new Dictionary<string, string>();
|
||||||
|
|
||||||
|
if (settings.Directory.IsNotNullOrWhiteSpace())
|
||||||
|
{
|
||||||
|
options.Add("dir", settings.Directory);
|
||||||
|
}
|
||||||
|
|
||||||
|
var response = ExecuteRequest(settings, "aria2.addTorrent", GetToken(settings), torrent, emptyListOfUris, options);
|
||||||
var gid = response.GetStringResponse();
|
var gid = response.GetStringResponse();
|
||||||
|
|
||||||
return gid;
|
return gid;
|
||||||
|
|
|
@ -41,6 +41,9 @@ namespace NzbDrone.Core.Download.Clients.Aria2
|
||||||
[FieldDefinition(4, Label = "Secret token", Type = FieldType.Password, Privacy = PrivacyLevel.Password)]
|
[FieldDefinition(4, Label = "Secret token", Type = FieldType.Password, Privacy = PrivacyLevel.Password)]
|
||||||
public string SecretToken { get; set; }
|
public string SecretToken { get; set; }
|
||||||
|
|
||||||
|
[FieldDefinition(5, Label = "Directory", Type = FieldType.Textbox, HelpText = "DownloadClientAriaSettingsDirectoryHelpText")]
|
||||||
|
public string Directory { get; set; }
|
||||||
|
|
||||||
public NzbDroneValidationResult Validate()
|
public NzbDroneValidationResult Validate()
|
||||||
{
|
{
|
||||||
return new NzbDroneValidationResult(Validator.Validate(this));
|
return new NzbDroneValidationResult(Validator.Validate(this));
|
||||||
|
|
|
@ -336,6 +336,7 @@
|
||||||
"Donations": "Donations",
|
"Donations": "Donations",
|
||||||
"DoneEditingGroups": "Done Editing Groups",
|
"DoneEditingGroups": "Done Editing Groups",
|
||||||
"DownloadClient": "Download Client",
|
"DownloadClient": "Download Client",
|
||||||
|
"DownloadClientAriaSettingsDirectoryHelpText": "Optional location to put downloads in, leave blank to use the default Aria2 location",
|
||||||
"DownloadClientCheckDownloadingToRoot": "Download client {0} places downloads in the root folder {1}. You should not download to a root folder.",
|
"DownloadClientCheckDownloadingToRoot": "Download client {0} places downloads in the root folder {1}. You should not download to a root folder.",
|
||||||
"DownloadClientCheckNoneAvailableMessage": "No download client is available",
|
"DownloadClientCheckNoneAvailableMessage": "No download client is available",
|
||||||
"DownloadClientCheckUnableToCommunicateMessage": "Unable to communicate with {0}.",
|
"DownloadClientCheckUnableToCommunicateMessage": "Unable to communicate with {0}.",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue