Add progress to fetching channels step (#1131)

This commit is contained in:
Adam Slatinský
2023-10-08 22:56:39 +02:00
committed by GitHub
parent c5e426289f
commit ad2dab2157
2 changed files with 64 additions and 26 deletions

View File

@@ -1,5 +1,6 @@
using System.Collections.Generic;
using System.IO.Compression;
using System.Linq;
using System.Text.Json;
using System.Threading.Tasks;
using CliFx.Attributes;
@@ -12,6 +13,7 @@ using DiscordChatExporter.Core.Discord;
using DiscordChatExporter.Core.Discord.Data;
using DiscordChatExporter.Core.Exceptions;
using JsonExtensions.Reading;
using Spectre.Console;
namespace DiscordChatExporter.Cli.Commands;
@@ -51,10 +53,10 @@ public class ExportAllCommand : ExportCommandBase
// Pull from the API
if (string.IsNullOrWhiteSpace(DataPackageFilePath))
{
await console.Output.WriteLineAsync("Fetching channels...");
await foreach (var guild in Discord.GetUserGuildsAsync(cancellationToken))
{
await console.Output.WriteLineAsync($"Fetching channels for guild '{guild.Name}'...");
// Regular channels
await foreach (
var channel in Discord.GetGuildChannelsAsync(guild.Id, cancellationToken)
@@ -69,21 +71,38 @@ public class ExportAllCommand : ExportCommandBase
channels.Add(channel);
}
await console.Output.WriteLineAsync($" Found {channels.Count} channels.");
// Threads
if (ThreadInclusionMode != ThreadInclusionMode.None)
{
await foreach (
var thread in Discord.GetGuildThreadsAsync(
guild.Id,
ThreadInclusionMode == ThreadInclusionMode.All,
Before,
After,
cancellationToken
)
)
{
channels.Add(thread);
}
AnsiConsole.MarkupLine("Fetching threads...");
await AnsiConsole
.Status()
.StartAsync(
"Found 0 threads.",
async ctx =>
{
await foreach (
var thread in Discord.GetGuildThreadsAsync(
guild.Id,
ThreadInclusionMode == ThreadInclusionMode.All,
Before,
After,
cancellationToken
)
)
{
channels.Add(thread);
ctx.Status(
$"Found {channels.Count(channel => channel.IsThread)} threads: {thread.GetHierarchicalName()}"
);
}
}
);
await console.Output.WriteLineAsync(
$" Found {channels.Count(channel => channel.IsThread)} threads."
);
}
}
}

View File

@@ -1,4 +1,5 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using CliFx.Attributes;
using CliFx.Infrastructure;
@@ -7,6 +8,7 @@ using DiscordChatExporter.Cli.Commands.Converters;
using DiscordChatExporter.Cli.Commands.Shared;
using DiscordChatExporter.Core.Discord;
using DiscordChatExporter.Core.Discord.Data;
using Spectre.Console;
namespace DiscordChatExporter.Cli.Commands;
@@ -47,21 +49,38 @@ public class ExportGuildCommand : ExportCommandBase
channels.Add(channel);
}
await console.Output.WriteLineAsync($" Found {channels.Count} channels.");
// Threads
if (ThreadInclusionMode != ThreadInclusionMode.None)
{
await foreach (
var thread in Discord.GetGuildThreadsAsync(
GuildId,
ThreadInclusionMode == ThreadInclusionMode.All,
Before,
After,
cancellationToken
)
)
{
channels.Add(thread);
}
AnsiConsole.MarkupLine("Fetching threads...");
await AnsiConsole
.Status()
.StartAsync(
"Found 0 threads.",
async ctx =>
{
await foreach (
var thread in Discord.GetGuildThreadsAsync(
GuildId,
ThreadInclusionMode == ThreadInclusionMode.All,
Before,
After,
cancellationToken
)
)
{
channels.Add(thread);
ctx.Status(
$"Found {channels.Count(channel => channel.IsThread)} threads: {thread.GetHierarchicalName()}"
);
}
}
);
await console.Output.WriteLineAsync(
$" Found {channels.Count(channel => channel.IsThread)} threads."
);
}
await ExportAsync(console, channels);