Fixed: Only apply remote path mappings for completed items in Qbit
This commit is contained in:
parent
d7ca3490a8
commit
583eb52ddc
|
@ -137,7 +137,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.QBittorrentTests
|
||||||
{
|
{
|
||||||
Mocker.GetMock<IQBittorrentProxy>()
|
Mocker.GetMock<IQBittorrentProxy>()
|
||||||
.Setup(s => s.GetTorrentProperties(torrent.Hash.ToLower(), It.IsAny<QBittorrentSettings>()))
|
.Setup(s => s.GetTorrentProperties(torrent.Hash.ToLower(), It.IsAny<QBittorrentSettings>()))
|
||||||
.Returns(new QBittorrentTorrentProperties { SavePath = torrent.SavePath });
|
.Returns(new QBittorrentTorrentProperties { ContentPath = torrent.ContentPath, SavePath = torrent.SavePath });
|
||||||
|
|
||||||
Mocker.GetMock<IQBittorrentProxy>()
|
Mocker.GetMock<IQBittorrentProxy>()
|
||||||
.Setup(s => s.GetTorrentFiles(torrent.Hash.ToLower(), It.IsAny<QBittorrentSettings>()))
|
.Setup(s => s.GetTorrentFiles(torrent.Hash.ToLower(), It.IsAny<QBittorrentSettings>()))
|
||||||
|
@ -426,7 +426,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.QBittorrentTests
|
||||||
Size = 1000,
|
Size = 1000,
|
||||||
Progress = 0.7,
|
Progress = 0.7,
|
||||||
Eta = 8640000,
|
Eta = 8640000,
|
||||||
State = "stalledDL",
|
State = "pausedUP",
|
||||||
Label = "",
|
Label = "",
|
||||||
SavePath = @"C:\Torrents".AsOsAgnostic(),
|
SavePath = @"C:\Torrents".AsOsAgnostic(),
|
||||||
ContentPath = @"C:\Torrents\Droned.S01.12".AsOsAgnostic()
|
ContentPath = @"C:\Torrents\Droned.S01.12".AsOsAgnostic()
|
||||||
|
|
|
@ -302,19 +302,6 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (version >= new Version("2.6.1"))
|
|
||||||
{
|
|
||||||
if (torrent.ContentPath != torrent.SavePath)
|
|
||||||
{
|
|
||||||
item.OutputPath = _remotePathMappingService.RemapRemoteToLocal(Settings.Host, new OsPath(torrent.ContentPath));
|
|
||||||
}
|
|
||||||
else if (item.Status == DownloadItemStatus.Completed)
|
|
||||||
{
|
|
||||||
item.Status = DownloadItemStatus.Warning;
|
|
||||||
item.Message = "Unable to Import. Path matches client base download directory, it's possible 'Keep top-level folder' is disabled for this torrent or 'Torrent Content Layout' is NOT set to 'Original' or 'Create Subfolder'?";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
queueItems.Add(item);
|
queueItems.Add(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -328,9 +315,22 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
|
||||||
|
|
||||||
public override DownloadClientItem GetImportItem(DownloadClientItem item, DownloadClientItem previousImportAttempt)
|
public override DownloadClientItem GetImportItem(DownloadClientItem item, DownloadClientItem previousImportAttempt)
|
||||||
{
|
{
|
||||||
// On API version >= 2.6.1 this is already set correctly
|
var properties = Proxy.GetTorrentProperties(item.DownloadId.ToLower(), Settings);
|
||||||
if (!item.OutputPath.IsEmpty)
|
var savePath = new OsPath(properties.SavePath);
|
||||||
|
var version = Proxy.GetApiVersion(Settings);
|
||||||
|
|
||||||
|
if (version >= new Version("2.6.1"))
|
||||||
{
|
{
|
||||||
|
if (properties.ContentPath != savePath.ToString())
|
||||||
|
{
|
||||||
|
item.OutputPath = _remotePathMappingService.RemapRemoteToLocal(Settings.Host, new OsPath(properties.ContentPath));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
item.Status = DownloadItemStatus.Warning;
|
||||||
|
item.Message = "Unable to Import. Path matches client base download directory, it's possible 'Keep top-level folder' is disabled for this torrent or 'Torrent Content Layout' is NOT set to 'Original' or 'Create Subfolder'?";
|
||||||
|
}
|
||||||
|
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -341,11 +341,6 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
var properties = Proxy.GetTorrentProperties(item.DownloadId.ToLower(), Settings);
|
|
||||||
var savePath = new OsPath(properties.SavePath);
|
|
||||||
|
|
||||||
var result = item.Clone();
|
|
||||||
|
|
||||||
// get the first subdirectory - QBittorrent returns `/` path separators even on windows...
|
// get the first subdirectory - QBittorrent returns `/` path separators even on windows...
|
||||||
var relativePath = new OsPath(files[0].Name);
|
var relativePath = new OsPath(files[0].Name);
|
||||||
while (!relativePath.Directory.IsEmpty)
|
while (!relativePath.Directory.IsEmpty)
|
||||||
|
@ -354,10 +349,9 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
|
||||||
}
|
}
|
||||||
|
|
||||||
var outputPath = savePath + relativePath.FileName;
|
var outputPath = savePath + relativePath.FileName;
|
||||||
|
item.OutputPath = _remotePathMappingService.RemapRemoteToLocal(Settings.Host, outputPath);
|
||||||
|
|
||||||
result.OutputPath = _remotePathMappingService.RemapRemoteToLocal(Settings.Host, outputPath);
|
return item;
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override DownloadClientInfo GetStatus()
|
public override DownloadClientInfo GetStatus()
|
||||||
|
|
|
@ -48,6 +48,9 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
|
||||||
|
|
||||||
[JsonProperty(PropertyName = "seeding_time")]
|
[JsonProperty(PropertyName = "seeding_time")]
|
||||||
public long SeedingTime { get; set; } // Torrent seeding time (in seconds)
|
public long SeedingTime { get; set; } // Torrent seeding time (in seconds)
|
||||||
|
|
||||||
|
[JsonProperty(PropertyName = "content_path")]
|
||||||
|
public string ContentPath { get; set; } // Torrent save path
|
||||||
}
|
}
|
||||||
|
|
||||||
public class QBittorrentTorrentFile
|
public class QBittorrentTorrentFile
|
||||||
|
|
Loading…
Reference in New Issue