ids support :D :D :D :D help m
This commit is contained in:
parent
77946f0ed7
commit
30ff75bf34
|
@ -0,0 +1,102 @@
|
|||
import { GoogleSpreadsheet } from 'google-spreadsheet';
|
||||
|
||||
const IDS_ID = '15ehtAIpCR8s04qIb8zij9sTpUdGJbmAE_LDcfVA3tcU';
|
||||
const IDS_REGULAR_LEVELS_ID = 1309758655;
|
||||
|
||||
const fruityLevels = {
|
||||
'The Place': 'The Place',
|
||||
'\'10': '10',
|
||||
'(m)ORBJECT': 'ORBJECT',
|
||||
'Dark matter (Real)': 'Dark matter',
|
||||
'Versus... MR. BEAST!!!': 'Vers', // ???
|
||||
};
|
||||
|
||||
// horrid. thank you ids
|
||||
const colors = {
|
||||
'0,0,0': { tier: 'Fuck', broken: 'no' },
|
||||
'74,134,232': { tier: 'Beginner', broken: 'no' },
|
||||
'28,69,135': { tier: 'Beginner', broken: 'yes' },
|
||||
'7,55,99': { tier: 'Beginner', broken: 'yes' }, // ????????
|
||||
'0,255,255': { tier: 'Easy', broken: 'no' },
|
||||
'0,171,171': { tier: 'Easy', broken: 'yes' },
|
||||
'0,255,0': { tier: 'Medium', broken: 'no' },
|
||||
'0,154,0': { tier: 'Medium', broken: 'yes' },
|
||||
'255,255,0': { tier: 'Hard', broken: 'no' },
|
||||
'191,144,0': { tier: 'Hard', broken: 'yes' },
|
||||
// there's also a few 0,0,0s in very hard because i guess the IDS sheet editor like causing pain onto people like me
|
||||
'255,153,0': { tier: 'Very Hard', broken: 'no' },
|
||||
'180,95,6': { tier: 'Very Hard', broken: 'yes' },
|
||||
'255,0,0': { tier: 'Insane', broken: 'no' },
|
||||
'153,0,0': { tier: 'Insane', broken: 'yes' },
|
||||
'255,0,255': { tier: 'Extreme', broken: 'no' },
|
||||
'161,0,161': { tier: 'Extreme', broken: 'yes' },
|
||||
'153,0,255': { tier: 'Extreme', broken: 'no' }, // ????
|
||||
}
|
||||
|
||||
async function fetchRegularCells(sheet) {
|
||||
console.log('fetching cells');
|
||||
// we need this for formatting :)
|
||||
await sheet.loadCells('A:B');
|
||||
|
||||
let levels = [];
|
||||
let tiers = [];
|
||||
let broken = [];
|
||||
|
||||
let rowID = 1;
|
||||
let previousTier = 'penis tier :33';
|
||||
while (true) {
|
||||
const cell = sheet.getCell(rowID, 0);
|
||||
if (!cell || cell == null || cell.value == null) break;
|
||||
const color = cell.backgroundColor || {};
|
||||
const colorString = Math.round((color.red || 0) * 255) + ',' + Math.round((color.green || 0) * 255) + ',' + Math.round((color.blue || 0) * 255);
|
||||
let tier = colors[colorString];
|
||||
if (!tier) tier = { tier: previousTier };
|
||||
if (rowID > 50 && tier.tier === 'Fuck') tier = { tier: previousTier, broken: 'no' };
|
||||
levels.push(cell.value.toString())
|
||||
tiers.push(tier.tier);
|
||||
broken.push(tier.broken || null);
|
||||
previousTier = tier.tier;
|
||||
rowID++;
|
||||
}
|
||||
|
||||
const creators = await sheet.getCellsInRange('C2:C');
|
||||
const skillsets = await sheet.getCellsInRange('E2:E');
|
||||
const descriptions = await sheet.getCellsInRange('F2:F');
|
||||
|
||||
return { levels, tiers, broken, creators, skillsets, descriptions };
|
||||
}
|
||||
|
||||
async function fetchLevels(sheet) {
|
||||
const { levels, tiers, broken, creators, skillsets, descriptions } = await fetchRegularCells(sheet);
|
||||
|
||||
let levelObjs = [];
|
||||
|
||||
for (let i in levels) {
|
||||
const level = levels[i], tier = tiers[i], broke = broken[i], creator = creators[i], skillset = skillsets[i], description = descriptions[i];
|
||||
|
||||
const obj = {
|
||||
sheetIndex: parseInt(i) + 1,
|
||||
tier: tier,
|
||||
name: fruityLevels[level] || level || "",
|
||||
creator: (creator && creator[0] || "").trim(),
|
||||
skillset: (skillset && skillset[0] || "").trim(),
|
||||
description: (description && description[0] || "").trim(),
|
||||
broken: broke,
|
||||
};
|
||||
|
||||
levelObjs.push(obj);
|
||||
}
|
||||
|
||||
return levelObjs;
|
||||
}
|
||||
|
||||
const doc = new GoogleSpreadsheet(IDS_ID, { apiKey: process.env.API_KEY });
|
||||
await doc.loadInfo(); // loads document properties and worksheets
|
||||
console.log('loaded IDS spreadsheet');
|
||||
|
||||
export async function fetchAllLevels() {
|
||||
console.log('fetching IDS levels');
|
||||
return {
|
||||
regular: await fetchLevels(doc.sheetsById[IDS_REGULAR_LEVELS_ID]),
|
||||
};
|
||||
}
|
13
index.js
13
index.js
|
@ -1,5 +1,6 @@
|
|||
import express from 'express';
|
||||
import { fetchAllLevels as fetchNLWLevels } from './nlw.js';
|
||||
import { fetchAllLevels as fetchIDSLevels } from './ids.js';
|
||||
|
||||
let levels = {
|
||||
nlw: {
|
||||
|
@ -7,11 +8,15 @@ let levels = {
|
|||
pending: [],
|
||||
platformer: [],
|
||||
},
|
||||
ids: {
|
||||
regular: [],
|
||||
},
|
||||
};
|
||||
|
||||
async function fetchSheets() {
|
||||
const { regular, pending, platformer } = await fetchNLWLevels();
|
||||
levels.nlw = { regular, pending, platformer };
|
||||
const nlw = await fetchNLWLevels();
|
||||
const ids = await fetchIDSLevels();
|
||||
levels = { nlw, ids };
|
||||
}
|
||||
|
||||
await fetchSheets();
|
||||
|
@ -46,6 +51,10 @@ app.get('/list', (req, res) => {
|
|||
res.json(list);
|
||||
});
|
||||
|
||||
app.get('/ids', (req, res) => {
|
||||
res.json(levels.ids.regular);
|
||||
});
|
||||
|
||||
const port = process.env.PORT || 8080
|
||||
app.listen(port);
|
||||
console.log(`lisening on port ${port}`);
|
13
nlw.js
13
nlw.js
|
@ -75,10 +75,10 @@ async function fetchLevels(sheet, platformer, pending) {
|
|||
sheetIndex: parseInt(i),
|
||||
tier: lastTier,
|
||||
name: fruityLevels[level[0]] || level[0] || "",
|
||||
creator: creator && creator[0] || "",
|
||||
skillset: skillset && skillset[0] || "",
|
||||
creator: (creator && creator[0] || "").trim(),
|
||||
skillset: (skillset && skillset[0] || "").trim(),
|
||||
enjoyment: !isNaN(enjoymentParse) ? enjoymentParse : null,
|
||||
description: description && description[0] || "",
|
||||
description: (description && description[0] || "").trim(),
|
||||
};
|
||||
|
||||
levelObjs.push(obj);
|
||||
|
@ -87,11 +87,12 @@ async function fetchLevels(sheet, platformer, pending) {
|
|||
return levelObjs;
|
||||
}
|
||||
|
||||
const doc = new GoogleSpreadsheet(NLW_ID, { apiKey: process.env.API_KEY });
|
||||
await doc.loadInfo(); // loads document properties and worksheets
|
||||
console.log('loaded NLW spreadsheet');
|
||||
|
||||
export async function fetchAllLevels() {
|
||||
console.log('fetching NLW levels');
|
||||
const doc = new GoogleSpreadsheet(NLW_ID, { apiKey: process.env.API_KEY });
|
||||
await doc.loadInfo(); // loads document properties and worksheets
|
||||
console.log('loaded spreadsheet');
|
||||
return {
|
||||
regular: await fetchLevels(doc.sheetsById[NLW_REGULAR_LEVELS_ID], false, false),
|
||||
pending: await fetchLevels(doc.sheetsById[NLW_PENDING_LEVELS_ID], false, true),
|
||||
|
|
Loading…
Reference in New Issue