Add progress to fetching channels step (#1131)

pull/1138/head
Adam Slatinský 1 year ago committed by GitHub
parent c5e426289f
commit ad2dab2157
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -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."
);
}
}
}

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

Loading…
Cancel
Save