@@ -251,6 +251,15 @@ IReadOnlyList<string> ignoredDownloads
251
251
? . Cast < TorrentInfo > ( )
252
252
. Where ( x => ! string . IsNullOrEmpty ( x . Hash ) )
253
253
. Where ( x => categories . Any ( cat => cat . Equals ( x . Category , StringComparison . InvariantCultureIgnoreCase ) ) )
254
+ . Where ( x =>
255
+ {
256
+ if ( _downloadCleanerConfig . UnlinkedUseTag )
257
+ {
258
+ return ! x . Tags . Any ( tag => tag . Equals ( _downloadCleanerConfig . UnlinkedTargetCategory , StringComparison . InvariantCultureIgnoreCase ) ) ;
259
+ }
260
+
261
+ return true ;
262
+ } )
254
263
. Cast < object > ( )
255
264
. ToList ( ) ;
256
265
@@ -436,12 +445,18 @@ public override async Task ChangeCategoryForNoHardLinksAsync(List<object>? downl
436
445
}
437
446
438
447
await _dryRunInterceptor . InterceptAsync ( ChangeCategory , download . Hash , _downloadCleanerConfig . UnlinkedTargetCategory ) ;
448
+
449
+ if ( _downloadCleanerConfig . UnlinkedUseTag )
450
+ {
451
+ _logger . LogInformation ( "category changed for {name}" , download . Name ) ;
452
+ download . Category = _downloadCleanerConfig . UnlinkedTargetCategory ;
453
+ }
454
+ else
455
+ {
456
+ _logger . LogInformation ( "tag added for {name}" , download . Name ) ;
457
+ }
439
458
440
- _logger . LogInformation ( "category changed for {name}" , download . Name ) ;
441
-
442
- await _notifier . NotifyCategoryChanged ( download . Category , _downloadCleanerConfig . UnlinkedTargetCategory ) ;
443
-
444
- download . Category = _downloadCleanerConfig . UnlinkedTargetCategory ;
459
+ await _notifier . NotifyCategoryChanged ( download . Category , _downloadCleanerConfig . UnlinkedTargetCategory , _downloadCleanerConfig . UnlinkedUseTag ) ;
445
460
}
446
461
}
447
462
@@ -467,6 +482,12 @@ protected virtual async Task SkipFile(string hash, int fileIndex)
467
482
[ DryRunSafeguard ]
468
483
protected virtual async Task ChangeCategory ( string hash , string newCategory )
469
484
{
485
+ if ( _downloadCleanerConfig . UnlinkedUseTag )
486
+ {
487
+ await _client . AddTorrentTagAsync ( [ hash ] , newCategory ) ;
488
+ return ;
489
+ }
490
+
470
491
await _client . SetTorrentCategoryAsync ( [ hash ] , newCategory ) ;
471
492
}
472
493
0 commit comments