Fixed downloadpath and contentpath
This commit is contained in:
parent
7f9d6e6cba
commit
55f2c4a338
6 changed files with 51 additions and 39 deletions
|
|
@ -68,7 +68,8 @@ Replace the paths in `volumes` as in the above step.
|
|||
1. Browse to [http://127.0.0.1:6500](http://127.0.0.1:6500) (or the path of your server).
|
||||
1. The very first credentials you enter in will be remembered for future logins.
|
||||
1. Click on `Settings` on the top and enter your Real-Debrid API key (found here: [https://real-debrid.com/apitoken](https://real-debrid.com/apitoken).
|
||||
1. Change your download path if needed. When using Docker, this path will be the path on your local machine.
|
||||
1. If you are using docker then the `Download path` setting needs to be the same as in your docker file mapping. By default this is `/data/downloads`
|
||||
1. Same goes for `Mapped path`, but this is the destination path from your docker mapping. This is a path on your host.
|
||||
1. Save your settings.
|
||||
|
||||
### Troubleshooting
|
||||
|
|
@ -90,6 +91,8 @@ RdtClient emulates the qBittorrent web protocol and allow applications to use th
|
|||
1. Hit `Test` and then `Save` if all is well.
|
||||
1. Sonarr will now think you have a regular Torrent client hooked up.
|
||||
|
||||
When downloading files it will append the `category` setting in the Sonarr/Radarr Download Client setting. For example if your Remote Path setting is set to `C:\Downloads` and your Sonarr Download Client setting `category` is set to `sonarr` files will be downloaded to `C:\Downloads\sonarr`.
|
||||
|
||||
Notice: the progress and ETA reported in Sonarr's Activity tab will not be accurate, but it will report the torrent as completed so it can be processed after it is done downloading.
|
||||
|
||||
## Build instructions
|
||||
|
|
|
|||
|
|
@ -4,15 +4,7 @@
|
|||
</div>
|
||||
<div class="table-container">
|
||||
<table class="table is-fullwidth is-hoverable">
|
||||
<colgroup>
|
||||
<col style="width: calc(60% - 650px)" />
|
||||
<col style="width: 100px" />
|
||||
<col style="width: 150px" />
|
||||
<col style="width: 150px" />
|
||||
<col style="width: 150px" />
|
||||
<col style="width: 40%" />
|
||||
<col style="width: 100px" />
|
||||
</colgroup>
|
||||
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
|
|
|
|||
|
|
@ -216,15 +216,16 @@ namespace RdtClient.Service.Services
|
|||
var downloadPath = await _settings.GetString("MappedPath");
|
||||
downloadPath = downloadPath.TrimEnd('\\')
|
||||
.TrimEnd('/');
|
||||
|
||||
downloadPath += Path.DirectorySeparatorChar;
|
||||
|
||||
|
||||
return downloadPath;
|
||||
}
|
||||
|
||||
public async Task<IList<TorrentInfo>> TorrentInfo()
|
||||
{
|
||||
var savePath = await AppDefaultSavePath();
|
||||
|
||||
|
||||
var results = new List<TorrentInfo>();
|
||||
|
||||
var torrents = await _torrents.Get();
|
||||
|
|
@ -232,6 +233,13 @@ namespace RdtClient.Service.Services
|
|||
var prio = 0;
|
||||
foreach (var torrent in torrents)
|
||||
{
|
||||
var downloadPath = savePath;
|
||||
|
||||
if (!String.IsNullOrWhiteSpace(torrent?.Category))
|
||||
{
|
||||
downloadPath = Path.Combine(downloadPath, torrent.Category);
|
||||
}
|
||||
|
||||
var result = new TorrentInfo();
|
||||
result.AddedOn = torrent.RdAdded.ToUnixTimeSeconds();
|
||||
result.AmountLeft = (Int64) (torrent.RdSize * (100.0 - torrent.RdProgress) / 100.0);
|
||||
|
|
@ -261,7 +269,8 @@ namespace RdtClient.Service.Services
|
|||
result.Progress = (Int64) (torrent.RdProgress / 100.0);
|
||||
result.Ratio = 1;
|
||||
result.RatioLimit = 1;
|
||||
result.SavePath = savePath;
|
||||
result.ContentPath = downloadPath;
|
||||
result.SavePath = downloadPath;
|
||||
result.SeedingTimeLimit = 1;
|
||||
result.SeenComplete = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
|
||||
result.SeqDl = false;
|
||||
|
|
@ -317,13 +326,18 @@ namespace RdtClient.Service.Services
|
|||
public async Task<TorrentProperties> TorrentProperties(String hash)
|
||||
{
|
||||
var savePath = await AppDefaultSavePath();
|
||||
|
||||
|
||||
var torrent = await _torrents.GetByHash(hash);
|
||||
|
||||
if (torrent == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!String.IsNullOrWhiteSpace(torrent.Category))
|
||||
{
|
||||
savePath = Path.Combine(savePath, torrent.Category);
|
||||
}
|
||||
|
||||
var result = new TorrentProperties
|
||||
{
|
||||
|
|
@ -374,19 +388,7 @@ namespace RdtClient.Service.Services
|
|||
return;
|
||||
}
|
||||
|
||||
await _torrents.Delete(torrent.TorrentId, true, true, true);
|
||||
|
||||
if (deleteFiles)
|
||||
{
|
||||
var savePath = await AppDefaultSavePath();
|
||||
|
||||
var torrentPath = Path.Combine(savePath, torrent.RdName);
|
||||
|
||||
if (Directory.Exists(torrentPath))
|
||||
{
|
||||
Directory.Delete(torrentPath, true);
|
||||
}
|
||||
}
|
||||
await _torrents.Delete(torrent.TorrentId, true, true, deleteFiles);
|
||||
}
|
||||
|
||||
public async Task TorrentsAdd(String magnetLink, Boolean autoDownload, Boolean autoUnpack, Boolean autoDelete)
|
||||
|
|
@ -423,7 +425,7 @@ namespace RdtClient.Service.Services
|
|||
m => new TorrentCategory
|
||||
{
|
||||
Name = m.Category,
|
||||
SavePath = savePath
|
||||
SavePath = Path.Combine(savePath, m.Category)
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ namespace RdtClient.Service.Services
|
|||
_logger.LogInformation("TaskRunner started.");
|
||||
|
||||
await torrentRunner.Initialize();
|
||||
|
||||
|
||||
while (!stoppingToken.IsCancellationRequested)
|
||||
{
|
||||
try
|
||||
|
|
|
|||
|
|
@ -63,6 +63,8 @@ namespace RdtClient.Service.Services
|
|||
var settingApiKey = await _settings.GetString("RealDebridApiKey");
|
||||
var minFileSizeSetting = await _settings.GetNumber("MinFileSize");
|
||||
|
||||
minFileSizeSetting = minFileSizeSetting * 1024 * 1024;
|
||||
|
||||
if (String.IsNullOrWhiteSpace(settingApiKey))
|
||||
{
|
||||
return;
|
||||
|
|
@ -168,7 +170,7 @@ namespace RdtClient.Service.Services
|
|||
if (minFileSizeSetting > 0)
|
||||
{
|
||||
fileIds = torrent.Files
|
||||
.Where(m => m.Bytes * 1024 * 1024 > minFileSizeSetting)
|
||||
.Where(m => m.Bytes > minFileSizeSetting)
|
||||
.Select(m => m.Id.ToString())
|
||||
.ToArray();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -165,13 +165,12 @@ namespace RdtClient.Service.Services
|
|||
{
|
||||
if (deleteLocalFiles)
|
||||
{
|
||||
var settingDownloadPath = await _settings.GetString("DownloadPath");
|
||||
var downloadPath = await DownloadPath(torrent);
|
||||
downloadPath = Path.Combine(downloadPath, torrent.RdName);
|
||||
|
||||
var torrentPath = Path.Combine(settingDownloadPath, torrent.RdName);
|
||||
|
||||
if (Directory.Exists(torrentPath))
|
||||
if (Directory.Exists(downloadPath))
|
||||
{
|
||||
Directory.Delete(torrentPath, true);
|
||||
Directory.Delete(downloadPath, true);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -210,10 +209,11 @@ namespace RdtClient.Service.Services
|
|||
public async Task Download(Guid downloadId)
|
||||
{
|
||||
var settingDownloadLimit = await _settings.GetNumber("DownloadLimit");
|
||||
var settingDownloadPath = await _settings.GetString("DownloadPath");
|
||||
|
||||
var download = await _downloads.GetById(downloadId);
|
||||
|
||||
var downloadPath = await DownloadPath(download.Torrent);
|
||||
|
||||
// Check if we have reached the download limit, if so queue the download, but don't start it.
|
||||
if (TorrentRunner.ActiveDownloadClients.Count >= settingDownloadLimit)
|
||||
{
|
||||
|
|
@ -224,7 +224,7 @@ namespace RdtClient.Service.Services
|
|||
await _downloads.UpdateDownloadStarted(download.DownloadId, download.DownloadStarted);
|
||||
|
||||
// Start the download process
|
||||
var downloadClient = new DownloadClient(download, settingDownloadPath);
|
||||
var downloadClient = new DownloadClient(download, downloadPath);
|
||||
|
||||
if (TorrentRunner.ActiveDownloadClients.TryAdd(downloadId, downloadClient))
|
||||
{
|
||||
|
|
@ -235,10 +235,11 @@ namespace RdtClient.Service.Services
|
|||
public async Task Unpack(Guid downloadId)
|
||||
{
|
||||
var settingUnpackLimit = await _settings.GetNumber("UnpackLimit");
|
||||
var settingDownloadPath = await _settings.GetString("DownloadPath");
|
||||
|
||||
var download = await _downloads.GetById(downloadId);
|
||||
|
||||
var downloadPath = await DownloadPath(download.Torrent);
|
||||
|
||||
// Check if the file is even unpackable.
|
||||
var uri = new Uri(download.Link);
|
||||
var fileName = uri.Segments.Last();
|
||||
|
|
@ -270,7 +271,7 @@ namespace RdtClient.Service.Services
|
|||
await _downloads.UpdateUnpackingStarted(download.DownloadId, download.UnpackingStarted);
|
||||
|
||||
// Start the unpacking process
|
||||
var unpackClient = new UnpackClient(download, settingDownloadPath);
|
||||
var unpackClient = new UnpackClient(download, downloadPath);
|
||||
|
||||
if (TorrentRunner.ActiveUnpackClients.TryAdd(downloadId, unpackClient))
|
||||
{
|
||||
|
|
@ -388,6 +389,18 @@ namespace RdtClient.Service.Services
|
|||
await _torrentData.UpdateComplete(torrentId, datetime);
|
||||
}
|
||||
|
||||
private async Task<String> DownloadPath(Torrent torrent)
|
||||
{
|
||||
var settingDownloadPath = await _settings.GetString("DownloadPath");
|
||||
|
||||
if (!String.IsNullOrWhiteSpace(torrent.Category))
|
||||
{
|
||||
settingDownloadPath = Path.Combine(settingDownloadPath, torrent.Category);
|
||||
}
|
||||
|
||||
return settingDownloadPath;
|
||||
}
|
||||
|
||||
private async Task Update(Torrent torrent, RDNET.Torrent rdTorrent)
|
||||
{
|
||||
if (!String.IsNullOrWhiteSpace(rdTorrent.Filename))
|
||||
|
|
|
|||
Loading…
Reference in a new issue