From 936f42b5eddaf68ff4d047278d29766cf86e2bb1 Mon Sep 17 00:00:00 2001 From: zkldi <20380519+zkldi@users.noreply.github.com> Date: Mon, 19 Dec 2022 03:21:08 +0000 Subject: [PATCH] fix: sieglinde clean-up --- .../scripts/rerunners/bms-pms/apply-sieglinde.js | 4 +++- pnpm-lock.yaml | 2 ++ sieglinde/README.md | 2 +- sieglinde/package.json | 1 + sieglinde/src/calc/v1-jiminp.ts | 2 +- sieglinde/src/fetch-tables.ts | 11 ++++++----- sieglinde/src/lookups.ts | 2 +- sieglinde/src/types.ts | 10 ---------- sieglinde/src/util.ts | 16 +++++++++------- 9 files changed, 24 insertions(+), 26 deletions(-) diff --git a/database-seeds/scripts/rerunners/bms-pms/apply-sieglinde.js b/database-seeds/scripts/rerunners/bms-pms/apply-sieglinde.js index 6d7c750ca..11ff4d298 100644 --- a/database-seeds/scripts/rerunners/bms-pms/apply-sieglinde.js +++ b/database-seeds/scripts/rerunners/bms-pms/apply-sieglinde.js @@ -81,10 +81,12 @@ for (const tableName of APPLICATION_ORDER) { maybeSgl.hcStr = maybeSgl.ecStr; } - // overjoy hc data is screwed, disable it for now. + // all overjoy data is screwed, disable it for now. if (maybeSgl.baseLevel.startsWith("★★")) { maybeSgl.hc = 0; maybeSgl.hcStr += "?"; + maybeSgl.ec = 0; + maybeSgl.ecStr += "?"; } // sl12 data is screwed, neuter it. diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 76725e613..1d3ad4c1c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -500,6 +500,7 @@ importers: sieglinde: specifiers: '@types/node-fetch': '2' + bms-table-loader: ^1.0.1 commander: ^8.3.0 fast-xml-parser: ^4.0.0-beta.2 mei-logger: ^1.0.1 @@ -508,6 +509,7 @@ importers: winston: 3.5.1 dependencies: '@types/node-fetch': 2.5.12 + bms-table-loader: 1.0.1 commander: 8.3.0 fast-xml-parser: 4.0.2 mei-logger: 1.0.3 diff --git a/sieglinde/README.md b/sieglinde/README.md index 7e11ae917..dd91b5184 100644 --- a/sieglinde/README.md +++ b/sieglinde/README.md @@ -15,5 +15,5 @@ our goals. ``` pnpm install -pnpm run +pnpm calc-v1 ``` \ No newline at end of file diff --git a/sieglinde/package.json b/sieglinde/package.json index bc57d58b0..1ee6d4cbe 100644 --- a/sieglinde/package.json +++ b/sieglinde/package.json @@ -12,6 +12,7 @@ "license": "MIT", "dependencies": { "@types/node-fetch": "2", + "bms-table-loader": "^1.0.1", "commander": "^8.3.0", "fast-xml-parser": "^4.0.0-beta.2", "mei-logger": "^1.0.1", diff --git a/sieglinde/src/calc/v1-jiminp.ts b/sieglinde/src/calc/v1-jiminp.ts index 268efbdc8..91329a4e9 100644 --- a/sieglinde/src/calc/v1-jiminp.ts +++ b/sieglinde/src/calc/v1-jiminp.ts @@ -135,7 +135,7 @@ export default async function SieglindeV1Calc(tableInfo: TableRes): Promise = BMS_TABLES.filter((e) => e.playtype === "7K"); export interface TableRes { table: BMSTablesDataset; - charts: Array; + charts: Array; } export default async function GetTableData(): Promise> { const out = []; for (const table of registeredTables.filter((e) => e.name in TableValueGetters)) { - const charts = await fetch(table.url).then((r) => r.json()); + const bmsTable = await LoadBMSTable(table.url); - out.push({ table, charts }); + out.push({ table, charts: bmsTable.body }); } return out; diff --git a/sieglinde/src/lookups.ts b/sieglinde/src/lookups.ts index 05cfacb03..ece873b80 100644 --- a/sieglinde/src/lookups.ts +++ b/sieglinde/src/lookups.ts @@ -1,6 +1,6 @@ const TableValueGetters: Record< "Insane" | "Insane2" | "Normal" | "Normal2" | "Overjoy" | "Satellite" | "Stella", - (x: string) => number | null + (x: number | string) => number | null > = { Insane: (c) => { const n = Number(c); diff --git a/sieglinde/src/types.ts b/sieglinde/src/types.ts index 5ac4e35a4..c4440aed2 100644 --- a/sieglinde/src/types.ts +++ b/sieglinde/src/types.ts @@ -6,16 +6,6 @@ export interface BMSTablesDataset { prefix: string; } -export interface BMSTableChart { - title: string; - artist: string; - url: string; - url_diff: string; - md5: string; - sha256: string; - level: string; -} - export interface CalcReturns { md5: string; title: string; diff --git a/sieglinde/src/util.ts b/sieglinde/src/util.ts index cb139e349..c160f5a79 100644 --- a/sieglinde/src/util.ts +++ b/sieglinde/src/util.ts @@ -8,7 +8,8 @@ import TableValueGetters from "./lookups"; import { XMLParser } from "fast-xml-parser"; import fetch from "node-fetch"; import { writeFile, readFile } from "fs/promises"; -import type { BMSTableChart, BMSTablesDataset } from "./types"; +import type { BMSTablesDataset } from "./types"; +import type { BMSTableEntry } from "bms-table-loader"; const parser = new XMLParser(); @@ -26,11 +27,12 @@ export async function FetchScoresForMD5(md5: string) { `http://dream-pro.info/~lavalse/LR2IR/2/getrankingxml.cgi?songmd5=${md5}&id=1` ).then((r) => r.text()); - const data = parser.parse(scores).ranking.score; + let data = parser.parse(scores).ranking.score; + // in the event this thing has only one score + // it won't be an array due to xml parsing. patch this by hand. if (!Array.isArray(data)) { - logger.error(`Got rate limited for ${md5}!`, { data }); - throw new Error(`Got rate limited on ${md5}.`); + data = [data]; } // xml sucks @@ -86,13 +88,13 @@ export function GetSigmoidalValue(x: number) { return 0.5 * (1 + Math.sin(x * Math.PI - Math.PI / 2)); } -export function GetBaseline(table: BMSTablesDataset, level: string): number | null { +export function GetBaseline(table: BMSTablesDataset, level: number | string): number | null { // @ts-expect-error don't care it's exhaustive return TableValueGetters[table.name](level); } -export function GetFString(table: BMSTablesDataset, chart: BMSTableChart) { - return table.prefix + chart.level; +export function GetFString(table: BMSTablesDataset, chart: BMSTableEntry) { + return table.prefix + chart.level.toString(); } export function Sleep(ms: number) {