Commit a8395c87 authored by nanahira's avatar nanahira

add includes.cdb and excludes.cdb

parent 93f4ce5c
......@@ -116,6 +116,7 @@ export class DBReader extends Base {
outputdb: Database;
overrideTextDb: Database;
async openDatabase(path: string) {
await fs.access(path);
return await open({
filename: path,
driver: sqlite3.Database
......
......@@ -7,8 +7,15 @@ import fs from 'fs';
const DATE = process.env.DATE;
const lflistPath = process.env.LFLIST_PATH || "./lflist.conf";
const includes = (process.env.INCLUDES || "").split(",").filter(i => i).map(i => parseInt(i.trim()));
const excludes = new Set((process.env.EXCLUDES || "").split(",").filter(i => i).map(i => parseInt(i.trim())));
const parseEnvList = (envVar: string): number[] => {
return (process.env[envVar] || "").split(",").filter(i => i).map(i => parseInt(i.trim()));
}
const includes = parseEnvList("INCLUDES");
const excludes = parseEnvList("EXCLUDES");
const fileSymbol = process.env.FILE_SYMBOL || "cn";
async function getBanlist() {
const lflistData = await fs.promises.readFile(lflistPath, 'utf-8');
......@@ -17,7 +24,7 @@ async function getBanlist() {
date: moment(l.name.split(' ')[0], 'YYYY.MM')
})).filter(l => l.date.isBefore(DATE));
const lflist = _.maxBy(lflists, l => l.date.unix());
const extraLflistPath = `./extras/${process.env.FILE_SYMBOL}/lflist.conf`;
const extraLflistPath = `./extras/${fileSymbol}/lflist.conf`;
let extraLflist: Banlist;
try {
const extraLflistContent = await fs.promises.readFile(extraLflistPath, 'utf-8');
......@@ -32,15 +39,27 @@ async function main() {
//level: Logger.DEBUG
});
await dbreader.init();
const readDbAndInject = async (dbPath: string, target: number[]) => {
const codes = await dbreader.getAllCardsFromDatabase(dbPath);
target.push(...codes);
}
await Promise.all([
readDbAndInject(`./extras/${fileSymbol}/includes.cdb`, includes),
readDbAndInject(`./extras/${fileSymbol}/excludes.cdb`, excludes),
])
const excludesSet = new Set(excludes);
const cards = (await PackDbFetcher.fetchOnce(dbreader, `date <= '${DATE}'`))
.filter(c => !excludes.has(c.code));
.filter(c => !excludesSet.has(c.code));
const existingIds = new Set(cards.map(c => c.code));
for (const include of includes) {
if (!existingIds.has(include)) {
cards.push(new Card(include));
}
}
console.log(cards.length);
console.log(`Total cards to process: ${cards.length}`);
const extraBanlist = await getBanlist();
await dbreader.run(cards, {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment