Ignore games with no JSON-LD

pull/47/head
MillenniumEarl 2020-11-09 17:53:29 +01:00
parent fe164e1ea6
commit 6bb089cca6
5 changed files with 13 additions and 8 deletions

View File

@ -22,9 +22,9 @@ main();
async function main() { async function main() {
// Local variables // Local variables
const gameList = [ const gameList = [
"Four Elements Trainer",
"corrupted kingdoms", "corrupted kingdoms",
"summertime saga", "summertime saga"
"brothel king"
]; ];
// Log in the platform // Log in the platform

View File

@ -122,6 +122,7 @@ module.exports.getGameData = async function (name, mod) {
for (const url of urls) { for (const url of urls) {
// Start looking for information // Start looking for information
const info = await scraper.getGameInfo(url); const info = await scraper.getGameInfo(url);
if(!info) continue;
results.push(info); results.push(info);
} }
return results; return results;

View File

@ -14,7 +14,7 @@ const f95Selector = require("./constants/css-selector.js");
* Get information from the game's main page. * Get information from the game's main page.
* @param {String} url URL of the game/mod to extract data from * @param {String} url URL of the game/mod to extract data from
* @return {Promise<GameInfo>} Complete information about the game you are * @return {Promise<GameInfo>} Complete information about the game you are
* looking for * looking for or `null` if is impossible to parse information
*/ */
module.exports.getGameInfo = async function (url) { module.exports.getGameInfo = async function (url) {
shared.logger.info("Obtaining game info"); shared.logger.info("Obtaining game info");
@ -32,8 +32,12 @@ module.exports.getGameInfo = async function (url) {
const src = extractPreviewSource(body); const src = extractPreviewSource(body);
const changelog = extractChangelog(mainPost); const changelog = extractChangelog(mainPost);
const structuredData = extractStructuredData(body); const structuredData = extractStructuredData(body);
const parsedInfos = parseMainPostText(structuredData["description"]);
const overview = getOverview(structuredData["description"], prefixesData.mod); // Sometimes the JSON-LD are not set, especially in low-profile game
if(!structuredData) return null;
const parsedInfos = parseMainPostText(structuredData.description);
const overview = getOverview(structuredData.description, prefixesData.mod);
// Obtain the updated URL // Obtain the updated URL
const redirectUrl = await getUrlRedirect(url); const redirectUrl = await getUrlRedirect(url);
@ -302,7 +306,7 @@ function extractStructuredData(body) {
// Return only the data of the game // Return only the data of the game
if (json["@type"] === "Book") return json; if (json["@type"] === "Book") return json;
}).get(); }).get();
return json[0] ? json[0] : null; return json.lenght !== 0 ? json[0] : null;
} }
/** /**

2
package-lock.json generated
View File

@ -1,6 +1,6 @@
{ {
"name": "f95api", "name": "f95api",
"version": "1.5.0", "version": "1.6.1",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {

View File

@ -1,7 +1,7 @@
{ {
"main": "./app/index.js", "main": "./app/index.js",
"name": "f95api", "name": "f95api",
"version": "1.6.0", "version": "1.6.1",
"author": { "author": {
"name": "Millennium Earl" "name": "Millennium Earl"
}, },