diff --git a/API/Schema/MangaContext/Chapter.cs b/API/Schema/MangaContext/Chapter.cs index ce84cc9..87c4d8c 100644 --- a/API/Schema/MangaContext/Chapter.cs +++ b/API/Schema/MangaContext/Chapter.cs @@ -144,6 +144,20 @@ public class Chapter : Identifiable, IComparable return stringBuilder.ToString(); } + public class ChapterComparer : IComparer + { + public int Compare(Chapter? x, Chapter? y) + { + if (x is null && y is null) + return 0; + if(x is null) + return -1; + if (y is null) + return 1; + return CompareChapterNumbers(x.ChapterNumber, y.ChapterNumber); + } + } + private static int CompareChapterNumbers(string ch1, string ch2) { int[] ch1Arr = ch1.Split('.').Select(c => int.TryParse(c, out int result) ? result : -1).ToArray(); diff --git a/API/Workers/PeriodicWorkers/StartNewChapterDownloadsWorker.cs b/API/Workers/PeriodicWorkers/StartNewChapterDownloadsWorker.cs index 272cb9f..315a7c3 100644 --- a/API/Workers/PeriodicWorkers/StartNewChapterDownloadsWorker.cs +++ b/API/Workers/PeriodicWorkers/StartNewChapterDownloadsWorker.cs @@ -27,9 +27,9 @@ public class StartNewChapterDownloadsWorker(TimeSpan? interval = null, IEnumerab // Maximum Concurrent workers int downloadWorkers = Tranga.GetRunningWorkers().Count(w => w.GetType() == typeof(DownloadChapterFromMangaconnectorWorker)); int amountNewWorkers = Math.Min(Tranga.Settings.MaxConcurrentDownloads, Tranga.Settings.MaxConcurrentDownloads - downloadWorkers); + Log.Debug($"{downloadWorkers} running download Workers. {amountNewWorkers} new download Workers."); - IEnumerable> newDownloadChapters = missingChapters.Take(amountNewWorkers); - + IEnumerable> newDownloadChapters = missingChapters.OrderBy(ch => ch.Obj, new Chapter.ChapterComparer()).Take(amountNewWorkers); // Create new jobs List newWorkers = newDownloadChapters.Select(mcId => new DownloadChapterFromMangaconnectorWorker(mcId)).ToList();