OFDL: Added output of new counts in DownloadOrchestrationService

This commit is contained in:
Casper Sparre 2026-02-20 18:53:55 +01:00
parent 16096c5815
commit 7a4b145641
2 changed files with 23 additions and 7 deletions

View File

@ -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

View File

@ -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<T, int> getObjectCount,
Func<T, List<string>?> getUrls,
Func<T, IProgressReporter, Task<DownloadResult>> downloadData,
IDownloadEventHandler eventHandler)
IDownloadEventHandler eventHandler,
Action<int>? newPostAssignmentAction)
{
T data = await eventHandler.WithStatusAsync($"Getting {contentType}",
async statusReporter => await fetchData(statusReporter));
@ -643,6 +655,8 @@ public class DownloadOrchestrationService(
Log.Debug(
$"{contentType} Media Already Downloaded: {result.ExistingDownloads} New {contentType} Media Downloaded: {result.NewDownloads}");
newPostAssignmentAction?.Invoke(result.NewDownloads);
return result.TotalCount;
}
}