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

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

Loading…
Cancel
Save