mirror of
https://github.com/Tyrrrz/DiscordChatExporter.git
synced 2026-02-14 07:43:31 -07:00
Add progress to fetching channels step (#1131)
This commit is contained in:
parent
c5e426289f
commit
ad2dab2157
|
|
@ -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,21 +71,38 @@ 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)
|
||||||
{
|
{
|
||||||
await foreach (
|
AnsiConsole.MarkupLine("Fetching threads...");
|
||||||
var thread in Discord.GetGuildThreadsAsync(
|
await AnsiConsole
|
||||||
guild.Id,
|
.Status()
|
||||||
ThreadInclusionMode == ThreadInclusionMode.All,
|
.StartAsync(
|
||||||
Before,
|
"Found 0 threads.",
|
||||||
After,
|
async ctx =>
|
||||||
cancellationToken
|
{
|
||||||
)
|
await foreach (
|
||||||
)
|
var thread in Discord.GetGuildThreadsAsync(
|
||||||
{
|
guild.Id,
|
||||||
channels.Add(thread);
|
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.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,21 +49,38 @@ 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)
|
||||||
{
|
{
|
||||||
await foreach (
|
AnsiConsole.MarkupLine("Fetching threads...");
|
||||||
var thread in Discord.GetGuildThreadsAsync(
|
await AnsiConsole
|
||||||
GuildId,
|
.Status()
|
||||||
ThreadInclusionMode == ThreadInclusionMode.All,
|
.StartAsync(
|
||||||
Before,
|
"Found 0 threads.",
|
||||||
After,
|
async ctx =>
|
||||||
cancellationToken
|
{
|
||||||
)
|
await foreach (
|
||||||
)
|
var thread in Discord.GetGuildThreadsAsync(
|
||||||
{
|
GuildId,
|
||||||
channels.Add(thread);
|
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);
|
await ExportAsync(console, channels);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue