fixed using root directory instead of root path

This commit is contained in:
Flaminel
2025-02-22 02:14:09 +02:00
parent 5bd2a9cbea
commit bd81f2ffca
4 changed files with 46 additions and 8 deletions
@@ -1,4 +1,5 @@
using System.Collections.Concurrent;
using System.Diagnostics.CodeAnalysis;
using System.Text.RegularExpressions;
using Common.Configuration.ContentBlocker;
using Common.Configuration.DownloadCleaner;
@@ -145,6 +146,26 @@ public abstract class DownloadService : IDownloadService
return new();
}
protected string? GetRootWithFirstDirectory(string path)
{
if (string.IsNullOrWhiteSpace(path))
{
return null;
}
string? root = Path.GetPathRoot(path);
if (root is null)
{
return null;
}
string relativePath = path[root.Length..].TrimStart(Path.DirectorySeparatorChar);
string[] parts = relativePath.Split(Path.DirectorySeparatorChar, StringSplitOptions.RemoveEmptyEntries);
return parts.Length > 0 ? Path.Combine(root, parts[0]) : root;
}
private bool DownloadReachedRatio(double ratio, TimeSpan seedingTime, CleanCategory category)
{
if (category.MaxRatio < 0)
@@ -317,8 +317,24 @@ public class QBitService : DownloadService, IQBitService
{
downloads
.Cast<TorrentInfo>()
.GroupBy(x => Path.GetPathRoot(x.SavePath))
.Select(x => x.Key)
.Select(x =>
{
string? firstDir = GetRootWithFirstDirectory(x.SavePath);
if (string.IsNullOrEmpty(firstDir))
{
return string.Empty;
}
if (firstDir == Path.GetPathRoot(x.SavePath))
{
return string.Empty;
}
return firstDir;
})
.Where(x => !string.IsNullOrEmpty(x))
.Distinct()
.ToList()
.ForEach(x =>
{