mirror of
https://github.com/zkldi/Tachi.git
synced 2026-10-01 11:28:13 +03:00
update charts-iidx indexes and commit arc-db-merge
This commit is contained in:
@@ -38,6 +38,7 @@ const logger = CreateLogCtx("diff.ts");
|
||||
"data.inGameID": data.songID,
|
||||
playtype: spl[0] as Playtypes["iidx"],
|
||||
difficulty: spl[1] as Difficulties["iidx:SP" | "iidx:DP"],
|
||||
isPrimary: true,
|
||||
})) as ChartDocument<"iidx:SP" | "iidx:DP">;
|
||||
|
||||
if (!chart) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { Command } from "commander";
|
||||
import CreateLogCtx from "../../src/logger";
|
||||
import fetch from "../../src/fetch";
|
||||
import CreateLogCtx from "../../src/common/logger";
|
||||
import fetch from "../../src/common/fetch";
|
||||
import fs from "fs";
|
||||
import path from "path";
|
||||
|
||||
@@ -18,14 +18,14 @@ program.parse(process.argv);
|
||||
const options = program.opts();
|
||||
|
||||
async function GetIIDXSongs() {
|
||||
let allSongs = [];
|
||||
const allSongs = [];
|
||||
|
||||
let url = `https://${options.url}/api/v1/iidx/27/music/`;
|
||||
|
||||
let moreData = true;
|
||||
while (moreData) {
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
let songs = await fetch(url, {
|
||||
const songs = await fetch(url, {
|
||||
headers: {
|
||||
Authorization: `Bearer ${options.bearer}`,
|
||||
},
|
||||
@@ -44,12 +44,12 @@ async function GetIIDXSongs() {
|
||||
}
|
||||
|
||||
async function GetCharts() {
|
||||
let songs = JSON.parse(fs.readFileSync(path.join(__dirname, "./songs.json"), "utf-8"));
|
||||
const songs = JSON.parse(fs.readFileSync(path.join(__dirname, "./songs.json"), "utf-8"));
|
||||
|
||||
logger.info("Parsed songs.json");
|
||||
|
||||
let allCharts: any[] = [];
|
||||
let failed: any[] = [];
|
||||
const allCharts: any[] = [];
|
||||
const failed: any[] = [];
|
||||
|
||||
async function DoStuff(song: any) {
|
||||
try {
|
||||
@@ -58,7 +58,7 @@ async function GetCharts() {
|
||||
);
|
||||
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
let charts = await fetch(
|
||||
const charts = await fetch(
|
||||
`https://${options.url}/api/v1/iidx/27/charts/?music_id=${song._id}&omnimix=true`,
|
||||
{
|
||||
headers: {
|
||||
@@ -77,7 +77,7 @@ async function GetCharts() {
|
||||
}
|
||||
}
|
||||
|
||||
let promises = songs.map((s: any) => DoStuff(s));
|
||||
const promises = songs.map((s: any) => DoStuff(s));
|
||||
|
||||
await Promise.all(promises);
|
||||
|
||||
|
||||
@@ -2,21 +2,21 @@ import fs from "fs";
|
||||
import { ICollection } from "monk";
|
||||
import path from "path";
|
||||
import db from "../../src/db/db";
|
||||
import CreateLogCtx from "../../src/logger";
|
||||
import { FindChartWithPTDFVersion } from "../../src/score-import/database-lookup/chart-ptdf";
|
||||
import { FindSongOnTitle } from "../../src/score-import/database-lookup/song-title";
|
||||
import CreateLogCtx from "../../src/common/logger";
|
||||
import { ChartDocument } from "kamaitachi-common";
|
||||
import { FindSongOnTitle } from "../../src/common/database-lookup/song";
|
||||
import { FindChartWithPTDFVersion } from "../../src/common/database-lookup/chart";
|
||||
|
||||
const logger = CreateLogCtx("arc-db-merge.ts");
|
||||
|
||||
async function MergeIDs() {
|
||||
let charts = JSON.parse(fs.readFileSync(path.join(__dirname, "./charts.json"), "utf-8"));
|
||||
const charts = JSON.parse(fs.readFileSync(path.join(__dirname, "./charts.json"), "utf-8"));
|
||||
|
||||
for (const chartData of charts) {
|
||||
let songTitle = chartData._related.music[0].title;
|
||||
const songTitle = chartData._related.music[0].title;
|
||||
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
let song = await FindSongOnTitle("iidx", songTitle);
|
||||
const song = await FindSongOnTitle("iidx", songTitle);
|
||||
|
||||
if (!song) {
|
||||
logger.error(`Could not resolve ${songTitle}?`);
|
||||
@@ -24,9 +24,9 @@ async function MergeIDs() {
|
||||
}
|
||||
|
||||
for (const chart of chartData._items) {
|
||||
let playtype: "SP" | "DP" = chart.play_style === "DOUBLE" ? "DP" : "SP";
|
||||
const playtype: "SP" | "DP" = chart.play_style === "DOUBLE" ? "DP" : "SP";
|
||||
let difficulty = chart.difficulty === "BLACK" ? "LEGGENDARIA" : chart.difficulty;
|
||||
let version = "27";
|
||||
const version = "27-omni";
|
||||
|
||||
// yeah this fails for wacky playtype mismatches -- i don't care.
|
||||
if (
|
||||
@@ -39,7 +39,7 @@ async function MergeIDs() {
|
||||
}
|
||||
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
let ktchiChart = await FindChartWithPTDFVersion(
|
||||
const ktchiChart = await FindChartWithPTDFVersion(
|
||||
"iidx",
|
||||
song.id,
|
||||
playtype,
|
||||
@@ -70,7 +70,7 @@ async function MergeIDs() {
|
||||
}
|
||||
}
|
||||
|
||||
let r = await db.charts.iidx.update(
|
||||
const r = await db.charts.iidx.update(
|
||||
{
|
||||
"data.arcChartID": { $exists: false },
|
||||
},
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import monk from "monk";
|
||||
import { Command } from "commander";
|
||||
import CreateLogCtx from "../src/logger";
|
||||
import CreateLogCtx from "../src/common/logger";
|
||||
import { IndexOptions } from "mongodb";
|
||||
import { Databases, ValidDatabases } from "kamaitachi-common";
|
||||
import { ValidDatabases } from "kamaitachi-common";
|
||||
import { supportedGames } from "kamaitachi-common/js/config";
|
||||
|
||||
const logger = CreateLogCtx("set-indexes.ts");
|
||||
@@ -31,7 +31,7 @@ function index(fields: Record<string, unknown>, options?: IndexOptions) {
|
||||
|
||||
const UNIQUE = { unique: true };
|
||||
|
||||
const staticIndexes: Partial<Record<Databases, Index[]>> = {
|
||||
const staticIndexes: Partial<Record<ValidDatabases, Index[]>> = {
|
||||
scores: [index({ scoreID: 1 }, UNIQUE)],
|
||||
"score-pbs": [
|
||||
index({ chartID: 1, userID: 1 }, UNIQUE),
|
||||
@@ -64,7 +64,7 @@ const staticIndexes: Partial<Record<Databases, Index[]>> = {
|
||||
],
|
||||
// @todo #96 Add more indexes to the users collection.
|
||||
users: [index({ id: 1 }, UNIQUE)],
|
||||
tierlist: [
|
||||
tierlists: [
|
||||
index({ tierlistID: 1 }, UNIQUE),
|
||||
index({ game: 1, playtype: 1, isDefault: 1 }, UNIQUE),
|
||||
],
|
||||
@@ -75,17 +75,41 @@ const staticIndexes: Partial<Record<Databases, Index[]>> = {
|
||||
index({ game: 1, playtype: 1, table: 1, tableIndex: 1 }),
|
||||
],
|
||||
"kai-auth-tokens": [index({ userID: 1, service: 1 }, UNIQUE)],
|
||||
"charts-iidx": [
|
||||
index(
|
||||
{ "data.arcChartID": 1 },
|
||||
{ unique: true, partialFilterExpression: { "data.arcChartID": { $type: "string" } } }
|
||||
),
|
||||
index({ "data.hashSHA256": 1 }),
|
||||
],
|
||||
};
|
||||
|
||||
const indexes: Partial<Record<ValidDatabases, Index[]>> = staticIndexes;
|
||||
|
||||
for (const game of supportedGames) {
|
||||
indexes[`charts-${game}` as "charts-iidx"] = [
|
||||
index({ chartID: 1 }, UNIQUE),
|
||||
index({ songID: 1, difficulty: 1, playtype: 1, isPrimary: 1 }, UNIQUE),
|
||||
];
|
||||
if (indexes[`charts-${game}` as "charts-iidx"]) {
|
||||
indexes[`charts-${game}` as "charts-iidx"]!.push(
|
||||
index({ chartID: 1 }, UNIQUE),
|
||||
index(
|
||||
{ songID: 1, difficulty: 1, playtype: 1, isPrimary: 1 },
|
||||
{ unique: true, partialFilterExpression: { isPrimary: { $eq: true } } }
|
||||
)
|
||||
);
|
||||
} else {
|
||||
indexes[`charts-${game}` as "charts-iidx"] = [
|
||||
index({ chartID: 1 }, UNIQUE),
|
||||
index({ songID: 1, difficulty: 1, playtype: 1, isPrimary: 1 }, UNIQUE),
|
||||
];
|
||||
}
|
||||
|
||||
indexes[`songs-${game}` as "songs-iidx"] = [index({ id: 1 }, UNIQUE), index({ title: 1 })];
|
||||
if (indexes[`songs-${game}` as "songs-iidx"]) {
|
||||
indexes[`songs-${game}` as "songs-iidx"]!.push(
|
||||
index({ id: 1 }, UNIQUE),
|
||||
index({ title: 1 })
|
||||
);
|
||||
} else {
|
||||
indexes[`songs-${game}` as "songs-iidx"] = [index({ id: 1 }, UNIQUE), index({ title: 1 })];
|
||||
}
|
||||
}
|
||||
|
||||
(async () => {
|
||||
|
||||
Reference in New Issue
Block a user