|
|
@ -45,25 +45,51 @@ namespace DiscordChatExporter.Cli.Tests.Fixtures
|
|
|
|
return Html.Parse(data);
|
|
|
|
return Html.Parse(data);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public async ValueTask<IElement> GetMessageAsHtmlAsync(Snowflake channelId, Snowflake messageId)
|
|
|
|
public async ValueTask<JsonElement> ExportAsJsonAsync(Snowflake channelId)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var document = await ExportAsHtmlAsync(channelId);
|
|
|
|
var filePath = Path.Combine(DirPath, channelId + ".json");
|
|
|
|
|
|
|
|
|
|
|
|
var message = document.QuerySelector("#message-" + messageId);
|
|
|
|
// Perform export only if it hasn't been done before
|
|
|
|
|
|
|
|
if (!File.Exists(filePath))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
await new ExportChannelsCommand
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
TokenValue = Secrets.DiscordToken,
|
|
|
|
|
|
|
|
IsBotToken = Secrets.IsDiscordTokenBot,
|
|
|
|
|
|
|
|
ChannelIds = new[] { channelId },
|
|
|
|
|
|
|
|
ExportFormat = ExportFormat.Json,
|
|
|
|
|
|
|
|
OutputPath = filePath
|
|
|
|
|
|
|
|
}.ExecuteAsync(new FakeConsole());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (message is null)
|
|
|
|
var data = await File.ReadAllTextAsync(filePath);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return Json.Parse(data);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public async ValueTask<string> ExportAsPlainTextAsync(Snowflake channelId)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
var filePath = Path.Combine(DirPath, channelId + ".txt");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Perform export only if it hasn't been done before
|
|
|
|
|
|
|
|
if (!File.Exists(filePath))
|
|
|
|
{
|
|
|
|
{
|
|
|
|
throw new InvalidOperationException(
|
|
|
|
await new ExportChannelsCommand
|
|
|
|
$"Message '{messageId}' does not exist in export of channel '{channelId}'."
|
|
|
|
{
|
|
|
|
);
|
|
|
|
TokenValue = Secrets.DiscordToken,
|
|
|
|
|
|
|
|
IsBotToken = Secrets.IsDiscordTokenBot,
|
|
|
|
|
|
|
|
ChannelIds = new[] { channelId },
|
|
|
|
|
|
|
|
ExportFormat = ExportFormat.PlainText,
|
|
|
|
|
|
|
|
OutputPath = filePath
|
|
|
|
|
|
|
|
}.ExecuteAsync(new FakeConsole());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return message;
|
|
|
|
return await File.ReadAllTextAsync(filePath);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public async ValueTask<JsonElement> ExportAsJsonAsync(Snowflake channelId)
|
|
|
|
public async ValueTask<string> ExportAsCsvAsync(Snowflake channelId)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var filePath = Path.Combine(DirPath, channelId + ".json");
|
|
|
|
var filePath = Path.Combine(DirPath, channelId + ".csv");
|
|
|
|
|
|
|
|
|
|
|
|
// Perform export only if it hasn't been done before
|
|
|
|
// Perform export only if it hasn't been done before
|
|
|
|
if (!File.Exists(filePath))
|
|
|
|
if (!File.Exists(filePath))
|
|
|
@ -73,14 +99,28 @@ namespace DiscordChatExporter.Cli.Tests.Fixtures
|
|
|
|
TokenValue = Secrets.DiscordToken,
|
|
|
|
TokenValue = Secrets.DiscordToken,
|
|
|
|
IsBotToken = Secrets.IsDiscordTokenBot,
|
|
|
|
IsBotToken = Secrets.IsDiscordTokenBot,
|
|
|
|
ChannelIds = new[] { channelId },
|
|
|
|
ChannelIds = new[] { channelId },
|
|
|
|
ExportFormat = ExportFormat.Json,
|
|
|
|
ExportFormat = ExportFormat.Csv,
|
|
|
|
OutputPath = filePath
|
|
|
|
OutputPath = filePath
|
|
|
|
}.ExecuteAsync(new FakeConsole());
|
|
|
|
}.ExecuteAsync(new FakeConsole());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
var data = await File.ReadAllTextAsync(filePath);
|
|
|
|
return await File.ReadAllTextAsync(filePath);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return Json.Parse(data);
|
|
|
|
public async ValueTask<IElement> GetMessageAsHtmlAsync(Snowflake channelId, Snowflake messageId)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
var document = await ExportAsHtmlAsync(channelId);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var message = document.QuerySelector("#message-" + messageId);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (message is null)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
throw new InvalidOperationException(
|
|
|
|
|
|
|
|
$"Message '{messageId}' does not exist in export of channel '{channelId}'."
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return message;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public async ValueTask<JsonElement> GetMessageAsJsonAsync(Snowflake channelId, Snowflake messageId)
|
|
|
|
public async ValueTask<JsonElement> GetMessageAsJsonAsync(Snowflake channelId, Snowflake messageId)
|
|
|
|