diff --git a/lib/getCatalog.js b/lib/getCatalog.js index 6349fb1..2596d4f 100644 --- a/lib/getCatalog.js +++ b/lib/getCatalog.js @@ -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); diff --git a/lib/getSearch.js b/lib/getSearch.js index b2447f6..fc6235c 100644 --- a/lib/getSearch.js +++ b/lib/getSearch.js @@ -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); } diff --git a/lib/getTrending.js b/lib/getTrending.js index 6966254..e0b191f 100644 --- a/lib/getTrending.js +++ b/lib/getTrending.js @@ -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); diff --git a/utils/parseProps.js b/utils/parseProps.js index 1f4ffa5..ee1dd63 100644 --- a/utils/parseProps.js +++ b/utils/parseProps.js @@ -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 };