mirror of
https://github.com/Viren070/tmdb-addon.git
synced 2025-12-01 23:18:11 +01:00
feat: allow to configure to always return IMDb ID instead of TMDB ID
This commit is contained in:
@@ -119,6 +119,7 @@ async function getManifest(config) {
|
||||
const language = config.language || DEFAULT_LANGUAGE;
|
||||
const tmdbPrefix = config.tmdbPrefix === "true";
|
||||
const provideImdbId = config.provideImdbId === "true";
|
||||
const returnImdbId = config.returnImdbId === "true";
|
||||
const sessionId = config.sessionId;
|
||||
const userCatalogs = config.catalogs || getDefaultCatalogs();
|
||||
const translatedCatalogs = loadTranslations(language);
|
||||
@@ -210,7 +211,7 @@ async function getManifest(config) {
|
||||
`Language: ${language}`,
|
||||
`TMDB Account: ${sessionId ? 'Connected' : 'Not Connected'}`,
|
||||
`MDBList Integration: ${config.mdblistkey ? 'Connected' : 'Not Connected'}`,
|
||||
`IMDb Integration: ${provideImdbId ? 'Enabled' : 'Disabled'}`,
|
||||
`IMDb Integration: ${provideImdbId || returnImdbId ? 'Enabled' : 'Disabled'}`,
|
||||
`RPDB Integration: ${config.rpdbkey ? 'Enabled' : 'Disabled'}`,
|
||||
`Search: ${config.searchEnabled !== "false" ? 'Enabled' : 'Disabled'}`,
|
||||
`Active Catalogs: ${catalogs.length}`
|
||||
@@ -226,7 +227,7 @@ async function getManifest(config) {
|
||||
description: "Stremio addon that provides rich metadata for movies and TV shows from TMDB, featuring customizable catalogs, multi-language support, favorites lists, watchlist, ratings, and IMDb integration. Current settings: " + activeConfigs,
|
||||
resources: ["catalog", "meta"],
|
||||
types: ["movie", "series"],
|
||||
idPrefixes: provideImdbId ? ["tmdb:", "tt"] : ["tmdb:"],
|
||||
idPrefixes: provideImdbId || returnImdbId ? ["tmdb:", "tt"] : ["tmdb:"],
|
||||
stremioAddonsConfig,
|
||||
behaviorHints: {
|
||||
configurable: true,
|
||||
|
||||
@@ -64,6 +64,7 @@ const buildMovieResponse = async (res, type, language, tmdbId, rpdbkey, config =
|
||||
|
||||
const imdbRating = imdbRatingRaw || res.vote_average?.toFixed(1) || "N/A";
|
||||
const castCount = config.castCount !== undefined ? Math.max(1, Math.min(5, Number(config.castCount))) : 5;
|
||||
const returnImdbId = config.returnImdbId === true || config.returnImdbId === "true";
|
||||
const hideInCinemaTag = config.hideInCinemaTag === true || config.hideInCinemaTag === "true";
|
||||
|
||||
const response = {
|
||||
@@ -83,7 +84,7 @@ const buildMovieResponse = async (res, type, language, tmdbId, rpdbkey, config =
|
||||
background: `https://image.tmdb.org/t/p/original${res.backdrop_path}`,
|
||||
poster,
|
||||
runtime: Utils.parseRunTime(res.runtime),
|
||||
id: `tmdb:${tmdbId}`,
|
||||
id: returnImdbId ? res.imdb_id : `tmdb:${tmdbId}`,
|
||||
genres: Utils.parseGenres(res.genres),
|
||||
releaseInfo: res.release_date ? res.release_date.substr(0, 4) : "",
|
||||
trailerStreams: Utils.parseTrailerStream(res.videos),
|
||||
@@ -130,6 +131,7 @@ const buildTvResponse = async (res, type, language, tmdbId, rpdbkey, config = {}
|
||||
|
||||
const imdbRating = imdbRatingRaw || res.vote_average?.toFixed(1) || "N/A";
|
||||
const castCount = config.castCount !== undefined ? Math.max(1, Math.min(5, Number(config.castCount))) : 5;
|
||||
const returnImdbId = config.returnImdbId === true || config.returnImdbId === "true";
|
||||
const hideInCinemaTag = config.hideInCinemaTag === true || config.hideInCinemaTag === "true";
|
||||
|
||||
const response = {
|
||||
@@ -148,7 +150,7 @@ const buildTvResponse = async (res, type, language, tmdbId, rpdbkey, config = {}
|
||||
year: Utils.parseYear(res.status, res.first_air_date, res.last_air_date),
|
||||
background: `https://image.tmdb.org/t/p/original${res.backdrop_path}`,
|
||||
slug: Utils.parseSlug(type, res.name, res.external_ids.imdb_id),
|
||||
id: `tmdb:${tmdbId}`,
|
||||
id: returnImdbId ? res.imdb_id : `tmdb:${tmdbId}`,
|
||||
genres: Utils.parseGenres(res.genres),
|
||||
releaseInfo: Utils.parseYear(res.status, res.first_air_date, res.last_air_date),
|
||||
videos: episodes || [],
|
||||
|
||||
@@ -19,6 +19,7 @@ export function ConfigProvider({ children }: { children: React.ReactNode }) {
|
||||
const [mdblistkey, setMdblistkey] = useState("");
|
||||
const [includeAdult, setIncludeAdult] = useState(false);
|
||||
const [provideImdbId, setProvideImdbId] = useState(false);
|
||||
const [returnImdbId, setReturnImdbId] = useState(false);
|
||||
const [tmdbPrefix, setTmdbPrefix] = useState(false);
|
||||
const [hideEpisodeThumbnails, setHideEpisodeThumbnails] = useState(false);
|
||||
const [language, setLanguage] = useState("en-US");
|
||||
@@ -49,6 +50,7 @@ export function ConfigProvider({ children }: { children: React.ReactNode }) {
|
||||
if (config.mdblistkey) setMdblistkey(config.mdblistkey);
|
||||
if (config.geminikey) setGeminiKey(config.geminikey);
|
||||
if (config.provideImdbId) setProvideImdbId(config.provideImdbId === "true");
|
||||
if (config.returnImdbId) setReturnImdbId(config.returnImdbId === "true");
|
||||
if (config.tmdbPrefix) setTmdbPrefix(config.tmdbPrefix === "true");
|
||||
if (config.hideEpisodeThumbnails) setHideEpisodeThumbnails(config.hideEpisodeThumbnails === "true");
|
||||
if (config.sessionId) setSessionId(config.sessionId);
|
||||
@@ -106,6 +108,7 @@ export function ConfigProvider({ children }: { children: React.ReactNode }) {
|
||||
mdblistkey,
|
||||
includeAdult,
|
||||
provideImdbId,
|
||||
returnImdbId,
|
||||
tmdbPrefix,
|
||||
hideEpisodeThumbnails,
|
||||
language,
|
||||
@@ -121,6 +124,7 @@ export function ConfigProvider({ children }: { children: React.ReactNode }) {
|
||||
setMdblistkey,
|
||||
setIncludeAdult,
|
||||
setProvideImdbId,
|
||||
setReturnImdbId,
|
||||
setTmdbPrefix,
|
||||
setHideEpisodeThumbnails,
|
||||
setLanguage,
|
||||
|
||||
@@ -14,6 +14,7 @@ export type ConfigContextType = {
|
||||
mdblistkey: string;
|
||||
includeAdult: boolean;
|
||||
provideImdbId: boolean;
|
||||
returnImdbId: boolean;
|
||||
tmdbPrefix: boolean;
|
||||
hideEpisodeThumbnails: boolean;
|
||||
language: string;
|
||||
@@ -29,6 +30,7 @@ export type ConfigContextType = {
|
||||
setMdblistkey: (mdblistkey: string) => void;
|
||||
setIncludeAdult: (includeAdult: boolean) => void;
|
||||
setProvideImdbId: (provideImdbId: boolean) => void;
|
||||
setReturnImdbId: (returnImdbId: boolean) => void;
|
||||
setTmdbPrefix: (tmdbPrefix: boolean) => void;
|
||||
setHideEpisodeThumbnails: (hideEpisodeThumbnails: boolean) => void;
|
||||
setLanguage: (language: string) => void;
|
||||
|
||||
@@ -40,6 +40,7 @@ export function generateAddonUrl(config: AddonConfig): string {
|
||||
})),
|
||||
includeAdult: config.includeAdult === true ? "true" : undefined,
|
||||
provideImdbId: config.provideImdbId === true ? "true" : undefined,
|
||||
returnImdbId: config.returnImdbId === true ? "true" : undefined,
|
||||
tmdbPrefix: config.tmdbPrefix === true ? "true" : undefined,
|
||||
hideEpisodeThumbnails: config.hideEpisodeThumbnails === true ? "true" : undefined,
|
||||
searchEnabled: config.searchEnabled === false ? "false" : undefined,
|
||||
|
||||
@@ -8,6 +8,7 @@ const Others = () => {
|
||||
const { hideEpisodeThumbnails, setHideEpisodeThumbnails } = useConfig();
|
||||
const { includeAdult, setIncludeAdult } = useConfig();
|
||||
const { provideImdbId, setProvideImdbId } = useConfig();
|
||||
const { returnImdbId, setReturnImdbId } = useConfig();
|
||||
const { tmdbPrefix, setTmdbPrefix } = useConfig();
|
||||
const { hideInCinemaTag, setHideInCinemaTag } = useConfig();
|
||||
const { castCount, setCastCount } = useConfig();
|
||||
@@ -43,15 +44,26 @@ const Others = () => {
|
||||
<Card className="flex flex-row items-center justify-between p-4 sm:p-6 hover:shadow-lg transition-shadow cursor-pointer">
|
||||
<div className="space-y-0.5">
|
||||
<h1 className="text-sm font-semibold mb-1">
|
||||
Provide IMDB metadata
|
||||
Provide IMDb metadata
|
||||
</h1>
|
||||
<p className="text-gray-500 text-sm">
|
||||
Include IMDB IDs in metadata for better integration with other
|
||||
Include items with IMDb IDs when handling metadata requests for better integration with other
|
||||
addons.
|
||||
</p>
|
||||
</div>
|
||||
<Switch checked={provideImdbId} onCheckedChange={() => setProvideImdbId(!provideImdbId)} />
|
||||
</Card>
|
||||
<Card className="flex flex-row items-center justify-between p-4 sm:p-6 hover:shadow-lg transition-shadow cursor-pointer">
|
||||
<div className="space-y-0.5">
|
||||
<h1 className="text-sm font-semibold mb-1">
|
||||
Return IMDb ID
|
||||
</h1>
|
||||
<p className="text-gray-500 text-sm">
|
||||
Return only items with IMDb IDs in catalogues for better integration with other addons.
|
||||
</p>
|
||||
</div>
|
||||
<Switch checked={returnImdbId} onCheckedChange={() => setReturnImdbId(!returnImdbId)} />
|
||||
</Card>
|
||||
<Card className="flex flex-row items-center justify-between p-4 sm:p-6 hover:shadow-lg transition-shadow cursor-pointer">
|
||||
<div className="space-y-0.5">
|
||||
<h1 className="text-sm font-semibold mb-1">Use TMDB prefix</h1>
|
||||
|
||||
Reference in New Issue
Block a user