screenscraper-js
Version:
A wrapper around the screenscraper API
85 lines (84 loc) • 2.7 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformGame = void 0;
function omit(obj, keys) {
const keysToRemove = new Set(keys.flat());
return Object.fromEntries(
// convert the entries back to object
Object.entries(obj) // convert the object to entries
.filter(([k]) => !keysToRemove.has(k)) // remove entries with keys that exist in the Set
);
}
const filterMedia = (media) => media.filter((m) => {
if (m.type === "pictoliste" ||
m.type === "pictomonochrome" ||
m.type === "pictocouleur" ||
m.type === "wheel-steel" ||
m.type === "wheel-carbon" ||
m.type === "themehs") {
return false;
}
if (!m.region) {
return true;
}
if (m.type === "manuel" && m.region === "asi") {
return true;
}
if (m.type === "wheel-hd") {
return true;
}
return (m.region === "wor" ||
m.region === "eu" ||
m.region === "ss" ||
m.region === "us" ||
m.region === "au");
});
const transformGame = (game, language) => {
const name = game.noms.filter((n) => n.region === "wor" ||
n.region === "us" ||
n.region === "eu" ||
n.region === "ss")?.[0]?.text;
return {
id: game.id,
publisher: game.editeur,
developer: game.developpeur,
players: game.joueurs?.text,
rotation: game.rotation,
rating: game.note?.text,
system: game.systeme,
name,
synopsis: game.synopsis?.find((s) => s.langue === language)?.text,
classifications: game.classifications,
dates: game.dates,
family: game?.familles?.map((f) => {
return {
id: f.id,
shortName: f.nomcourt,
name: f.noms?.find((s) => s.langue === language)?.text,
};
}),
genres: game?.genres?.map((f) => {
return {
id: f.id,
name: f.noms.find((s) => s.langue === language)?.text,
};
}),
modes: game?.modes?.map((f) => {
return {
id: f.id,
name: f.noms.find((s) => s.langue === language)?.text,
};
}),
media: filterMedia(game.medias)?.reduce((acc, curr) => {
const cleanCurr = omit(curr, ["sha1", "crc", "type", "parent", "md5"]);
if (!acc[curr.type]) {
acc[curr.type] = [cleanCurr];
}
else {
acc[curr.type] = [...acc[curr.type], cleanCurr];
}
return acc;
}, {}),
};
};
exports.transformGame = transformGame;