simplify thread export instructions in the docs

This commit is contained in:
slatinsky 2023-10-09 02:01:53 +02:00
parent eae2198a4e
commit 8e1be924c8
3 changed files with 18 additions and 171 deletions

View file

@ -16,7 +16,7 @@ Browse your [Discord chat exports](https://github.com/Tyrrrz/DiscordChatExporter
## Quick start (Windows)
1. Export your data from Discord using [DiscordChatExporter](https://github.com/Tyrrrz/DiscordChatExporter/tree/master/.docs). Your export should be in JSON format, disable `format markdown` option and enable `download assets` and `reuse assets` options. If exporting using a CLI - use `--media --reuse-media --markdown false --format Json` command line options. More information in [How to export data from Discord to view it in DCEF?](#supported-exports)
1. Export your data from Discord using [DiscordChatExporter](https://github.com/Tyrrrz/DiscordChatExporter/tree/master/.docs). Your export should be in JSON format, disable `format markdown` option and enable `download assets` and `reuse assets` options. If exporting using a CLI - use `--media --reuse-media --markdown false --format Json` command line options. Include threads and forum posts by adding `--include-threads All` option. More information in [How to export data from Discord to view it in DCEF?](#supported-exports)
2. Download the latest release from [releases page](https://github.com/slatinsky/DiscordChatExporter-frontend/releases)
3. Extract the archive
4. Move all your [DiscordChatExporter](https://github.com/Tyrrrz/DiscordChatExporter) exports to `/exports/` folder ([supported exports](#supported-exports)).
@ -152,15 +152,27 @@ JSON exports are created using [DiscordChatExporter](https://github.com/Tyrrrz/D
> - JSON export format (`--format Json`) is required
> - Skipping markdown prerendering (`--markdown false`) is highly recommended, but not required
> - Downloading assets (`--media --reuse-media`) is highly recommended, but not required
> - Including threads (`--include-threads All`) is recommended for a full server export
<details><summary><b>Partial export using GUI version of DiscordChatExporter</b></summary>
<details><summary><b>Incremental export using DiscordChatExporter-incrementalBackup wrapper</b></summary>
I have created simple wrapper for DiscordChatExporter to simplify the process of incremental export for this frontend viewer. You declare what you want to export in a config file and the wrapper will automatically export only new messages since the last export.
For more information and instructions how to use, see [slatinsky/DiscordChatExporter-incrementalBackup](https://github.com/slatinsky/DiscordChatExporter-incrementalBackup)
</details>
<details><summary><b>Full export using GUI version of DiscordChatExporter</b></summary>
Make sure that export format is set to `JSON` and `Format markdown` is disabled. Optionally, you should also enable `Download assets`+`Reuse assets` option to download images, videos and other types of assets.
Recently `Show threads` option was added to the general settings of DiscordChatExporter - if you want to export threads. Note that fetching threads is slow and it may take a while to show them in the GUI.
![](docs/dce-export-more.png)
**NOTE**: You can't export threads and forums using GUI version of DCE. You need to use CLI version for that.
Note: Exporting using CLI version of DiscordChatExporter is actually easier if you want to mass export everything.
</details>
@ -168,23 +180,11 @@ Make sure that export format is set to `JSON` and `Format markdown` is disabled.
<details><summary><b>Full server export using CLI version of DiscordChatExporter</b></summary>
Export all accessible channels in a server (**without threads and forum posts**):
Export all accessible channels, threads and forum posts in a server:
```bash
DiscordChatExporter.Cli.exe exportguild --token DISCORD_TOKEN -g SERVER_ID --media --reuse-media --markdown false --format Json --output OUTPUT_FOLDER_PATH
DiscordChatExporter.Cli.exe exportguild --token DISCORD_TOKEN -g SERVER_ID --media --reuse-media --markdown false --format Json --include-threads All --output OUTPUT_FOLDER_PATH
```
Export threads/forum posts (you can pass multiple thread/forum post ids):
```bash
DiscordChatExporter.Cli export --token DISCORD_TOKEN --media --reuse-media --markdown false --output OUTPUT_FOLDER_PATH --format Json --channel THREAD_ID_OR_FORUM_POST_ID_1 THREAD_ID_OR_FORUM_POST_ID_2 THREAD_ID_OR_FORUM_POST_ID_3 THREAD_ID_OR_FORUM_POST_ID_4
```
Don't want to manually right click all threads/forums post and copy their ids? These helper scripts can help you:
[Helper script to export archived threads in a channel](docs/Exporting-threads.md)
[Helper script to export forum posts in a channel](docs/Exporting-threads.md)
</details>
@ -313,6 +313,7 @@ And for other technologies used in this project - sveltekit, docker, nodejs, nvm
- [Tyrrrz/DiscordChatExporter](https://github.com/Tyrrrz/DiscordChatExporter) - exporter for your Discord chats
- [Roachbones/discordless](https://github.com/Roachbones/discordless) - real time man-in-the-middle exporter
- [mlomb/chat-analytics](https://github.com/mlomb/chat-analytics) - analytics for your Discord chats
- [slatinsky/DiscordChatExporter-incrementalBackup](https://github.com/slatinsky/DiscordChatExporter-incrementalBackup) - incrementally export your Discord chats for DiscordChatExporter-frontend
## License
GNU GENERAL PUBLIC LICENSE. See [LICENSE](LICENSE) for more details.

View file

@ -1,48 +0,0 @@
# Helper script to export forum posts in a channel
Viewing forums is supported by this viewer, but exporting them manually is time consuming. You can use this helper script to generate command to download all forum posts in a forum channel automatically:
### Steps
1. Open discord in browser (browser needs to be Chromium based - Chrome, Edge, Opera, Brave, Vivaldi, etc., not working in Firefox)
2. Navigate to channel with forum post list
3. press F12 and paste this script to the console:
```js
len = 0
ids = []
previouseScrollTop = 0
function scrollToPosition(offset) {
scrollDiv = document.querySelector('div[class*="chat-"] > div > div > div[class*="scrollerBase-"]')
scrollDiv.scroll(0, offset)
}
function captureIds() {
document.querySelectorAll('div[data-item-id]').forEach((e) => ids.push(e.dataset.itemId))
ids = [...new Set(ids)]
if (ids.length > len) {
len = ids.length
console.log('Found', len, 'IDs')
}
}
function printIds() {
console.log('DiscordChatExporter.Cli.exe export --token TOKEN --output "exports/forums" --format Json --media --reuse-media --markdown false --channel',ids.join(' '))
}
scrollToPosition(0)
interval = setInterval(() => {
scrollToPosition(scrollDiv.scrollTop + window.innerHeight / 3)
setTimeout(() => {
captureIds()
if (previouseScrollTop === scrollDiv.scrollTop) {
clearInterval(interval)
printIds()
}
previouseScrollTop = scrollDiv.scrollTop
}, 1000)
}, 1542)
```
4. script will scroll the page. At the the end, it will print command to the console, which allows you to export all forum posts in the forum channel
5. edit command printed in the console (`--format`, `--output` and `--token`) and export with CLI version of DiscordChatExporter

View file

@ -1,106 +0,0 @@
# Helper script to export forum posts in a channel
Viewing threads is supported by this viewer, but exporting them manually is time consuming. You can use this helper script to generate command to download all archived threads in a channel automatically:
### Steps
1. Open discord in browser (browser needs to be Chromium based - Chrome, Edge, Opera, Brave, Vivaldi, etc., not working in Firefox)
2. Navigate to channel with threads. Do not open thread list (if you opened it, refresh the page)
3. press F12 and paste this script to the console:
```js
len = 0
ids = []
previouseScrollTop = 0
// interceptor https://stackoverflow.com/a/66564476
if (window.oldXHROpen === undefined) {
window.oldXHROpen = window.XMLHttpRequest.prototype.open;
window.XMLHttpRequest.prototype.open = function(method, url, async, user, password) {
this.addEventListener('load', function() {
try {
var json = JSON.parse(this.responseText);
if (json.hasOwnProperty('threads')) {
// get ids
for (const thread of json.threads) {
ids.push(thread.id)
}
}
}
catch (e) {
console.log(e)
}
});
return window.oldXHROpen.apply(this, arguments);
}
}
else {
console.log('OK, interceptor already exists')
}
function getSelector(name) {
if (name === 'thread-icon')
return document.querySelectorAll('div[class*="toolbar-"] > div[aria-label="Threads"]')
if (name === 'scroller-base')
return document.querySelectorAll('div[id*="popout_"] > div > div > div[class*="scrollerBase-"]')
}
function clickThreadsIcon() {
if (getSelector('scroller-base').length > 0) {
console.log('OK, found scroller base (1)')
mainFunc()
}
else if (getSelector('scroller-base').length == 0 && getSelector('thread-icon').length > 0) {
getSelector('thread-icon')[0].click()
console.log('OK, clicked Threads Icon')
setTimeout(() => {
if (getSelector('scroller-base').length == 0) {
throw new Error('ERROR, could not find scroller-base')
}
else {
console.log('OK, found scroller base (2)')
mainFunc()
}
}, 1000)
}
else {
throw new Error('ERROR, could not find threads icon')
}
}
clickThreadsIcon()
function scrollToPosition(offset) {
scrollDiv = getSelector('scroller-base')[0]
scrollDiv.scroll(0, offset)
}
function captureIds() {
ids = [...new Set(ids)]
if (ids.length > len) {
len = ids.length
console.log('Found', len, 'IDs')
}
}
function printIds() {
console.log('DiscordChatExporter.Cli.exe export --token TOKEN --output "exports/threads" --format Json --media --reuse-media --markdown false --channel',ids.join(' '))
}
function mainFunc() {
scrollToPosition(0)
interval = setInterval(() => {
scrollToPosition(scrollDiv.scrollTop + window.innerHeight / 3)
setTimeout(() => {
captureIds()
if (previouseScrollTop === scrollDiv.scrollTop) {
clearInterval(interval)
printIds()
}
previouseScrollTop = scrollDiv.scrollTop
}, 500)
}, 742)
}
```
4. script will scroll thread list. At the the end, it will print command to the console, which allows you to export all archived threads in the channel
5. edit command printed in the console (`--format`, `--output` and `--token`) and export with CLI version of DiscordChatExporter