mirror of
https://github.com/Drop-OSS/drop.git
synced 2025-11-10 12:32:09 +10:00
feat: igdb tag support
This commit is contained in:
@ -32,6 +32,12 @@ interface IGDBItem {
|
|||||||
id: IGDBID;
|
id: IGDBID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface IGDBGenre extends IGDBItem {
|
||||||
|
name: string;
|
||||||
|
slug: string;
|
||||||
|
url: string;
|
||||||
|
}
|
||||||
|
|
||||||
// denotes role a company had in a game
|
// denotes role a company had in a game
|
||||||
interface IGDBInvolvedCompany extends IGDBItem {
|
interface IGDBInvolvedCompany extends IGDBItem {
|
||||||
company: IGDBID;
|
company: IGDBID;
|
||||||
@ -250,8 +256,6 @@ export class IGDBProvider implements MetadataProvider {
|
|||||||
let result = "";
|
let result = "";
|
||||||
|
|
||||||
response.forEach((cover) => {
|
response.forEach((cover) => {
|
||||||
console.log(cover);
|
|
||||||
|
|
||||||
if (cover.url.startsWith("https:")) {
|
if (cover.url.startsWith("https:")) {
|
||||||
result = cover.url;
|
result = cover.url;
|
||||||
} else {
|
} else {
|
||||||
@ -279,6 +283,34 @@ export class IGDBProvider implements MetadataProvider {
|
|||||||
return msg.length > len ? msg.substring(0, 280) + "..." : msg;
|
return msg.length > len ? msg.substring(0, 280) + "..." : msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async _getGenreInternal(genreID: IGDBID) {
|
||||||
|
if (genreID === undefined) throw new Error(`IGDB genreID was undefined`);
|
||||||
|
|
||||||
|
const body = `where id = ${genreID}; fields slug,name,url;`;
|
||||||
|
const response = await this.request<IGDBGenre>("genres", body);
|
||||||
|
|
||||||
|
let result = "";
|
||||||
|
|
||||||
|
response.forEach((genre) => {
|
||||||
|
result = genre.name;
|
||||||
|
});
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private async getGenres(genres: IGDBID[] | undefined): Promise<string[]> {
|
||||||
|
if (genres === undefined) return [];
|
||||||
|
|
||||||
|
const results: string[] = [];
|
||||||
|
for (const genre of genres) {
|
||||||
|
results.push(await this._getGenreInternal(genre));
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(results);
|
||||||
|
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
|
||||||
name() {
|
name() {
|
||||||
return "IGDB";
|
return "IGDB";
|
||||||
}
|
}
|
||||||
@ -297,7 +329,7 @@ export class IGDBProvider implements MetadataProvider {
|
|||||||
if (cover !== undefined) {
|
if (cover !== undefined) {
|
||||||
icon = await this.getCoverURL(cover);
|
icon = await this.getCoverURL(cover);
|
||||||
} else {
|
} else {
|
||||||
icon = "/wallpapers/error-wallpaper.jpg";
|
icon = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
const firstReleaseDate = response[i].first_release_date;
|
const firstReleaseDate = response[i].first_release_date;
|
||||||
@ -308,7 +340,7 @@ export class IGDBProvider implements MetadataProvider {
|
|||||||
description: response[i].summary,
|
description: response[i].summary,
|
||||||
year:
|
year:
|
||||||
firstReleaseDate === undefined
|
firstReleaseDate === undefined
|
||||||
? DateTime.now().year
|
? 0
|
||||||
: DateTime.fromSeconds(firstReleaseDate).year,
|
: DateTime.fromSeconds(firstReleaseDate).year,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -387,7 +419,7 @@ export class IGDBProvider implements MetadataProvider {
|
|||||||
description: response[i].summary,
|
description: response[i].summary,
|
||||||
released:
|
released:
|
||||||
firstReleaseDate === undefined
|
firstReleaseDate === undefined
|
||||||
? DateTime.now().toJSDate()
|
? new Date()
|
||||||
: DateTime.fromSeconds(firstReleaseDate).toJSDate(),
|
: DateTime.fromSeconds(firstReleaseDate).toJSDate(),
|
||||||
|
|
||||||
reviews: [
|
reviews: [
|
||||||
@ -403,8 +435,7 @@ export class IGDBProvider implements MetadataProvider {
|
|||||||
publishers: [],
|
publishers: [],
|
||||||
developers: [],
|
developers: [],
|
||||||
|
|
||||||
// TODO: support tags
|
tags: await this.getGenres(response[i].genres),
|
||||||
tags: [],
|
|
||||||
|
|
||||||
icon,
|
icon,
|
||||||
bannerId: banner,
|
bannerId: banner,
|
||||||
|
|||||||
Reference in New Issue
Block a user