finally
This commit is contained in:
81
src/index.js
Normal file
81
src/index.js
Normal file
@ -0,0 +1,81 @@
|
||||
import { processPostsAndComments } from './parser.js';
|
||||
import { writeSql } from './sql.js';
|
||||
|
||||
import { join } from "node:path";
|
||||
// es6 >:(
|
||||
import path from 'path';
|
||||
import {
|
||||
fileURLToPath
|
||||
} from 'url';
|
||||
|
||||
import { exists, existsSync, writeFileSync, appendFileSync } from 'node:fs';
|
||||
|
||||
export const __filename = fileURLToPath(
|
||||
import.meta.url);
|
||||
export const __dirname = path.dirname(__filename);
|
||||
|
||||
import yargs from 'yargs';
|
||||
|
||||
// https://github.com/yargs/yargs/blob/main/docs/examples.md section "Yargs is here to help you..."
|
||||
var args = yargs(process.argv.slice(2))
|
||||
.alias('c', 'comm')
|
||||
.alias('u', 'user')
|
||||
.alias('o', 'output')
|
||||
.describe({
|
||||
'c': 'Name of the community the archive will be added to',
|
||||
'u': 'Name of the user the archived posts will be made by',
|
||||
'o': 'Path that the .sql file will save to',
|
||||
'posts': 'The JSON dump file of submissions you got from https://the-eye.eu/redarcs/',
|
||||
'comments': 'The JSON dump file of comments',
|
||||
})
|
||||
.string(['comm', 'user', 'output', 'posts', 'comments'])
|
||||
.nargs(['comm', 'user', 'output', 'posts', 'comments'], 1)
|
||||
.demandOption(['comm', 'user', 'output', 'posts', 'comments'])
|
||||
.help('h')
|
||||
.alias('h', 'help')
|
||||
.epilog("git: https://git.stardust.wtf/starlight/reddit-lemmy-importer")
|
||||
.parse();
|
||||
|
||||
|
||||
/* // returns the trees filename
|
||||
processPostsAndComments(args.posts, args.comments, (result) => {
|
||||
console.log(result)
|
||||
}); */
|
||||
|
||||
function printThreadStructure(thread, level = 0) {
|
||||
thread.forEach(item => {
|
||||
var out = '';
|
||||
out += ' '.repeat(level) + `${item.name} by ${item.author}: `
|
||||
// reddit item type 3 = submission/post, else its a comment
|
||||
out += item.name[1] == "3" ? `"${item.title}` : item.body == "" ? "\"\"" : `"${item.body}"`
|
||||
console.log(out)
|
||||
if (item.children.length > 0) {
|
||||
printThreadStructure(item.children, level + 1);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
async function unflatten(postsFile, commentsFile) {
|
||||
try {
|
||||
const result = await processPostsAndComments(postsFile, commentsFile);
|
||||
//console.log('Thread Structure:');
|
||||
//printThreadStructure(result);
|
||||
|
||||
// Optional: write the result to a file
|
||||
//writeFileSync('processed-threads.json', JSON.stringify(result, null, 2));
|
||||
|
||||
// empty the file if it exists
|
||||
existsSync(args.output) ? writeFileSync(args.output, '') : null
|
||||
result.forEach(post => {
|
||||
appendFileSync(args.output, writeSql(post, args.comm, args.user))
|
||||
})
|
||||
} catch (error) {
|
||||
console.error('Error processing files:', error);
|
||||
}
|
||||
}
|
||||
|
||||
// Run the main function
|
||||
unflatten(args.posts, args.comments);
|
||||
|
||||
//console.log("HOLY FUCKING SMOKES!" + existsSync(tree))
|
||||
const outputPath = join(__dirname, '/', args.output);
|
Reference in New Issue
Block a user