mirror of
https://github.com/Viren070/tmdb-addon.git
synced 2025-12-01 23:18:11 +01:00
Add parseMedia function to parse catalogs
This commit is contained in:
+3
-28
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user