flowerpicker 1.6.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -44,7 +44,7 @@ The following games may not be updated by me, PRs may be reviewed and accepted
44
44
  | pop'n music | ✅ | ✅ |
45
45
  | MÚSECA | ✅[^1] | ✅ |
46
46
  | GITADORA | ✅ | ✅ |
47
- | DanceDanceRevolution | | |
47
+ | DanceDanceRevolution | | |
48
48
  | Sound Voltex | ❌ | ❌ |
49
49
  | beatmania IIDX | ❌ | ❌ |
50
50
  | NOSTALGIA | ✅ | - |
@@ -0,0 +1,8 @@
1
+ import type * as convertType from "./types/convert.js";
2
+ import type * as scorelogJson from "./types/scorelogJson.js";
3
+ export declare function jubeatToTachiCompat(jubeatDataJSON: scorelogJson.JubeatDataRawJSON[], msOffset?: number, service?: string): convertType.BatchManualJSONJubeat;
4
+ export declare function pnmToTachiCompat(pnmDataJSON: scorelogJson.PnmDataRawJSON[], msOffset?: number, service?: string): convertType.BatchManualJSONPnm;
5
+ export declare function musecaToTachiCompat(musecaDataJSON: scorelogJson.MusecaDataRawJSON[], msOffset?: number, service?: string): convertType.BatchManualJSONMuseca;
6
+ export declare function gitadoraToTachiCompat(gitadoraDataJSON: scorelogJson.GitadoraDataRawJSON[], playtype: "Gita" | "Dora", msOffset?: number, service?: string): convertType.BatchManualJSONGitadora;
7
+ export declare function ddrToTachiCompat(ddrDataJSON: scorelogJson.DDRDataRawJSON[], playtype: "SP" | "DP", msOffset?: number, service?: string): convertType.BatchManualJSONDDR;
8
+ //# sourceMappingURL=convert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../src/convert.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,WAAW,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,KAAK,YAAY,MAAM,yBAAyB,CAAC;AAE7D,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,YAAY,CAAC,iBAAiB,EAAE,EAAE,QAAQ,GAAE,MAAU,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,qBAAqB,CAmC/J;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,YAAY,CAAC,cAAc,EAAE,EAAE,QAAQ,GAAE,MAAU,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,kBAAkB,CAkCnJ;AAED,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,YAAY,CAAC,iBAAiB,EAAE,EAAE,QAAQ,GAAE,MAAU,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,qBAAqB,CAqD/J;AAED,wBAAgB,qBAAqB,CAAC,gBAAgB,EAAE,YAAY,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,GAAE,MAAU,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,uBAAuB,CAmClM;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,YAAY,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,GAAG,IAAI,EAAE,QAAQ,GAAE,MAAU,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,kBAAkB,CA0D1K"}
@@ -0,0 +1,208 @@
1
+ export function jubeatToTachiCompat(jubeatDataJSON, msOffset = 0, service) {
2
+ // Thank you to https://gist.github.com/Meta-link/d01c15fc56a277becc7d67a7c1dccfa2 for the tachi structure
3
+ let tachiCompJson = {
4
+ meta: {
5
+ "game": "jubeat",
6
+ "playtype": "Single",
7
+ "service": service ? service : "FlowerPicker",
8
+ },
9
+ scores: []
10
+ };
11
+ jubeatDataJSON.forEach((item) => {
12
+ tachiCompJson.scores.push({
13
+ "score": Number(item.playScore),
14
+ "lamp": item.playLamp.toUpperCase(), // Values returned by the scraper are the same, just not in uppercase
15
+ "musicRate": Number(item.playMusicRate),
16
+ "matchType": "inGameID",
17
+ "identifier": item.songID.toString(),
18
+ "difficulty": (item.playIsHardPlay ? "HARD " : "") + item.playChartDifficultyString.toUpperCase(),
19
+ "timeAchieved": Math.floor(new Date(item.playTimestampString).getTime() - msOffset),
20
+ "judgements": {
21
+ "perfect": Number(item.playScoreJudgements.perfects),
22
+ "great": Number(item.playScoreJudgements.greats),
23
+ "good": Number(item.playScoreJudgements.goods),
24
+ "poor": Number(item.playScoreJudgements.poors),
25
+ "miss": Number(item.playScoreJudgements.misses)
26
+ },
27
+ "optional": {
28
+ "maxCombo": Number(item.playMaxCombo),
29
+ "musicBar": item.playJudgeBar
30
+ },
31
+ });
32
+ });
33
+ return tachiCompJson;
34
+ }
35
+ export function pnmToTachiCompat(pnmDataJSON, msOffset = 0, service) {
36
+ // Thank you to https://github.com/HutchyBen/flower-tachi/blob/main/games/popn.py for helping me figure out how to parse the lamp thing
37
+ let tachiCompJson = {
38
+ meta: {
39
+ "game": "popn",
40
+ "playtype": "9B",
41
+ "service": service ? service : "FlowerPicker",
42
+ },
43
+ scores: []
44
+ };
45
+ pnmDataJSON.forEach((item) => {
46
+ if (item.playChartDifficultyString.includes("BATTLE"))
47
+ return; // Battle charts are not supported by Tachi
48
+ const medals = ["ERROR", "failedCircle", "failedDiamond", "failedStar", "easyClear", "clearCircle", "clearDiamond", "clearStar", "fullComboCircle", "fullComboDiamond", "fullComboStar", "perfect"];
49
+ tachiCompJson.scores.push({
50
+ "score": item.playScore,
51
+ "clearMedal": medals[item.playMedal],
52
+ "judgements": {
53
+ "cool": item.playScoreJudgements.cool,
54
+ "great": item.playScoreJudgements.great,
55
+ "good": item.playScoreJudgements.good,
56
+ "bad": item.playScoreJudgements.bad,
57
+ },
58
+ // Has to turn EASY/NORMAL/HYPER/EX to Easy/Normal/Hyper/EX
59
+ "difficulty": item.playChartDifficultyString.length > 2 ? item.playChartDifficultyString.charAt(0).toUpperCase() + item.playChartDifficultyString.slice(1).toLowerCase() : item.playChartDifficultyString.toUpperCase(),
60
+ "matchType": "inGameID",
61
+ "identifier": item.songID.toString(),
62
+ "timeAchieved": Math.floor(new Date(item.playTimestampString).getTime() - msOffset),
63
+ });
64
+ });
65
+ return tachiCompJson;
66
+ }
67
+ export function musecaToTachiCompat(musecaDataJSON, msOffset = 0, service) {
68
+ let tachiCompJson = {
69
+ meta: {
70
+ "game": "museca",
71
+ "playtype": "Single",
72
+ "service": service ? service : "FlowerPicker",
73
+ },
74
+ scores: []
75
+ };
76
+ musecaDataJSON.forEach((item) => {
77
+ let parsedLamp = item.playLamp;
78
+ let parsedDifficulty;
79
+ if (parsedLamp === "CLEARED")
80
+ parsedLamp = "CLEAR";
81
+ // https://github.com/zkldi/Tachi/blob/a2f71ffcb38240089f2a0c1168ccd72afa566826/server/src/game-implementations/games/museca.ts#L75
82
+ if (item.playScore === 1000000)
83
+ parsedLamp = "PERFECT CONNECT ALL";
84
+ if (item.playScore < 800000)
85
+ parsedLamp = "FAILED";
86
+ if (item.playScore >= 800000 && parsedLamp === "FAILED")
87
+ parsedLamp = "CLEAR";
88
+ switch (item.playChartDifficultyString) {
89
+ case "翠":
90
+ parsedDifficulty = "Green";
91
+ break;
92
+ case "橙":
93
+ parsedDifficulty = "Yellow";
94
+ break;
95
+ case "朱":
96
+ parsedDifficulty = "Red";
97
+ break;
98
+ default:
99
+ parsedDifficulty = "ERROR";
100
+ }
101
+ tachiCompJson.scores.push({
102
+ "score": item.playScore,
103
+ "lamp": parsedLamp,
104
+ "judgements": {
105
+ "critical": item.playScoreJudgements.critical,
106
+ "near": item.playScoreJudgements.near,
107
+ "miss": item.playScoreJudgements.error,
108
+ },
109
+ "difficulty": parsedDifficulty,
110
+ "matchType": "inGameID",
111
+ "identifier": item.songID.toString(),
112
+ "timeAchieved": Math.floor(new Date(item.playTimestampString).getTime() - msOffset),
113
+ optional: {
114
+ "maxCombo": item.playMaxCombo,
115
+ },
116
+ });
117
+ });
118
+ return tachiCompJson;
119
+ }
120
+ export function gitadoraToTachiCompat(gitadoraDataJSON, playtype, msOffset = 0, service) {
121
+ let tachiCompJson = {
122
+ meta: {
123
+ "game": "gitadora",
124
+ "playtype": playtype,
125
+ "service": service ? service : "FlowerPicker",
126
+ },
127
+ scores: []
128
+ };
129
+ gitadoraDataJSON.forEach((item) => {
130
+ if (playtype === "Gita" && item.playInstrumentString === "Drum")
131
+ return;
132
+ if (playtype === "Dora" && item.playInstrumentString !== "Drum")
133
+ return;
134
+ tachiCompJson.scores.push({
135
+ percent: item.playPercentageScore,
136
+ lamp: item.playLamp.toUpperCase(),
137
+ judgements: {
138
+ perfect: item.playScoreJudgements.perfect,
139
+ great: item.playScoreJudgements.great,
140
+ good: item.playScoreJudgements.good,
141
+ ok: item.playScoreJudgements.ok,
142
+ miss: item.playScoreJudgements.miss,
143
+ },
144
+ difficulty: (item.playInstrumentString === "Bass" ? "BASS " : "") + item.playChartDifficultyString.toUpperCase(),
145
+ matchType: "inGameID",
146
+ identifier: item.songID.toString(),
147
+ timeAchieved: Math.floor(new Date(item.playTimestampString).getTime() - msOffset),
148
+ optional: {
149
+ maxCombo: item.playMaxCombo,
150
+ },
151
+ });
152
+ });
153
+ return tachiCompJson;
154
+ }
155
+ export function ddrToTachiCompat(ddrDataJSON, playtype, msOffset = 0, service) {
156
+ let tachiCompJson = {
157
+ meta: {
158
+ "game": "ddr",
159
+ "playtype": playtype,
160
+ "service": service ? service : "FlowerPicker",
161
+ },
162
+ scores: []
163
+ };
164
+ const flares = ["0", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "EX"];
165
+ ddrDataJSON.forEach((item) => {
166
+ if (playtype !== item.playPlaystyle)
167
+ return;
168
+ const calculatedExScore = (item.playScoreJudgements.marvelous * 3) + (item.playScoreJudgements.ok * 3) + (item.playScoreJudgements.perfect * 2) + (item.playScoreJudgements.great);
169
+ let parsedLamp = item.playGrade === "E" ? "FAILED" : "CLEAR";
170
+ switch (item.playLamp) {
171
+ case "ASSIST CLEAR":
172
+ parsedLamp = "ASSIST";
173
+ break;
174
+ case "GOOD FULL COMBO":
175
+ parsedLamp = "FULL COMBO";
176
+ break;
177
+ case "EXTRA CLEAR":
178
+ parsedLamp = "LIFE4";
179
+ break;
180
+ default:
181
+ parsedLamp = item.playLamp ? item.playLamp : parsedLamp;
182
+ break;
183
+ }
184
+ tachiCompJson.scores.push({
185
+ score: item.playScore,
186
+ difficulty: item.playChartDifficultyString.toUpperCase(),
187
+ lamp: parsedLamp,
188
+ judgements: {
189
+ MARVELOUS: item.playScoreJudgements.marvelous,
190
+ PERFECT: item.playScoreJudgements.perfect,
191
+ GREAT: item.playScoreJudgements.great,
192
+ GOOD: item.playScoreJudgements.good,
193
+ OK: item.playScoreJudgements.ok,
194
+ MISS: item.playScoreJudgements.miss,
195
+ },
196
+ matchType: "inGameID",
197
+ identifier: item.songID.toString(),
198
+ timeAchieved: Math.floor(new Date(item.playTimestampString).getTime() - msOffset),
199
+ optional: {
200
+ "flare": item.flare ? flares[item.flare] : undefined,
201
+ "maxCombo": item.playMaxCombo,
202
+ "exScore": calculatedExScore,
203
+ },
204
+ });
205
+ });
206
+ return tachiCompJson;
207
+ }
208
+ //# sourceMappingURL=convert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert.js","sourceRoot":"","sources":["../src/convert.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import * as parser from "./parser.js";
2
+ declare const GAMES: readonly ["iidx", "jubeat", "rb", "gitadora", "sdvx", "museca", "ddr", "nostalgia", "pnm"];
3
+ type Game = typeof GAMES[number];
4
+ type ScoreForGame<G extends Game> = G extends "jubeat" ? ReturnType<typeof parser.parseJubeatScoreData> : G extends "pnm" ? ReturnType<typeof parser.parsePnmScoreData> : G extends "museca" ? ReturnType<typeof parser.parseMusecaScoreData> : G extends "gitadora" ? ReturnType<typeof parser.parseGitadoraScoreData> : G extends "nostalgia" ? ReturnType<typeof parser.parseNostalgiaScoreData> : G extends "ddr" ? ReturnType<typeof parser.parseDDRScoreData> : never;
5
+ declare class FlowerPicker {
6
+ private baseURL;
7
+ private cookie;
8
+ constructor(baseURL: string, cookieSessionIDValue: string);
9
+ /**
10
+ * Makes sure the cookie that was provided is actually valid
11
+ * @throws {error.InvalidSessionCookieError} When the provided session cookie is invalid
12
+ */
13
+ setup(): Promise<void>;
14
+ /**
15
+ *
16
+ * @param url The url to fetch from
17
+ * @returns The completed fetch Response
18
+ * @throws {error.TooManyRatelimitErrors} If the server returns too many 429 responses
19
+ */
20
+ private fetchWithCookie;
21
+ getProfileId(game: string, id: string): Promise<string | null>;
22
+ /**
23
+ * @param game The game to fetch scores from (MUST match ['iidx', 'jubeat', 'rb', 'gitadora', 'sdvx', 'museca', 'ddr', 'nostalgia', 'pnm'])
24
+ * @param profileID The profile ID to fetch from
25
+ * @param fetchDownTo Millisecond timestamp of the last score you want to fetch (inclusive)
26
+ */
27
+ getScoreLog<G extends Game>(game: G, profileID: string, fetchDownTo?: number, msTimeout?: number): Promise<Array<ScoreForGame<G>>>;
28
+ }
29
+ export default FlowerPicker;
30
+ export * as convert from "./convert.js";
31
+ export * as error from "./types/errors.js";
32
+ export * as scorelogJson from "./types/scorelogJson.js";
33
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAItC,QAAA,MAAM,KAAK,4FAA6F,CAAC;AACzG,KAAK,IAAI,GAAG,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC;AACjC,KAAK,YAAY,CAAC,CAAC,SAAS,IAAI,IAC5B,CAAC,SAAS,QAAQ,GAAG,UAAU,CAAC,OAAO,MAAM,CAAC,oBAAoB,CAAC,GACnE,CAAC,SAAS,KAAK,GAAG,UAAU,CAAC,OAAO,MAAM,CAAC,iBAAiB,CAAC,GAC7D,CAAC,SAAS,QAAQ,GAAG,UAAU,CAAC,OAAO,MAAM,CAAC,oBAAoB,CAAC,GACnE,CAAC,SAAS,UAAU,GAAG,UAAU,CAAC,OAAO,MAAM,CAAC,sBAAsB,CAAC,GACvE,CAAC,SAAS,WAAW,GAAG,UAAU,CAAC,OAAO,MAAM,CAAC,uBAAuB,CAAC,GACzE,CAAC,SAAS,KAAK,GAAG,UAAU,CAAC,OAAO,MAAM,CAAC,iBAAiB,CAAC,GAC7D,KAAK,CAAC;AAEV,cAAM,YAAY;IACd,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;gBAEX,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM;IAKzD;;;OAGG;IACG,KAAK;IAUX;;;;;OAKG;YACW,eAAe;IAsBhB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAY3E;;;;MAIE;IACW,WAAW,CAAC,CAAC,SAAS,IAAI,EACnC,IAAI,EAAE,CAAC,EACP,SAAS,EAAE,MAAM,EACjB,WAAW,GAAE,MAAU,EACvB,SAAS,GAAE,MAAa,GACzB,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;CAiFrC;AAUD,eAAe,YAAY,CAAC;AAC5B,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,mBAAmB,CAAC;AAC3C,OAAO,KAAK,YAAY,MAAM,yBAAyB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,152 @@
1
+ import * as cheerio from "cheerio";
2
+ import * as parser from "./parser.js";
3
+ import * as error from "./types/errors.js";
4
+ import * as util from "./util.js";
5
+ const GAMES = ['iidx', 'jubeat', 'rb', 'gitadora', 'sdvx', 'museca', 'ddr', 'nostalgia', 'pnm'];
6
+ class FlowerPicker {
7
+ baseURL;
8
+ cookie;
9
+ constructor(baseURL, cookieSessionIDValue) {
10
+ this.baseURL = baseURL;
11
+ this.cookie = cookieSessionIDValue;
12
+ }
13
+ /**
14
+ * Makes sure the cookie that was provided is actually valid
15
+ * @throws {error.InvalidSessionCookieError} When the provided session cookie is invalid
16
+ */
17
+ async setup() {
18
+ await this.fetchWithCookie(`${this.baseURL}/user`)
19
+ .then((response) => {
20
+ // Redirection means an invalid session ID
21
+ if (response.redirected) {
22
+ throw new error.InvalidSessionCookieError();
23
+ }
24
+ ;
25
+ });
26
+ }
27
+ /**
28
+ *
29
+ * @param url The url to fetch from
30
+ * @returns The completed fetch Response
31
+ * @throws {error.TooManyRatelimitErrors} If the server returns too many 429 responses
32
+ */
33
+ async fetchWithCookie(url) {
34
+ const retryCount = 3;
35
+ let delayBetweenRetriesMs = 1000;
36
+ for (let attempt = 1; attempt <= retryCount; attempt++) {
37
+ const res = await fetch(url, {
38
+ headers: {
39
+ cookie: this.cookie,
40
+ }
41
+ });
42
+ if (res.status === 200) {
43
+ return res;
44
+ }
45
+ else if (attempt <= retryCount) {
46
+ console.warn(`Fetch attempt ${attempt} for ${url} failed with status ${res.status}. Retrying...`);
47
+ await util.delay(delayBetweenRetriesMs);
48
+ delayBetweenRetriesMs *= 2;
49
+ }
50
+ }
51
+ throw new error.TooManyRatelimitErrors(`Failed to fetch ${url} after ${retryCount} attempts.`);
52
+ }
53
+ async getProfileId(game, id) {
54
+ const res = await this.fetchWithCookie(`${this.baseURL}/game/${game}${util.doesGameHaveProfileInUrl(game) ? '/profile' : ''}/${id}`);
55
+ const html = await res.text();
56
+ const $ = cheerio.load(html);
57
+ const href = $("small > a").first().attr("href");
58
+ if (!href)
59
+ return null;
60
+ return href.split("/")[4] ?? null;
61
+ }
62
+ /**
63
+ * @param game The game to fetch scores from (MUST match ['iidx', 'jubeat', 'rb', 'gitadora', 'sdvx', 'museca', 'ddr', 'nostalgia', 'pnm'])
64
+ * @param profileID The profile ID to fetch from
65
+ * @param fetchDownTo Millisecond timestamp of the last score you want to fetch (inclusive)
66
+ */
67
+ async getScoreLog(game, profileID, fetchDownTo = 0, msTimeout = 1000) {
68
+ if (!GAMES.includes(game)) {
69
+ throw new Error(`Game "${game}" is not supported.`);
70
+ }
71
+ if (fetchDownTo > 0) {
72
+ console.log(`Fetching scores down to timestamp: ${new Date(fetchDownTo).toISOString()}`);
73
+ }
74
+ else {
75
+ console.log(`Fetching all scores without a down-to limit.`);
76
+ }
77
+ let url = `${this.baseURL}/game/${game}${util.doesGameHaveProfileInUrl(game) ? '/profile' : ''}/${profileID}?page=`;
78
+ const firstFetchedPage = await this.fetchWithCookie(`${url}1`);
79
+ const firstFullPage = await firstFetchedPage.text();
80
+ const first$ = cheerio.load(firstFullPage);
81
+ const first$scoreLogGeneric = first$(".col-lg-8.col-lg-pull-4");
82
+ const totalPagesRaw = parseInt(first$scoreLogGeneric.find('div.text-center > ul.pagination > li:nth-last-child(2) > a').first().text());
83
+ const totalPages = isNaN(totalPagesRaw) ? 1 : totalPagesRaw;
84
+ const allScores = [];
85
+ let stop = false;
86
+ for (let pageIndex = 1; pageIndex <= totalPages && !stop; pageIndex++) {
87
+ console.log(`Fetching page ${pageIndex}/${totalPages}...`);
88
+ const fetchedPage = await this.fetchWithCookie(`${url}${pageIndex}`);
89
+ const fullPage = await fetchedPage.text();
90
+ const $ = cheerio.load(fullPage);
91
+ const $scoreLogGeneric = $(".col-lg-8.col-lg-pull-4");
92
+ const $scoreLog = $scoreLogGeneric.find('tbody').children();
93
+ // Some games have an extra element at the beginning (Currently only found iidx, sdvx has extra elements inbetween scores)
94
+ const indexStart = $scoreLog.toArray().findIndex((elem) => {
95
+ return first$(elem).hasClass('accordion-toggle');
96
+ });
97
+ for (let index = indexStart; index < $scoreLog.toArray().length; index += 2) {
98
+ const element = $scoreLog.toArray()[index];
99
+ const elementCollapsed = $scoreLog.toArray()[index + 1];
100
+ let score;
101
+ if (!element || !elementCollapsed) {
102
+ continue;
103
+ }
104
+ switch (game) {
105
+ case "jubeat":
106
+ score = parser.parseJubeatScoreData(element, elementCollapsed, pageIndex);
107
+ break;
108
+ case "pnm":
109
+ score = parser.parsePnmScoreData(element, elementCollapsed, pageIndex);
110
+ break;
111
+ case "museca":
112
+ score = parser.parseMusecaScoreData(element, elementCollapsed, pageIndex);
113
+ break;
114
+ case "gitadora":
115
+ score = parser.parseGitadoraScoreData(element, elementCollapsed, pageIndex);
116
+ break;
117
+ case "ddr":
118
+ score = parser.parseDDRScoreData(element, elementCollapsed, pageIndex);
119
+ break;
120
+ case "nostalgia":
121
+ score = parser.parseNostalgiaScoreData(element, elementCollapsed, pageIndex);
122
+ break;
123
+ default:
124
+ throw new Error(`Parser not implemented for game "${game}".`);
125
+ }
126
+ if (new Date(score.playTimestampString).getTime() < fetchDownTo) {
127
+ console.log(`Reached fetch down to timestamp at score played on "${score.playTimestampString}", stopping fetch.`);
128
+ stop = true;
129
+ break;
130
+ }
131
+ allScores.push(score);
132
+ }
133
+ if (!stop && msTimeout > 0 && pageIndex <= totalPages) {
134
+ await util.delay(msTimeout);
135
+ }
136
+ }
137
+ return allScores;
138
+ }
139
+ }
140
+ /*
141
+ Functions not yet ported:
142
+ _accountInfoSetup
143
+ _getPetalWalletsInfo
144
+
145
+ Only mentioning so I don't forget they used to exist
146
+ */
147
+ export default FlowerPicker;
148
+ export * as convert from "./convert.js";
149
+ export * as error from "./types/errors.js";
150
+ export * as scorelogJson from "./types/scorelogJson.js";
151
+ // export * as util from "./util";
152
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import * as cheerio from "cheerio";
2
+ import * as scorelogJson from "./types/scorelogJson.js";
3
+ export declare function parseJubeatScoreData(mainElement: cheerio.Element, collapsedElement: cheerio.Element, pageIndex: number): scorelogJson.JubeatDataRawJSON;
4
+ export declare function parsePnmScoreData(mainElement: cheerio.Element, collapsedElement: cheerio.Element, pageIndex: number): scorelogJson.PnmDataRawJSON;
5
+ export declare function parseMusecaScoreData(mainElement: cheerio.Element, collapsedElement: cheerio.Element, pageIndex: number): scorelogJson.MusecaDataRawJSON;
6
+ export declare function parseGitadoraScoreData(mainElement: cheerio.Element, collapsedElement: cheerio.Element, pageIndex: number): scorelogJson.GitadoraDataRawJSON;
7
+ export declare function parseNostalgiaScoreData(mainElement: cheerio.Element, collapsedElement: cheerio.Element, pageIndex: number): scorelogJson.NostalgiaDataRawJSON;
8
+ export declare function parseDDRScoreData(mainElement: cheerio.Element, collapsedElement: cheerio.Element, pageIndex: number): scorelogJson.DDRDataRawJSON;
9
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,KAAK,YAAY,MAAM,yBAAyB,CAAC;AAGxD,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY,CAAC,iBAAiB,CAwCvJ;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY,CAAC,cAAc,CAmCjJ;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY,CAAC,iBAAiB,CAkCvJ;AAED,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY,CAAC,mBAAmB,CAyD3J;AAED,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY,CAAC,oBAAoB,CAqC7J;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY,CAAC,cAAc,CA8CjJ"}
package/dist/parser.js ADDED
@@ -0,0 +1,217 @@
1
+ import * as cheerio from "cheerio";
2
+ import * as scorelogJson from "./types/scorelogJson.js";
3
+ import * as util from "./util.js";
4
+ export function parseJubeatScoreData(mainElement, collapsedElement, pageIndex) {
5
+ const $ = cheerio.load('');
6
+ const $main = $(mainElement);
7
+ const $collapsed = $(collapsedElement).find('td > div > div');
8
+ const rawData = {
9
+ playID: util.trimToNumber($main.attr('data-target')),
10
+ songTitle: $main.find('td > a > b').text(),
11
+ songID: util.trimToNumber($main.find('td > a').attr('href').split('/')[7]),
12
+ playChartDifficultyID: util.trimToNumber($main.find('td > a').attr('href').split('/').pop()),
13
+ playChartDifficultyString: $main.children('td').eq(2).text().trim().split(' ').at(0),
14
+ playChartDifficultyNumber: Number($main.children('td').eq(2).text().trim().split(' ').at(1)),
15
+ playIsHardPlay: $main.children('td').eq(1).find('div.pull-right').length ? true : false,
16
+ playGrade: $main.children('td').eq(3).find('div > strong').text().trim(),
17
+ playScore: util.trimToNumber($main.children('td').eq(3).find('small').text().trim()),
18
+ playMusicRate: Number($main.children('td').eq(4).find('div > strong').text().trim().replace('%', '')),
19
+ playJubility: Number($main.children('td').eq(4).find('small').text().trim()),
20
+ playLamp: $main.children('td').eq(5).find('strong').text().trim(),
21
+ playMaxCombo: util.trimToNumber($main.children('td').eq(6).find('strong').text().trim()),
22
+ playScoreJudgements: {
23
+ perfects: util.trimToNumber($collapsed.find("div:contains('Perfects')").text()),
24
+ greats: util.trimToNumber($collapsed.find("div:contains('Greats')").text()),
25
+ goods: util.trimToNumber($collapsed.find("div:contains('Goods')").text()),
26
+ poors: util.trimToNumber($collapsed.find("div:contains('Poors')").text()),
27
+ misses: util.trimToNumber($collapsed.find("div:contains('Misses')").text()),
28
+ },
29
+ playTimestampString: $main.children('td').eq(7).find('small').text().trim(),
30
+ arcadePlayedAtString: $collapsed.find("div:contains('Played at')").text().replace('Played at', ''),
31
+ arcadePlayedAtID: util.trimToNumber($collapsed.find("div:contains('Played at') > a").attr('href')?.split('/').pop()),
32
+ versionPlayedOnString: $collapsed.find("div:contains('Played with')").text().replace('Played with', ''),
33
+ playJudgeBar: $collapsed.find(".jubeat-bars").attr("data-jubeat-judge").split(" ").map(Number),
34
+ onPage: pageIndex,
35
+ };
36
+ return rawData;
37
+ }
38
+ export function parsePnmScoreData(mainElement, collapsedElement, pageIndex) {
39
+ const $ = cheerio.load('');
40
+ const $main = $(mainElement);
41
+ const $collapsed = $(collapsedElement).find('td > div > div');
42
+ const rawData = {
43
+ playID: util.trimToNumber($main.attr('data-target')),
44
+ songTitle: $main.find('td > a > b').text(),
45
+ songArtist: $main.children('td').eq(0).find('small').text().trim(),
46
+ songID: util.trimToNumber($main.find('td > a').attr('href').split('/')[7]),
47
+ playChartDifficultyID: util.trimToNumber($main.find('td > a').attr('href').split('/').pop()),
48
+ playChartDifficultyString: $main.children("td").eq(1).text().trim().replace(/\s*\d+\s*/g, " ").trim().toString(),
49
+ playChartDifficultyNumber: util.trimToNumber($main.children("td").eq(1).text().trim().replace(/\s{5,}/g, " ").replace(/(\d)([A-Z])/g, "$1 $2")),
50
+ playMedal: util.trimToNumber($main.children('td').eq(2).find('img').attr('src').split('_').pop().replace('.png', '')),
51
+ playGrade: $main.children('td').eq(3).find('strong').text().trim(),
52
+ playScore: util.trimToNumber($main.children('td').eq(3).find('div').text().trim()),
53
+ playExScore: util.trimToNumber($collapsed.find("div:contains('EX Score')").text().trim().split(' ').at(2)),
54
+ playScoreJudgements: {
55
+ cool: util.trimToNumber($collapsed.find("div:contains('Cool')").eq(1).text()),
56
+ great: util.trimToNumber($collapsed.find("div:contains('Great')").eq(1).text()),
57
+ good: util.trimToNumber($collapsed.find("div:contains('Good')").text()),
58
+ bad: util.trimToNumber($collapsed.find("div:contains('Bad')").text()),
59
+ },
60
+ playTimestampString: $main.children('td').eq(5).find('small').text().trim(),
61
+ arcadePlayedAtString: $collapsed.find("div:contains('Played at') > a").text().replace('Played at', '').trim(),
62
+ arcadePlayedAtID: util.trimToNumber($collapsed.find("div:contains('Played at') > a").attr('href')?.split('/').pop()),
63
+ versionPlayedOnString: $collapsed.find("div:contains('Played with')").text().replace('Played with', '').trim(),
64
+ onPage: pageIndex,
65
+ };
66
+ return rawData;
67
+ }
68
+ export function parseMusecaScoreData(mainElement, collapsedElement, pageIndex) {
69
+ const $ = cheerio.load('');
70
+ const $main = $(mainElement);
71
+ const $collapsed = $(collapsedElement).find('td > div > div');
72
+ const rawData = {
73
+ playID: util.trimToNumber($main.attr('data-target')),
74
+ songTitle: $main.find('td > a > b').text(),
75
+ songID: util.trimToNumber($main.find('td > a').attr('href').split('/')[7]),
76
+ playChartDifficultyID: util.trimToNumber($main.find('td > a').attr('href').split('/').pop()),
77
+ playChartDifficultyString: $main.children('td').eq(2).text().trim().replace(/\s+/g, '').at(0),
78
+ playChartDifficultyNumber: Number($main.children('td').eq(2).text().trim().replace(/\s+/g, '').slice(1)),
79
+ missionString: $collapsed.find("h4.media-heading").text().trim() || null,
80
+ playScore: util.trimToNumber($main.children('td').eq(3).find('strong').text().trim()),
81
+ playGrade: $main.children('td').eq(4).find('strong').text().trim(),
82
+ playLamp: $main.children('td').eq(5).find('strong').text().trim(),
83
+ playMaxCombo: util.trimToNumber($main.children('td').eq(6).find('strong').text().trim()),
84
+ playScoreJudgements: {
85
+ critical: util.trimToNumber($collapsed.find("div:contains('Critical')").text()),
86
+ near: util.trimToNumber($collapsed.find("div:contains('Near')").text()),
87
+ error: util.trimToNumber($collapsed.find("div:contains('Error')").text()),
88
+ },
89
+ playTimestampString: $main.children('td').eq(7).find('small').text().trim(),
90
+ arcadePlayedAtString: $collapsed.find("div:contains('Played at') > a").text().replace('Played at', '').trim(),
91
+ arcadePlayedAtID: util.trimToNumber($collapsed.find("div:contains('Played at') > a").attr('href')?.split('/').pop()),
92
+ versionPlayedOnString: $collapsed.find("div:contains('Played with')").text().replace('Played with', '').trim(),
93
+ onPage: pageIndex,
94
+ };
95
+ return rawData;
96
+ }
97
+ export function parseGitadoraScoreData(mainElement, collapsedElement, pageIndex) {
98
+ const $ = cheerio.load('');
99
+ const $main = $(mainElement);
100
+ const $collapsed = $(collapsedElement).find('td > div > div');
101
+ const rawData = {
102
+ playID: util.trimToNumber($main.attr('data-target')),
103
+ songTitle: $main.find('td > a > strong').text(),
104
+ // Url is /music/version?/songID/instrument/difficulty
105
+ // 0 is drum, 1 is guitar, 2 is bass
106
+ songID: util.trimToNumber($main.find('td > a').attr('href').split('/')[7]),
107
+ playChartDifficultyID: util.trimToNumber($main.find('td > a').attr('href').split('/')[9]),
108
+ playInstrumentID: util.trimToNumber($main.find('td > a').attr('href').split('/')[8]),
109
+ playInstrumentString: $main.children('td').eq(2).text().trim().split('\n').at(0),
110
+ playChartDifficultyString: $main.children('td').eq(2).text().trim().split('\n').at(-1).trim(),
111
+ playChartDifficultyNumber: Number($main.children('td').eq(2).find('strong').text().trim()),
112
+ playSkillRating: Number($main.children('td').eq(4).find('strong').text().trim()),
113
+ playPercentageScore: Number($main.children('td').eq(4).find('small').text().trim().replace('%', '')),
114
+ playLamp: $main.children('td').eq(5).find('strong').text().trim(),
115
+ playGrade: $main.children('td').eq(3).find('strong').text().trim(),
116
+ playScore: util.trimToNumber($collapsed.find("div:contains('Score')").text().trim()),
117
+ playMaxCombo: util.trimToNumber($collapsed.find("div:contains('Max combo')").text().trim()),
118
+ playScoreJudgements: {
119
+ perfect: util.trimToNumber($collapsed.find("div:contains('Perfect')").text()),
120
+ great: util.trimToNumber($collapsed.find("div:contains('Great')").text()),
121
+ good: util.trimToNumber($collapsed.find("div:contains('Good')").text()),
122
+ ok: util.trimToNumber($collapsed.find("div:contains('OK')").text()),
123
+ miss: util.trimToNumber($collapsed.find("div:contains('Miss')").text()),
124
+ },
125
+ playTimestampString: $main.children('td').eq(6).find('small').text().trim(),
126
+ arcadePlayedAtString: $collapsed.find("div:contains('Played at') > div > a").text().replace('Played at', '').trim(),
127
+ arcadePlayedAtID: util.trimToNumber($collapsed.find("div:contains('Played at') > div > a").attr('href')?.split('/').pop()),
128
+ versionPlayedOnString: $collapsed.find("div:contains('Played with')").text().replace('Played with', '').trim(),
129
+ playJudgeBar: $collapsed.find("svg").children().toArray().map(el => {
130
+ const fill = $(el).attr('fill');
131
+ switch (fill) {
132
+ case "#feff00": // Seems to be anything OTHER than a miss
133
+ return 3;
134
+ case "#7598ff": // Miss, don't believe it's anything else
135
+ return 2;
136
+ case "#ff0000": // Failed here
137
+ return 1;
138
+ case "#000000": // Unplayed
139
+ return 0;
140
+ default: // Unknown or error
141
+ return -1;
142
+ }
143
+ }),
144
+ onPage: pageIndex,
145
+ };
146
+ return rawData;
147
+ }
148
+ export function parseNostalgiaScoreData(mainElement, collapsedElement, pageIndex) {
149
+ const $ = cheerio.load('');
150
+ const $main = $(mainElement);
151
+ const $collapsed = $(collapsedElement).find('td > div > div');
152
+ const fastSlowText = $collapsed.find("div:contains('Fast / Slow')").text();
153
+ const rawData = {
154
+ playID: util.trimToNumber($main.attr('data-target')),
155
+ songTitle: $main.find('td > a > strong').text().trim(),
156
+ songID: util.trimToNumber($main.find('td > a').attr('href').split('/')[7]),
157
+ playChartDifficultyID: util.trimToNumber($main.find('td > a').attr('href').split('/').pop()),
158
+ playChartDifficultyString: $main.children('td').eq(2).text().trim().split('\n').at(0),
159
+ playChartDifficultyNumber: util.trimToNumber($main.children('td').eq(2).text().trim().split('\n').at(1).trim()),
160
+ playGrade: $main.children('td').eq(3).find('strong').text().trim(),
161
+ playScore: util.trimToNumber($main.children('td').eq(3).find('div > small').text().trim()),
162
+ playScoreJudgements: {
163
+ pJust: util.trimToNumber($collapsed.find("div:contains('◆Just')").text()),
164
+ just: util.trimToNumber($collapsed.find("div:contains('Just'):not(:contains('◆'))").text()),
165
+ good: util.trimToNumber($collapsed.find("div:contains('Good')").text()),
166
+ near: util.trimToNumber($collapsed.find("div:contains('Near')").text()),
167
+ miss: util.trimToNumber($collapsed.find("div:contains('Miss')").text()),
168
+ fast: fastSlowText ? util.trimToNumber(fastSlowText.split('/').at(1) ?? 0) : 0, // The element only doesn't exist if all notes were hit perfectly
169
+ slow: fastSlowText ? util.trimToNumber(fastSlowText.split('/').at(2) ?? 0) : 0,
170
+ },
171
+ playTimestampString: $main.children('td').eq(5).find('div > small').text().trim(),
172
+ arcadePlayedAtString: $collapsed.find("div:contains('Played at') > div > a").text().replace('Played at', '').trim(),
173
+ arcadePlayedAtID: util.trimToNumber($collapsed.find("div:contains('Played at') > div > a").attr('href')?.split('/').pop()),
174
+ versionPlayedOnString: $collapsed.find("div:contains('Played with')").text().replace('Played with', '').trim(),
175
+ onPage: pageIndex,
176
+ };
177
+ return rawData;
178
+ }
179
+ export function parseDDRScoreData(mainElement, collapsedElement, pageIndex) {
180
+ {
181
+ const $ = cheerio.load('');
182
+ const $main = $(mainElement);
183
+ const $collapsed = $(collapsedElement).find('td > div > div');
184
+ const hasLamp = $main.children('td').eq(5).find('small').attr('title') ? true : false;
185
+ const flare = $main.children('td').eq(6).text().trim();
186
+ const rawData = {
187
+ playID: util.trimToNumber($main.attr('data-target')),
188
+ songTitle: $main.find('td > a > b').text().trim(),
189
+ songID: util.trimToNumber($main.find('td > a').attr('href').split('/')[7]),
190
+ playChartDifficultyID: util.trimToNumber($main.find('td > a').attr('href').split('/').pop()),
191
+ playPlaystyle: $main.children('td').eq(2).text().trim().split('\n').at(0).split(' ').at(0),
192
+ playChartDifficultyString: $main.children('td').eq(2).text().trim().split('\n').at(0).split(' ').at(1),
193
+ playChartDifficultyNumber: util.trimToNumber($main.children('td').eq(2).text().trim().split('\n').at(1).trim()),
194
+ playLamp: hasLamp ? $main.children('td').eq(5).find('small').attr('title').trim() : undefined,
195
+ playScore: util.trimToNumber($main.children('td').eq(3).find('strong').text().trim()),
196
+ playGrade: $main.children('td').eq(4).find('strong').text().trim(),
197
+ flare: flare ? util.trimToNumber(flare) : undefined,
198
+ playMaxCombo: util.trimToNumber($main.children('td').eq(7).text().trim()),
199
+ playScoreJudgements: {
200
+ marvelous: util.trimToNumber($collapsed.find("strong:contains('Marvelous')").parent().text()),
201
+ perfect: util.trimToNumber($collapsed.find("strong:contains('Perfect')").parent().text()),
202
+ great: util.trimToNumber($collapsed.find("strong:contains('Great')").parent().text()),
203
+ good: util.trimToNumber($collapsed.find("strong:contains('Good')").parent().text()),
204
+ ok: util.trimToNumber($collapsed.find("strong:contains('OK')").parent().text()),
205
+ ng: util.trimToNumber($collapsed.find("strong:contains('NG')").parent().text()),
206
+ miss: util.trimToNumber($collapsed.find("strong:contains('Miss')").parent().text()),
207
+ },
208
+ playTimestampString: $main.children('td').eq(8).find('small').text().trim(),
209
+ arcadePlayedAtString: $collapsed.find("div:contains('Played at') > div > a").text().replace('Played at', '').trim(),
210
+ arcadePlayedAtID: util.trimToNumber($collapsed.find("div:contains('Played at') > div > a").attr('href')?.split('/').pop()),
211
+ versionPlayedOnString: $collapsed.find("div:contains('Played with')").text().replace('Played with', '').trim(),
212
+ onPage: pageIndex,
213
+ };
214
+ return rawData;
215
+ }
216
+ }
217
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,149 @@
1
+ export declare const Games: readonly [{
2
+ readonly name: "iidx";
3
+ readonly playtypes: readonly ["SP", "DP"];
4
+ }, {
5
+ readonly name: "chunithm";
6
+ readonly playtypes: readonly ["Single"];
7
+ }, {
8
+ readonly name: "museca";
9
+ readonly playtypes: readonly ["Single"];
10
+ }, {
11
+ readonly name: "sdvx";
12
+ readonly playtypes: readonly ["Single"];
13
+ }, {
14
+ readonly name: "wacca";
15
+ readonly playtypes: readonly ["Single"];
16
+ }, {
17
+ readonly name: "popn";
18
+ readonly playtypes: readonly ["9B"];
19
+ }, {
20
+ readonly name: "jubeat";
21
+ readonly playtypes: readonly ["Single"];
22
+ }, {
23
+ readonly name: "gitadora";
24
+ readonly playtypes: readonly ["Gita", "Dora"];
25
+ }, {
26
+ readonly name: "maimaidx";
27
+ readonly playtypes: readonly ["Single"];
28
+ }, {
29
+ readonly name: "maimai";
30
+ readonly playtypes: readonly ["Single"];
31
+ }, {
32
+ readonly name: "ongeki";
33
+ readonly playtypes: readonly ["Single"];
34
+ }, {
35
+ readonly name: "ddr";
36
+ readonly playtypes: readonly ["SP", "DP"];
37
+ }];
38
+ export type GameName = typeof Games[number]["name"];
39
+ export type PlaytypeFor<G extends GameName> = Extract<(typeof Games)[number], {
40
+ name: G;
41
+ }>["playtypes"][number];
42
+ export type BatchManualMeta = {
43
+ [G in GameName]: {
44
+ game: G;
45
+ playtype: PlaytypeFor<G>;
46
+ service: string;
47
+ version?: string;
48
+ };
49
+ }[GameName];
50
+ export type BatchManualScoresJubeat = {
51
+ score: number;
52
+ /**
53
+ * The lamp for this score. This should be one of the lamps as described in the config for your game + playtype.
54
+ */
55
+ lamp: string;
56
+ /**
57
+ * Only appears for jubeat. This should be set to the Percent for this score. In jubeat's case, this is your Music Rate.
58
+ *
59
+ * Full match types at https://github.com/zkldi/Tachi/blob/main/common/src/types/batch-manual.ts but im not doin all that, so I'm getting it from https://docs.tachi.ac/codebase/batch-manual/#meta - This should be enough anyways since inGameID SHOULD be able to be used for everything
60
+ *
61
+ * (Undocumented on the wiki, but it was changed to musicRate https://discord.com/channels/683092550160351261/683093545330147399/1067897460791451654)
62
+ */
63
+ musicRate?: number;
64
+ /** This determines how identifier will be used to match your scores' chart with Tachi's database of songs and charts.*/
65
+ matchType: "inGameID" | "tachiSongID";
66
+ /** A string that Tachi uses to identify what chart this is for. How this is used depends on the matchType.*/
67
+ identifier: string;
68
+ /**
69
+ * If matchType is `tachiSongID`, `inGameID`, `ddrSongHash` or `songTitle`, this field must be present, and describe the difficulty of the chart this score is for.
70
+ *
71
+ * Because this projects plans to only use the above, difficulty is set as required here, otherwise it is technically conditional
72
+ */
73
+ difficulty: string;
74
+ /** If matchType is `songTitle`, this field can be present, and describe the artist name for less equivocal matching. This field is optional for legacy purposes. */
75
+ artist?: string;
76
+ /** This is when the score was achieved in unix milliseconds. This should be provided if possible, as Tachi uses it for a LOT of features. */
77
+ timeAchieved?: number | null;
78
+ /** A comment from the user about this score. */
79
+ comment?: string | null;
80
+ /** The detailed judgement counts for this score. This should be provided if possible, as Tachi uses it for a LOT of features. */
81
+ judgements?: any;
82
+ /** Any optional metrics you wish to provide for this game. */
83
+ optional?: any;
84
+ /** This can be a partial record of various scoreMeta props for this game. */
85
+ scoreMeta?: any;
86
+ };
87
+ export interface BatchManualJSONJubeat {
88
+ meta: BatchManualMeta;
89
+ scores: BatchManualScoresJubeat[];
90
+ }
91
+ export interface BatchManualScoresPnm {
92
+ score: number;
93
+ /**
94
+ * The clear medal for this score. This should be one of the medals as described in the config for your game + playtype.
95
+ */
96
+ clearMedal: string;
97
+ judgements: any;
98
+ difficulty: string;
99
+ matchType: "inGameID" | "tachiSongID" | "popnChartHash";
100
+ identifier: string;
101
+ timeAchieved?: number | null;
102
+ }
103
+ export interface BatchManualJSONPnm {
104
+ meta: BatchManualMeta;
105
+ scores: BatchManualScoresPnm[];
106
+ }
107
+ export interface BatchManualScoresMuseca {
108
+ score: number;
109
+ lamp: string;
110
+ judgements: any;
111
+ difficulty: string;
112
+ matchType: "songTitle" | "tachiSongID" | "inGameID";
113
+ identifier: string;
114
+ optional?: any;
115
+ timeAchieved?: number | null;
116
+ }
117
+ export interface BatchManualJSONMuseca {
118
+ meta: BatchManualMeta;
119
+ scores: BatchManualScoresMuseca[];
120
+ }
121
+ export interface BatchManualScoresGitadora {
122
+ percent: number;
123
+ lamp: string;
124
+ judgements: any;
125
+ difficulty: string;
126
+ matchType: "inGameID" | "songTitle" | "tachiSongID";
127
+ identifier: string;
128
+ optional?: any;
129
+ timeAchieved?: number | null;
130
+ }
131
+ export interface BatchManualJSONGitadora {
132
+ meta: BatchManualMeta;
133
+ scores: BatchManualScoresGitadora[];
134
+ }
135
+ export interface BatchManualScoresDDR {
136
+ score: number;
137
+ lamp: string;
138
+ difficulty: string;
139
+ judgements: any;
140
+ matchType: "inGameID" | "songTitle" | "tachiSongID" | "ddrSongHash";
141
+ identifier: string;
142
+ optional?: any;
143
+ timeAchieved?: number | null;
144
+ }
145
+ export interface BatchManualJSONDDR {
146
+ meta: BatchManualMeta;
147
+ scores: BatchManualScoresDDR[];
148
+ }
149
+ //# sourceMappingURL=convert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../src/types/convert.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAaR,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpD,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,QAAQ,IACtC,OAAO,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtE,MAAM,MAAM,eAAe,GAAG;KACzB,CAAC,IAAI,QAAQ,GAAG;QACb,IAAI,EAAE,CAAC,CAAC;QACR,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;QACzB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;KACpB;CACJ,CAAC,QAAQ,CAAC,CAAC;AAGZ,MAAM,MAAM,uBAAuB,GAAG;IAClC,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yHAAyH;IACzH,SAAS,EAAE,UAAU,GAAG,aAAa,CAAC;IACtC,6GAA6G;IAC7G,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,oKAAoK;IACpK,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6IAA6I;IAC7I,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,iIAAiI;IACjI,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,6EAA6E;IAC7E,SAAS,CAAC,EAAE,GAAG,CAAC;CACnB,CAAA;AAED,MAAM,WAAW,qBAAqB;IAClC,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,uBAAuB,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,oBAAoB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,GAAG,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,UAAU,GAAG,aAAa,GAAG,eAAe,CAAC;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,oBAAoB,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,uBAAuB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,GAAG,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,WAAW,GAAG,aAAa,GAAG,UAAU,CAAC;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,qBAAqB;IAClC,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,uBAAuB,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,yBAAyB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,GAAG,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,UAAU,GAAG,WAAW,GAAG,aAAa,CAAC;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,uBAAuB;IACpC,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,yBAAyB,EAAE,CAAC;CACvC;AACD,MAAM,WAAW,oBAAoB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,GAAG,CAAC;IAChB,SAAS,EAAE,UAAU,GAAG,WAAW,GAAG,aAAa,GAAG,aAAa,CAAC;IACpE,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,oBAAoB,EAAE,CAAC;CAClC"}
@@ -0,0 +1,16 @@
1
+ // https://docs.tachi.ac/codebase/batch-manual/#meta
2
+ export const Games = [
3
+ { name: "iidx", playtypes: ["SP", "DP"] },
4
+ { name: "chunithm", playtypes: ["Single"] },
5
+ { name: "museca", playtypes: ["Single"] },
6
+ { name: "sdvx", playtypes: ["Single"] },
7
+ { name: "wacca", playtypes: ["Single"] },
8
+ { name: "popn", playtypes: ["9B"] },
9
+ { name: "jubeat", playtypes: ["Single"] },
10
+ { name: "gitadora", playtypes: ["Gita", "Dora"] },
11
+ { name: "maimaidx", playtypes: ["Single"] },
12
+ { name: "maimai", playtypes: ["Single"] },
13
+ { name: "ongeki", playtypes: ["Single"] },
14
+ { name: "ddr", playtypes: ["SP", "DP"] },
15
+ ];
16
+ //# sourceMappingURL=convert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert.js","sourceRoot":"","sources":["../../src/types/convert.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,MAAM,CAAC,MAAM,KAAK,GAAG;IACjB,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;IACzC,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE;IAC3C,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE;IACzC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE;IACvC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE;IACxC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE;IACnC,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE;IACzC,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;IACjD,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE;IAC3C,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE;IACzC,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE;IACzC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;CAClC,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare class InvalidSessionCookieError extends Error {
2
+ constructor(message?: string);
3
+ }
4
+ export declare class TooManyRatelimitErrors extends Error {
5
+ constructor(message?: string);
6
+ }
7
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/types/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,yBAA0B,SAAQ,KAAK;gBACpC,OAAO,GAAE,MAA6F;CAIrH;AAED,qBAAa,sBAAuB,SAAQ,KAAK;gBACjC,OAAO,GAAE,MAAuE;CAI/F"}
@@ -0,0 +1,13 @@
1
+ export class InvalidSessionCookieError extends Error {
2
+ constructor(message = "The provided session cookie is invalid, please double check it or create a new one") {
3
+ super(message);
4
+ this.name = "InvalidSessionCookieError";
5
+ }
6
+ }
7
+ export class TooManyRatelimitErrors extends Error {
8
+ constructor(message = "The server returned 429 too often, aborting further requests") {
9
+ super(message);
10
+ this.name = "TooManyRatelimitErrors";
11
+ }
12
+ }
13
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/types/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAChD,YAAY,UAAkB,oFAAoF;QAC9G,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;IAC5C,CAAC;CACJ;AAED,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC7C,YAAY,UAAkB,8DAA8D;QACxF,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACzC,CAAC;CACJ"}
@@ -0,0 +1,95 @@
1
+ interface BaseDataRawJSON {
2
+ playID: number;
3
+ songTitle: string;
4
+ songID: number;
5
+ playChartDifficultyID: number;
6
+ playChartDifficultyString: string;
7
+ playChartDifficultyNumber: number;
8
+ playGrade: string;
9
+ playScore: number;
10
+ playTimestampString: string;
11
+ arcadePlayedAtString: string;
12
+ arcadePlayedAtID: number;
13
+ versionPlayedOnString: string;
14
+ onPage: number;
15
+ }
16
+ export interface JubeatDataRawJSON extends BaseDataRawJSON {
17
+ playIsHardPlay: boolean;
18
+ playMusicRate: number;
19
+ playJubility: number;
20
+ playLamp: string;
21
+ playMaxCombo: number;
22
+ playScoreJudgements: {
23
+ perfects: number;
24
+ greats: number;
25
+ goods: number;
26
+ poors: number;
27
+ misses: number;
28
+ };
29
+ playJudgeBar: number[];
30
+ }
31
+ export interface PnmDataRawJSON extends BaseDataRawJSON {
32
+ songArtist: string;
33
+ playMedal: number;
34
+ playExScore: number;
35
+ playScoreJudgements: {
36
+ cool: number;
37
+ great: number;
38
+ good: number;
39
+ bad: number;
40
+ };
41
+ }
42
+ export interface MusecaDataRawJSON extends BaseDataRawJSON {
43
+ missionString: string | null;
44
+ playLamp: string;
45
+ playMaxCombo: number;
46
+ playScoreJudgements: {
47
+ critical: number;
48
+ near: number;
49
+ error: number;
50
+ };
51
+ }
52
+ export interface GitadoraDataRawJSON extends BaseDataRawJSON {
53
+ playInstrumentID: number;
54
+ playInstrumentString: string;
55
+ playSkillRating: number;
56
+ playPercentageScore: number;
57
+ playLamp: string;
58
+ playMaxCombo: number;
59
+ playScoreJudgements: {
60
+ perfect: number;
61
+ great: number;
62
+ good: number;
63
+ ok: number;
64
+ miss: number;
65
+ };
66
+ playJudgeBar: number[];
67
+ }
68
+ export interface NostalgiaDataRawJSON extends BaseDataRawJSON {
69
+ playScoreJudgements: {
70
+ pJust: number;
71
+ just: number;
72
+ good: number;
73
+ near: number;
74
+ miss: number;
75
+ fast: number;
76
+ slow: number;
77
+ };
78
+ }
79
+ export interface DDRDataRawJSON extends BaseDataRawJSON {
80
+ playPlaystyle: string;
81
+ playLamp?: string;
82
+ flare?: number;
83
+ playMaxCombo: number;
84
+ playScoreJudgements: {
85
+ marvelous: number;
86
+ perfect: number;
87
+ great: number;
88
+ good: number;
89
+ ok: number;
90
+ ng: number;
91
+ miss: number;
92
+ };
93
+ }
94
+ export {};
95
+ //# sourceMappingURL=scorelogJson.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scorelogJson.d.ts","sourceRoot":"","sources":["../../src/types/scorelogJson.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=scorelogJson.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scorelogJson.js","sourceRoot":"","sources":["../../src/types/scorelogJson.ts"],"names":[],"mappings":""}
package/dist/util.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ export declare function trimToNumber(inputString: string): number;
2
+ export declare function doesGameHaveProfileInUrl(game: string): boolean;
3
+ export declare function delay(ms: number): Promise<void>;
4
+ //# sourceMappingURL=util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAgB9D;AAED,wBAAsB,KAAK,CAAC,EAAE,EAAE,MAAM,iBAErC"}
package/dist/util.js ADDED
@@ -0,0 +1,24 @@
1
+ export function trimToNumber(inputString) {
2
+ return Number(inputString.replace(/\D/g, ''));
3
+ }
4
+ export function doesGameHaveProfileInUrl(game) {
5
+ switch (game) {
6
+ case 'iidx':
7
+ case 'jubeat':
8
+ case 'rb':
9
+ case 'gitadora':
10
+ case 'sdvx':
11
+ case 'museca':
12
+ return true;
13
+ case 'ddr':
14
+ case 'nostalgia':
15
+ case 'pnm':
16
+ return false;
17
+ default:
18
+ return false;
19
+ }
20
+ }
21
+ export async function delay(ms) {
22
+ return new Promise((resolve) => setTimeout(resolve, ms));
23
+ }
24
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,YAAY,CAAC,WAAmB;IAC5C,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,IAAY;IACjD,QAAQ,IAAI,EAAE,CAAC;QACX,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI,CAAC;QACV,KAAK,UAAU,CAAC;QAChB,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ;YACT,OAAO,IAAI,CAAC;QAChB,KAAK,KAAK,CAAC;QACX,KAAK,WAAW,CAAC;QACjB,KAAK,KAAK;YACN,OAAO,KAAK,CAAC;QACjB;YACI,OAAO,KAAK,CAAC;IACrB,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,EAAU;IAClC,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACnE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "flowerpicker",
3
- "version": "1.6.0",
3
+ "version": "1.7.0",
4
4
  "description": "Data scraper for a certain rhythm game website",
5
5
  "author": "BoopDog",
6
6
  "license": "MIT",