feat: review all remote HolodoriDB changes before collection
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { mkdir, readFile, writeFile } from 'node:fs/promises';
|
||||
import { execFileSync } from 'node:child_process';
|
||||
import { readHolodoriDbTable as readHolodoriDbSource } from './holodoridb-source.mjs';
|
||||
import path from 'node:path';
|
||||
import { formulaScoreMetadata } from './song-score-formulas.mjs';
|
||||
|
||||
@@ -13,19 +13,10 @@ const scoreCalibrationByKey = new Map(scoreCalibrations.charts.map((row) => [
|
||||
`${row.songId}::${row.difficulty}`,
|
||||
row
|
||||
]));
|
||||
function readHolodoriDbSource(locale, filename) {
|
||||
const repositoryPath = path.resolve(`data/raw/holodoridb/${locale}`);
|
||||
return JSON.parse(execFileSync('git', [
|
||||
'-c', `safe.directory=${repositoryPath.replaceAll('\\', '/')}`,
|
||||
'-C', repositoryPath,
|
||||
'show', `origin/main:${filename}`
|
||||
], { encoding: 'utf8', maxBuffer: 32 * 1024 * 1024 }));
|
||||
}
|
||||
|
||||
const musicMaster = readHolodoriDbSource('kor', 'Music.json');
|
||||
const musicById = new Map(musicMaster.map((row) => [row.data?.id ?? row.id, row.data ?? row]));
|
||||
const englishMusicText = readHolodoriDbSource('eng', 'LangMusic_Eng.json');
|
||||
const englishTextById = new Map(englishMusicText.map((row) => [row.data?.id ?? row.id, row.data?.text ?? row.text]));
|
||||
const koreanMusicText = readHolodoriDbSource('kor', 'LangMusic_Kor.json');
|
||||
const koreanTextById = new Map(koreanMusicText.map((row) => [row.data?.id ?? row.id, row.data?.text ?? row.text]));
|
||||
const musicDifficultyMaster = readHolodoriDbSource('kor', 'MusicDifficulty.json');
|
||||
const difficultyLevelByKey = new Map(musicDifficultyMaster.map((row) => {
|
||||
const data = row.data ?? row;
|
||||
@@ -266,7 +257,7 @@ async function worker() {
|
||||
await writeFile(path.join(outputDirectory, fileName), JSON.stringify(output), 'utf8');
|
||||
normalizedCharts.push({
|
||||
songId: item.songId,
|
||||
title: englishTextById.get(`la-music_title-${item.songId}`) ?? sourceEntry?.title ?? item.songId,
|
||||
title: koreanTextById.get(musicById.get(item.songId)?.titleLangId ?? `la-music_title-${item.songId}`) ?? item.songId,
|
||||
difficulty: item.difficulty.toLowerCase(),
|
||||
difficultyLevel: difficultyLevelByKey.get(`${item.songId}::${item.difficulty.toLowerCase()}`) ??
|
||||
(Number.isFinite(item.difficultyLevel) ? item.difficultyLevel : null),
|
||||
|
||||
Reference in New Issue
Block a user