Compare commits

...

1 Commits

Author SHA1 Message Date
a17f885
74b6d793a3 rebased on latest development branch 2025-03-16 11:58:11 +01:00

View File

@@ -1,5 +1,6 @@
import ExternalAPI from '@server/api/externalapi'; import ExternalAPI from '@server/api/externalapi';
import cacheManager from '@server/lib/cache'; import cacheManager from '@server/lib/cache';
import { getSettings } from '@server/lib/settings';
import { sortBy } from 'lodash'; import { sortBy } from 'lodash';
import type { import type {
TmdbCollection, TmdbCollection,
@@ -99,6 +100,7 @@ interface DiscoverTvOptions {
} }
class TheMovieDb extends ExternalAPI { class TheMovieDb extends ExternalAPI {
private locale: string;
private discoverRegion?: string; private discoverRegion?: string;
private originalLanguage?: string; private originalLanguage?: string;
constructor({ constructor({
@@ -118,6 +120,7 @@ class TheMovieDb extends ExternalAPI {
}, },
} }
); );
this.locale = getSettings().main?.locale || 'en';
this.discoverRegion = discoverRegion; this.discoverRegion = discoverRegion;
this.originalLanguage = originalLanguage; this.originalLanguage = originalLanguage;
} }
@@ -126,7 +129,7 @@ class TheMovieDb extends ExternalAPI {
query, query,
page = 1, page = 1,
includeAdult = false, includeAdult = false,
language = 'en', language = this.locale,
}: SearchOptions): Promise<TmdbSearchMultiResponse> => { }: SearchOptions): Promise<TmdbSearchMultiResponse> => {
try { try {
const data = await this.get<TmdbSearchMultiResponse>('/search/multi', { const data = await this.get<TmdbSearchMultiResponse>('/search/multi', {
@@ -151,7 +154,7 @@ class TheMovieDb extends ExternalAPI {
query, query,
page = 1, page = 1,
includeAdult = false, includeAdult = false,
language = 'en', language = this.locale,
year, year,
}: SingleSearchOptions): Promise<TmdbSearchMovieResponse> => { }: SingleSearchOptions): Promise<TmdbSearchMovieResponse> => {
try { try {
@@ -178,7 +181,7 @@ class TheMovieDb extends ExternalAPI {
query, query,
page = 1, page = 1,
includeAdult = false, includeAdult = false,
language = 'en', language = this.locale,
year, year,
}: SingleSearchOptions): Promise<TmdbSearchTvResponse> => { }: SingleSearchOptions): Promise<TmdbSearchTvResponse> => {
try { try {
@@ -203,7 +206,7 @@ class TheMovieDb extends ExternalAPI {
public getPerson = async ({ public getPerson = async ({
personId, personId,
language = 'en', language = this.locale,
}: { }: {
personId: number; personId: number;
language?: string; language?: string;
@@ -221,7 +224,7 @@ class TheMovieDb extends ExternalAPI {
public getPersonCombinedCredits = async ({ public getPersonCombinedCredits = async ({
personId, personId,
language = 'en', language = this.locale,
}: { }: {
personId: number; personId: number;
language?: string; language?: string;
@@ -244,7 +247,7 @@ class TheMovieDb extends ExternalAPI {
public getMovie = async ({ public getMovie = async ({
movieId, movieId,
language = 'en', language = this.locale,
}: { }: {
movieId: number; movieId: number;
language?: string; language?: string;
@@ -269,7 +272,7 @@ class TheMovieDb extends ExternalAPI {
public getTvShow = async ({ public getTvShow = async ({
tvId, tvId,
language = 'en', language = this.locale,
}: { }: {
tvId: number; tvId: number;
language?: string; language?: string;
@@ -319,7 +322,7 @@ class TheMovieDb extends ExternalAPI {
public async getMovieRecommendations({ public async getMovieRecommendations({
movieId, movieId,
page = 1, page = 1,
language = 'en', language = this.locale,
}: { }: {
movieId: number; movieId: number;
page?: number; page?: number;
@@ -343,7 +346,7 @@ class TheMovieDb extends ExternalAPI {
public async getMovieSimilar({ public async getMovieSimilar({
movieId, movieId,
page = 1, page = 1,
language = 'en', language = this.locale,
}: { }: {
movieId: number; movieId: number;
page?: number; page?: number;
@@ -367,7 +370,7 @@ class TheMovieDb extends ExternalAPI {
public async getMoviesByKeyword({ public async getMoviesByKeyword({
keywordId, keywordId,
page = 1, page = 1,
language = 'en', language = this.locale,
}: { }: {
keywordId: number; keywordId: number;
page?: number; page?: number;
@@ -391,7 +394,7 @@ class TheMovieDb extends ExternalAPI {
public async getTvRecommendations({ public async getTvRecommendations({
tvId, tvId,
page = 1, page = 1,
language = 'en', language = this.locale,
}: { }: {
tvId: number; tvId: number;
page?: number; page?: number;
@@ -417,7 +420,7 @@ class TheMovieDb extends ExternalAPI {
public async getTvSimilar({ public async getTvSimilar({
tvId, tvId,
page = 1, page = 1,
language = 'en', language = this.locale,
}: { }: {
tvId: number; tvId: number;
page?: number; page?: number;
@@ -439,7 +442,7 @@ class TheMovieDb extends ExternalAPI {
sortBy = 'popularity.desc', sortBy = 'popularity.desc',
page = 1, page = 1,
includeAdult = false, includeAdult = false,
language = 'en', language = this.locale,
primaryReleaseDateGte, primaryReleaseDateGte,
primaryReleaseDateLte, primaryReleaseDateLte,
originalLanguage, originalLanguage,
@@ -510,7 +513,7 @@ class TheMovieDb extends ExternalAPI {
public getDiscoverTv = async ({ public getDiscoverTv = async ({
sortBy = 'popularity.desc', sortBy = 'popularity.desc',
page = 1, page = 1,
language = 'en', language = this.locale,
firstAirDateGte, firstAirDateGte,
firstAirDateLte, firstAirDateLte,
includeEmptyReleaseDate = false, includeEmptyReleaseDate = false,
@@ -585,7 +588,7 @@ class TheMovieDb extends ExternalAPI {
public getUpcomingMovies = async ({ public getUpcomingMovies = async ({
page = 1, page = 1,
language = 'en', language = this.locale,
}: { }: {
page: number; page: number;
language: string; language: string;
@@ -610,7 +613,7 @@ class TheMovieDb extends ExternalAPI {
public getAllTrending = async ({ public getAllTrending = async ({
page = 1, page = 1,
timeWindow = 'day', timeWindow = 'day',
language = 'en', language = this.locale,
}: { }: {
page?: number; page?: number;
timeWindow?: 'day' | 'week'; timeWindow?: 'day' | 'week';
@@ -677,7 +680,7 @@ class TheMovieDb extends ExternalAPI {
public async getByExternalId({ public async getByExternalId({
externalId, externalId,
type, type,
language = 'en', language = this.locale,
}: }:
| { | {
externalId: string; externalId: string;
@@ -706,7 +709,7 @@ class TheMovieDb extends ExternalAPI {
public async getMediaByImdbId({ public async getMediaByImdbId({
imdbId, imdbId,
language = 'en', language = this.locale,
}: { }: {
imdbId: string; imdbId: string;
language?: string; language?: string;
@@ -745,7 +748,7 @@ class TheMovieDb extends ExternalAPI {
public async getShowByTvdbId({ public async getShowByTvdbId({
tvdbId, tvdbId,
language = 'en', language = this.locale,
}: { }: {
tvdbId: number; tvdbId: number;
language?: string; language?: string;
@@ -775,7 +778,7 @@ class TheMovieDb extends ExternalAPI {
public async getCollection({ public async getCollection({
collectionId, collectionId,
language = 'en', language = this.locale,
}: { }: {
collectionId: number; collectionId: number;
language?: string; language?: string;
@@ -849,7 +852,7 @@ class TheMovieDb extends ExternalAPI {
} }
public async getMovieGenres({ public async getMovieGenres({
language = 'en', language = this.locale,
}: { }: {
language?: string; language?: string;
} = {}): Promise<TmdbGenre[]> { } = {}): Promise<TmdbGenre[]> {
@@ -896,7 +899,7 @@ class TheMovieDb extends ExternalAPI {
} }
public async getTvGenres({ public async getTvGenres({
language = 'en', language = this.locale,
}: { }: {
language?: string; language?: string;
} = {}): Promise<TmdbGenre[]> { } = {}): Promise<TmdbGenre[]> {