diff --git a/Cajetan.OF-DL/Worker.cs b/Cajetan.OF-DL/Worker.cs index c09d182..a9cb260 100644 --- a/Cajetan.OF-DL/Worker.cs +++ b/Cajetan.OF-DL/Worker.cs @@ -177,20 +177,21 @@ internal class Worker(IServiceProvider serviceProvider) devicePrivateKeyMissing: _devicePrivateKeyMissing, eventHandler: eventHandler ); + CreatorDownloadResult newResults = results.NewDownloads ?? results; - totalResults.Add(results); + totalResults.Add(newResults); DateTime userEndTime = DateTime.Now; TimeSpan userTotalTime = userEndTime - userStartTime; - Log.ForContext("Paid Posts", results.PaidPostCount) - .ForContext("Posts", results.PostCount) - .ForContext("Archived", results.ArchivedCount) - .ForContext("Streams", results.StreamsCount) - .ForContext("Stories", results.StoriesCount) - .ForContext("Highlights", results.HighlightsCount) - .ForContext("Messages", results.MessagesCount) - .ForContext("Paid Messages", results.PaidMessagesCount) + Log.ForContext("Paid Posts", newResults.PaidPostCount) + .ForContext("Posts", newResults.PostCount) + .ForContext("Archived", newResults.ArchivedCount) + .ForContext("Streams", newResults.StreamsCount) + .ForContext("Stories", newResults.StoriesCount) + .ForContext("Highlights", newResults.HighlightsCount) + .ForContext("Messages", newResults.MessagesCount) + .ForContext("Paid Messages", newResults.PaidMessagesCount) .ForContext("Username", username) .ForContext("TotalMinutes", userTotalTime.TotalMinutes) .Information("Scraped Data for '{Username:l}', took {TotalMinutes:0.000} minutes"); @@ -220,6 +221,8 @@ internal class Worker(IServiceProvider serviceProvider) .ForContext("Paid Messages", totalResults.PaidMessagesCount) .ForContext("TotalMinutes", totalTime.TotalMinutes) .Information("Scrape Completed in {TotalMinutes:0.00} minutes"); + + await Task.Delay(2000); } private async Task OutputBlockedUsersAsync() diff --git a/OF DL.Core/Models/Downloads/CreatorDownloadResult.cs b/OF DL.Core/Models/Downloads/CreatorDownloadResult.cs index d686e1b..0439924 100644 --- a/OF DL.Core/Models/Downloads/CreatorDownloadResult.cs +++ b/OF DL.Core/Models/Downloads/CreatorDownloadResult.cs @@ -17,6 +17,8 @@ public class CreatorDownloadResult public int MessagesCount { get; set; } public int PaidMessagesCount { get; set; } + + public CreatorDownloadResult? NewDownloads { get; set; } } public class UserListResult diff --git a/OF DL.Core/Services/DownloadOrchestrationService.cs b/OF DL.Core/Services/DownloadOrchestrationService.cs index 2a27c79..c51767c 100644 --- a/OF DL.Core/Services/DownloadOrchestrationService.cs +++ b/OF DL.Core/Services/DownloadOrchestrationService.cs @@ -160,6 +160,7 @@ public class DownloadOrchestrationService( { Config config = configService.CurrentConfig; CreatorDownloadResult counts = new(); + CreatorDownloadResult newCounts = new(); eventHandler.OnUserStarting(username); Log.Debug($"Scraping Data for {username}"); @@ -185,7 +186,8 @@ public class DownloadOrchestrationService( posts => posts.PaidPosts.Values.ToList(), async (posts, reporter) => await downloadService.DownloadPaidPosts(username, userId, path, users, clientIdBlobMissing, devicePrivateKeyMissing, posts, reporter), - eventHandler); + eventHandler, + n => newCounts.PaidPostCount = n); } if (config.DownloadPosts) @@ -202,7 +204,8 @@ public class DownloadOrchestrationService( posts => posts.Posts.Values.ToList(), async (posts, reporter) => await downloadService.DownloadFreePosts(username, userId, path, users, clientIdBlobMissing, devicePrivateKeyMissing, posts, reporter), - eventHandler); + eventHandler, + n => newCounts.PostCount = n); } if (config.DownloadArchived) @@ -215,7 +218,8 @@ public class DownloadOrchestrationService( archived => archived.ArchivedPosts.Values.ToList(), async (archived, reporter) => await downloadService.DownloadArchived(username, userId, path, users, clientIdBlobMissing, devicePrivateKeyMissing, archived, reporter), - eventHandler); + eventHandler, + n => newCounts.ArchivedCount = n); } if (config.DownloadStreams) @@ -228,7 +232,8 @@ public class DownloadOrchestrationService( streams => streams.Streams.Values.ToList(), async (streams, reporter) => await downloadService.DownloadStreams(username, userId, path, users, clientIdBlobMissing, devicePrivateKeyMissing, streams, reporter), - eventHandler); + eventHandler, + n => newCounts.StreamsCount = n); } if (config.DownloadStories) @@ -252,6 +257,7 @@ public class DownloadOrchestrationService( eventHandler.OnDownloadComplete("Stories", result); counts.StoriesCount = result.TotalCount; + newCounts.StoriesCount = result.NewDownloads; } else { @@ -280,6 +286,7 @@ public class DownloadOrchestrationService( eventHandler.OnDownloadComplete("Highlights", result); counts.HighlightsCount = result.TotalCount; + newCounts.HighlightsCount = result.NewDownloads; } else { @@ -297,7 +304,8 @@ public class DownloadOrchestrationService( messages => messages.Messages.Values.ToList(), async (messages, reporter) => await downloadService.DownloadMessages(username, userId, path, users, clientIdBlobMissing, devicePrivateKeyMissing, messages, reporter), - eventHandler); + eventHandler, + n => newCounts.MessagesCount = n); } if (config.DownloadPaidMessages) @@ -310,10 +318,13 @@ public class DownloadOrchestrationService( paidMessages => paidMessages.PaidMessages.Values.ToList(), async (paidMessages, reporter) => await downloadService.DownloadPaidMessages(username, path, users, clientIdBlobMissing, devicePrivateKeyMissing, paidMessages, reporter), - eventHandler); + eventHandler, + n => newCounts.PaidMessagesCount = n); } eventHandler.OnUserComplete(username, counts); + + counts.NewDownloads = newCounts; return counts; } @@ -612,7 +623,8 @@ public class DownloadOrchestrationService( Func getObjectCount, Func?> getUrls, Func> downloadData, - IDownloadEventHandler eventHandler) + IDownloadEventHandler eventHandler, + Action? newPostAssignmentAction) { T data = await eventHandler.WithStatusAsync($"Getting {contentType}", async statusReporter => await fetchData(statusReporter)); @@ -643,6 +655,8 @@ public class DownloadOrchestrationService( Log.Debug( $"{contentType} Already Downloaded: {result.ExistingDownloads} New {contentType} Downloaded: {result.NewDownloads}"); + newPostAssignmentAction?.Invoke(result.NewDownloads); + return result.TotalCount; } }