ea-route-dwitter
Version:
app.use('/mountpoint', require('ea-route-dwitter')) in your express app - edit and live-preview dwitter golfing code.
51 lines (37 loc) • 1.53 kB
JavaScript
var fs=require("node:fs/promises");
var path=require("node:path");
var fromJson=async function(file) {
//var file="dweets/0.json"
var next=JSON.parse(await fs.readFile(file,{encoding:"utf-8"}))
var records=next.results.map(o=>({id:o.id,code:o.code,author:o.author.username,posted:o.posted,awesome_count:o.awesome_count,posted:o.posted,link:o.link}));
return records;
}
var fromDirectory=async function(dir){
var files=(await fs.readdir(dir)).map(f=>path.join("./dweets",f));
var result=await Promise.all(files.map(file=>fromJson(file)));
return result.flatMap(x=>x);
//result=await queue.reduce((aggr,next)=>aggr.then(next),Promise.resolve());
// var queue=files.map(file=>()=>fromJson(file).then(result=>{ console.log(result,file," ..done."); return result }));
// var result=await queue.reduce((aggr,next)=>aggr.then(next),Promise.resolve());
}
var main=async()=>{
var db=await fromDirectory("./dweets");
const createCsvWriter = require('csv-writer').createObjectCsvWriter;
const csvWriter = createCsvWriter({
path: 'dweets.csv',
header: [
{id: 'id', title: 'id'},
{id: 'code', title: 'code'},
{id: 'author', title: 'author'},
{id: 'remix_of', title: 'remix_of'},
{id: 'posted', title: 'posted'},
{id: 'awesome_count', title: 'awesome_count'},
{id: 'link', title: 'link'}
]
});
csvWriter.writeRecords(db);
var result=JSON.stringify(db);
await fs.writeFile("dweets.json", result, {encoding:"utf-8"});
console.log(result);
};
main()