mirror of
https://github.com/arthur-pbty/xiao.git
synced 2026-06-03 23:36:43 +02:00
Replace everything-json
This commit is contained in:
+1
-1
@@ -50,7 +50,6 @@
|
|||||||
"didyoumean2": "^7.0.4",
|
"didyoumean2": "^7.0.4",
|
||||||
"discord.js": "^14.25.1",
|
"discord.js": "^14.25.1",
|
||||||
"emoji-regex": "^10.6.0",
|
"emoji-regex": "^10.6.0",
|
||||||
"everything-json": "^1.2.1",
|
|
||||||
"fen-validator": "^2.0.1",
|
"fen-validator": "^2.0.1",
|
||||||
"font-finder": "^1.1.0",
|
"font-finder": "^1.1.0",
|
||||||
"gm": "^1.25.1",
|
"gm": "^1.25.1",
|
||||||
@@ -78,6 +77,7 @@
|
|||||||
"semver": "^7.7.3",
|
"semver": "^7.7.3",
|
||||||
"sherlockjs": "^1.4.2",
|
"sherlockjs": "^1.4.2",
|
||||||
"stackblur-canvas": "^2.7.0",
|
"stackblur-canvas": "^2.7.0",
|
||||||
|
"stream-json": "^1.9.1",
|
||||||
"text-diff": "^1.0.1",
|
"text-diff": "^1.0.1",
|
||||||
"tictactoe-minimax-ai": "github:marianoheller/tic-tac-toe-minimax",
|
"tictactoe-minimax-ai": "github:marianoheller/tic-tac-toe-minimax",
|
||||||
"twitter-openapi-typescript": "^0.0.55",
|
"twitter-openapi-typescript": "^0.0.55",
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
const request = require('node-superfetch');
|
const request = require('node-superfetch');
|
||||||
const cheerio = require('cheerio');
|
const cheerio = require('cheerio');
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const { JSON: eJSON } = require('everything-json');
|
const { parser } = require('stream-json');
|
||||||
|
const { pick } = require('stream-json/filters/Pick');
|
||||||
|
const { streamArray } = require('stream-json/streamers/StreamArray');
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
const { checkFileExists } = require('../util/Util');
|
const { checkFileExists } = require('../util/Util');
|
||||||
const rounds = ['jeopardy_round', 'double_jeopardy_round', 'final_jeopardy_round'];
|
const rounds = ['jeopardy_round', 'double_jeopardy_round', 'final_jeopardy_round'];
|
||||||
@@ -11,8 +13,8 @@ module.exports = class JeopardyScrape {
|
|||||||
Object.defineProperty(this, 'client', { value: client });
|
Object.defineProperty(this, 'client', { value: client });
|
||||||
|
|
||||||
this.clues = [];
|
this.clues = [];
|
||||||
this.gameIDs = [];
|
this.gameIDs = null;
|
||||||
this.seasons = [];
|
this.seasons = null;
|
||||||
this.imported = false;
|
this.imported = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -69,28 +71,25 @@ module.exports = class JeopardyScrape {
|
|||||||
|
|
||||||
async importData() {
|
async importData() {
|
||||||
const read = await fs.promises.readFile(path.join(__dirname, '..', 'jeopardy.json'), { encoding: 'utf8' });
|
const read = await fs.promises.readFile(path.join(__dirname, '..', 'jeopardy.json'), { encoding: 'utf8' });
|
||||||
const file = await eJSON.parseAsync(read);
|
const { seasons, gameIDs } = JSON.parse(read);
|
||||||
if (typeof file !== 'object' || Array.isArray(file)) return null;
|
this.gameIDs = gameIDs;
|
||||||
if (!file.clues || !file.gameIDs || !file.seasons) return null;
|
this.seasons = seasons;
|
||||||
|
this.clues = await this.importClues();
|
||||||
this.imported = true;
|
this.imported = true;
|
||||||
for (const season of file.seasons) {
|
|
||||||
if (typeof season !== 'string') continue;
|
|
||||||
if (this.seasons.includes(season)) continue;
|
|
||||||
this.seasons.push(season);
|
|
||||||
}
|
|
||||||
for (const gameID of file.gameIDs) {
|
|
||||||
if (typeof gameID !== 'string') continue;
|
|
||||||
if (this.gameIDs.includes(gameID)) continue;
|
|
||||||
this.gameIDs.push(gameID);
|
|
||||||
}
|
|
||||||
for (const clue of file.clues) {
|
|
||||||
if (typeof clue !== 'object' || Array.isArray(clue)) continue;
|
|
||||||
if (this.clues.some(c => c.question === clue.question && c.answer === clue.answer)) continue;
|
|
||||||
this.clues.push(clue);
|
|
||||||
}
|
|
||||||
return file;
|
return file;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
importClues() {
|
||||||
|
const pipeline = fs.createReadStream(path.join(__dirname, '..', 'jeopardy.json'), { encoding: 'utf8'})
|
||||||
|
.pipe(parser())
|
||||||
|
.pipe(pick({ filter: 'clues' }))
|
||||||
|
.pipe(streamArray());
|
||||||
|
pipeline.on('data', ({ key, value }) => this.clues.push(value));
|
||||||
|
return new Promise(res => {
|
||||||
|
pipeline.on('end', () => res(this.clues));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
exportData() {
|
exportData() {
|
||||||
const buf = Buffer.from(JSON.stringify({
|
const buf = Buffer.from(JSON.stringify({
|
||||||
clues: this.clues,
|
clues: this.clues,
|
||||||
|
|||||||
Reference in New Issue
Block a user