Add parseMedia function to parse catalogs

This commit is contained in:
mrcanelas
2024-10-23 10:57:24 -03:00
parent 22f111da3d
commit 5644613260
4 changed files with 27 additions and 45 deletions
+3 -28
View File
@@ -4,6 +4,7 @@ const moviedb = new MovieDb(process.env.TMDB_API);
const { getGenreList } = require("./getGenreList");
const { getLanguages } = require("./getLanguages");
const { getTrending } = require("./getTrending");
const { parseMedia } = require("../utils/parseProps");
async function getCatalog(type, id, language, genre, page) {
if (id === "tmdb.top" && !genre) {return await getTrending(type, id, language, "week", page)}
@@ -33,20 +34,7 @@ async function getCatalog(type, id, language, genre, page) {
return await moviedb
.discoverMovie(parameters)
.then(async (res) => {
const metas = res.results.map((el) => {
return {
id: `tmdb:${el.id}`,
name: el.title,
genre: el.genre_ids.map(genre => genre_id.find((x) => x.id === genre).name),
poster: `https://image.tmdb.org/t/p/w500${el.poster_path}`,
background: `https://image.tmdb.org/t/p/original${el.backdrop_path}`,
posterShape: "regular",
imdbRating: el.vote_average.toFixed(1),
year: el.release_date ? el.release_date.substr(0, 4) : "",
type: type,
description: el.overview,
}
})
const metas = res.results.map(el => parseMedia(el, 'movie', genre_id));
return { metas };
})
.catch(console.error);
@@ -72,20 +60,7 @@ async function getCatalog(type, id, language, genre, page) {
return await moviedb
.discoverTv(parameters)
.then(async (res) => {
const metas = res.results.map((el) => {
return {
id: `tmdb:${el.id}`,
name: el.name,
genre: el.genre_ids.map(genre => genre_id.find((x) => x.id === genre).name),
poster: `https://image.tmdb.org/t/p/w500${el.poster_path}`,
background: `https://image.tmdb.org/t/p/original${el.backdrop_path}`,
posterShape: "regular",
imdbRating: el.vote_average.toFixed(1),
year: el.first_air_date ? el.first_air_date.substr(0, 4) : "",
type: type,
description: el.overview,
}
})
const metas = res.results.map(el => parseMedia(el, 'tv', genre_id));
return { metas };
})
.catch(console.error);
+1 -1
View File
@@ -29,7 +29,7 @@ async function getSearch(type, language, query, include_adult) {
await moviedb
.searchMovie({ query: searchQuery, language, include_adult })
.then((res) => {
res.results.map((el) => {searchMovie.push(parseMedia(el, 'movie', []));});
res.results.map((el) => {searchMovie.push(parseMedia(el, 'movie'));});
})
.catch(console.error);
}
+4 -15
View File
@@ -2,10 +2,12 @@ require("dotenv").config();
const { MovieDb } = require("moviedb-promise");
const moviedb = new MovieDb(process.env.TMDB_API);
const { getGenreList } = require("./getGenreList");
const { parseMedia } = require("../utils/parseProps");
async function getTrending(type, id, language, genre, page) {
const media_type = type === "series" ? "tv" : type
const parameters = {
media_type: type === "series" ? "tv" : type,
media_type,
time_window: genre.toLowerCase(),
language,
page,
@@ -14,20 +16,7 @@ async function getTrending(type, id, language, genre, page) {
return await moviedb
.trending(parameters)
.then(async (res) => {
const metas = res.results.map((el) => {
return {
id: `tmdb:${el.id}`,
name: type === "movie" ? el.title : el.name,
genre: el.genre_ids.map(genre => genre_id.find((x) => x.id === genre).name),
poster: `https://image.tmdb.org/t/p/w500${el.poster_path}`,
background: `https://image.tmdb.org/t/p/original${el.backdrop_path}`,
posterShape: "regular",
imdbRating: el.vote_average.toFixed(1),
year: type === "movie" ? el.release_date ? el.release_date.substr(0, 4) : "" : el.first_air_date ? el.first_air_date.substr(0, 4) : "",
type: type,
description: el.overview,
}
})
const metas = res.results.map(el => parseMedia(el, media_type, genre_id));
return { metas };
})
.catch(console.error);
+19 -1
View File
@@ -157,7 +157,6 @@ function parseConfig(catalogChoices) {
config = JSON.parse(catalogChoices);
} catch (e) {
if (catalogChoices) {
// reverse compatibility for old version of config
config.language = catalogChoices;
}
}
@@ -173,6 +172,24 @@ async function parsePoster(type, id, poster, language, rpdbkey) {
return tmdbImage;
}
function parseMedia(el, type, genre_id = []) { // Definindo um valor padrão para genre_id
const genres = Array.isArray(el.genre_ids)
? el.genre_ids.map(genre => genre_id.find((x) => x.id === genre)?.name || 'Unknown') // Usando optional chaining e valor padrão
: [];
return {
id: `tmdb:${el.id}`,
name: type === 'movie' ? el.title : el.name,
genre: genres,
poster: `https://image.tmdb.org/t/p/w500${el.poster_path}`,
background: `https://image.tmdb.org/t/p/original${el.backdrop_path}`,
posterShape: "regular",
imdbRating: el.vote_average ? el.vote_average.toFixed(1) : 'N/A', // Verifica se existe vote_average
year: type === 'movie' ? (el.release_date ? el.release_date.substr(0, 4) : "") : (el.first_air_date ? el.first_air_date.substr(0, 4) : ""),
type: type,
description: el.overview,
};
}
function getRpdbPoster(type, id, language, rpdbkey) {
const tier = rpdbkey.split("-")[0]
const lang = language.split("-")[0]
@@ -214,6 +231,7 @@ module.exports = {
parseCreatedBy,
parseConfig,
parsePoster,
parseMedia,
getRpdbPoster,
checkIfExists
};