19 Commits

Author SHA1 Message Date
Blake Joynes
e723b2f8fa update const enums 2024-03-30 15:49:47 -04:00
Blake
3d3ec34fc5 Merge pull request #52 from blakejoy/bump-1.7.1
Update package.json
2024-03-11 21:05:00 -04:00
Blake
00709c1d28 Update package.json 2024-03-11 21:04:51 -04:00
Blake
9c14fb80fd Merge pull request #51 from blakejoy/v-1.7.0
Update package.json
2024-03-10 14:24:04 -04:00
Blake
c56ecbef47 Update package.json 2024-03-10 14:23:57 -04:00
Blake
876d2cac0f Merge pull request #49 from pypp/feat/undocumented-backdrop-size
Add w500 size to backdrop
2024-03-10 04:10:01 -04:00
Blake
9dae7144b2 Merge pull request #50 from pypp/feat/trending-page-options
Add pageOption to the trending endpoint
2024-03-10 04:09:51 -04:00
Netanel Henya
f99dbac1d2 feat: add pageOption to the trending endpoint 2024-02-23 11:36:05 +02:00
Netanel Henya
43f5d16dc3 feat: added w500 size to backdrop, this size is not in the officel documentation but it still exists 2024-02-23 08:16:29 +02:00
Blake
682cf48cb0 Merge pull request #48 from blakejoy/chore/add-error-res
Feat: Add error response.
2024-01-15 12:02:07 -05:00
Blake Joynes
1146ca8ad2 add error. linting 2024-01-15 11:59:48 -05:00
Blake
6a68e9973b Merge pull request #46 from blakejoy/chore/v1.6
Update package.json
2023-12-28 21:32:30 -05:00
Blake
ad2b27ca72 Update package.json 2023-12-28 21:32:20 -05:00
Blake
76f62210be Merge pull request #42 from jeremyVignelles/fix/39-language-options
[i18n]Fixed all implemented methods that should allow LanguageOptions to be passed
2023-12-28 21:31:20 -05:00
Jérémy VIGNELLES
101457cdd7 Moved interfaces as requested 2023-11-16 14:22:17 +01:00
Jérémy VIGNELLES
7d4b3fcb60 Added languages options for genres 2023-11-16 13:41:45 +01:00
Jérémy VIGNELLES
eb53747570 Fix a bad union type typing 2023-11-16 13:41:44 +01:00
Jérémy VIGNELLES
8c615edbfa Fixed language options on all supported entrypoints 2023-11-16 13:41:35 +01:00
Blake
1628ea05bd Merge pull request #44 from blakejoy/blakejoy-patch-2
Update patch version
2023-11-14 01:13:18 -05:00
18 changed files with 288 additions and 73 deletions

4
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "tmdb-ts",
"version": "1.5.0",
"version": "1.6.1",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "tmdb-ts",
"version": "1.5.0",
"version": "1.6.1",
"license": "MIT",
"dependencies": {
"cross-fetch": "^3.1.4"

View File

@@ -1,6 +1,6 @@
{
"name": "tmdb-ts",
"version": "1.5.1",
"version": "1.8.0",
"description": "TMDB v3 library wrapper",
"main": "dist/index.js",
"types": "dist/index.d.ts",

View File

@@ -1,5 +1,6 @@
import fetch from 'cross-fetch';
import { parseOptions } from './utils';
import { ErrorResponse } from './types';
const BASE_URL_V3 = 'https://api.themoviedb.org/3';
@@ -17,6 +18,11 @@ export class Api {
'Content-Type': 'application/json;charset=utf-8',
},
});
if (!response.ok) {
return Promise.reject((await response.json()) as ErrorResponse);
}
return (await response.json()) as T;
}
}

View File

@@ -1,4 +1,5 @@
import {
CollectionImageOptions,
DetailedCollection,
ImageCollection,
LanguageOption,
@@ -23,10 +24,17 @@ export class CollectionsEndpoint extends BaseEndpoint {
);
}
async images(id: number, options?: LanguageOption): Promise<ImageCollection> {
async images(
id: number,
options?: CollectionImageOptions
): Promise<ImageCollection> {
const computedOptions = {
include_image_language: options?.include_image_language?.join(','),
language: options?.language,
};
return await this.api.get<ImageCollection>(
`${BASE_COLLECTION}/${id}/images`,
options
computedOptions
);
}

View File

@@ -1,3 +1,4 @@
import { LanguageOption } from '../types';
import { BaseEndpoint } from './base';
export interface Genres {
@@ -9,11 +10,11 @@ export class GenreEndpoint extends BaseEndpoint {
super(accessToken);
}
async movies(): Promise<Genres> {
return await this.api.get<Genres>('/genre/movie/list');
async movies(options?: LanguageOption): Promise<Genres> {
return await this.api.get<Genres>('/genre/movie/list', options);
}
async tvShows(): Promise<Genres> {
return await this.api.get<Genres>('/genre/tv/list');
async tvShows(options?: LanguageOption): Promise<Genres> {
return await this.api.get<Genres>('/genre/tv/list', options);
}
}

View File

@@ -31,6 +31,13 @@ import {
const BASE_MOVIE = '/movie';
export interface MoviesImageSearchOptions extends LanguageOption {
/**
* a list of ISO-639-1 values to query
*/
include_image_language?: string[];
}
export class MoviesEndpoint extends BaseEndpoint {
constructor(protected readonly accessToken: string) {
super(accessToken);
@@ -38,12 +45,14 @@ export class MoviesEndpoint extends BaseEndpoint {
async details<T extends AppendToResponseMovieKey[] | undefined>(
id: number,
appendToResponse?: T
appendToResponse?: T,
language?: string
) {
const options = {
append_to_response: appendToResponse
? appendToResponse.join(',')
: undefined,
language: language,
};
return await this.api.get<AppendToResponse<MovieDetails, T, 'movie'>>(
@@ -68,16 +77,26 @@ export class MoviesEndpoint extends BaseEndpoint {
);
}
async credits(id: number): Promise<Credits> {
return await this.api.get<Credits>(`${BASE_MOVIE}/${id}/credits`);
async credits(id: number, options?: LanguageOption): Promise<Credits> {
return await this.api.get<Credits>(`${BASE_MOVIE}/${id}/credits`, options);
}
async externalIds(id: number): Promise<ExternalIds> {
return await this.api.get<ExternalIds>(`${BASE_MOVIE}/${id}/external_ids`);
}
async images(id: number): Promise<Images> {
return await this.api.get<Images>(`${BASE_MOVIE}/${id}/images`);
async images(
id: number,
options?: MoviesImageSearchOptions
): Promise<Images> {
const computedOptions = {
include_image_language: options?.include_image_language?.join(','),
language: options?.language,
};
return await this.api.get<Images>(
`${BASE_MOVIE}/${id}/images`,
computedOptions
);
}
async keywords(id: number): Promise<Keywords> {
@@ -86,14 +105,14 @@ export class MoviesEndpoint extends BaseEndpoint {
async lists(
id: number,
options?: LanguageOption | PageOption
options?: LanguageOption & PageOption
): Promise<MovieLists> {
return await this.api.get<MovieLists>(`${BASE_MOVIE}/${id}/lists`, options);
}
async recommendations(
id: number,
options?: PageOption
options?: LanguageOption & PageOption
): Promise<Recommendations> {
return await this.api.get<Recommendations>(
`${BASE_MOVIE}/${id}/recommendations`,
@@ -107,11 +126,17 @@ export class MoviesEndpoint extends BaseEndpoint {
);
}
async reviews(id: number, options?: PageOption): Promise<Reviews> {
async reviews(
id: number,
options?: LanguageOption & PageOption
): Promise<Reviews> {
return await this.api.get<Reviews>(`${BASE_MOVIE}/${id}/reviews`, options);
}
async similar(id: number, options?: PageOption): Promise<SimilarMovies> {
async similar(
id: number,
options?: LanguageOption & PageOption
): Promise<SimilarMovies> {
return await this.api.get<SimilarMovies>(
`${BASE_MOVIE}/${id}/similar`,
options
@@ -122,8 +147,8 @@ export class MoviesEndpoint extends BaseEndpoint {
return await this.api.get<Translations>(`${BASE_MOVIE}/${id}/translations`);
}
async videos(id: number): Promise<Videos> {
return await this.api.get<Videos>(`${BASE_MOVIE}/${id}/videos`);
async videos(id: number, options?: LanguageOption): Promise<Videos> {
return await this.api.get<Videos>(`${BASE_MOVIE}/${id}/videos`, options);
}
/**
@@ -149,7 +174,7 @@ export class MoviesEndpoint extends BaseEndpoint {
);
}
async popular(options?: PageOption): Promise<PopularMovies> {
async popular(options?: LanguageOption & PageOption): Promise<PopularMovies> {
return await this.api.get<PopularMovies>(`${BASE_MOVIE}/popular`, options);
}

View File

@@ -14,6 +14,7 @@ import {
TaggedImages,
Changes,
PersonChangeValue,
LanguageOption,
} from '../types';
import { BaseEndpoint } from './base';
@@ -26,12 +27,14 @@ export class PeopleEndpoint extends BaseEndpoint {
async details<T extends AppendToResponsePersonKey[] | undefined>(
id: number,
appendToResponse?: T
appendToResponse?: T,
language?: string
) {
const options = {
append_to_response: appendToResponse
? appendToResponse.join(',')
: undefined,
language: language,
};
return await this.api.get<AppendToResponse<PersonDetails, T, 'person'>>(
`${BASE_PERSON}/${id}`,
@@ -49,21 +52,33 @@ export class PeopleEndpoint extends BaseEndpoint {
);
}
async movieCredits(id: number): Promise<PersonMovieCredit> {
async movieCredits(
id: number,
options?: LanguageOption
): Promise<PersonMovieCredit> {
return await this.api.get<PersonMovieCredit>(
`${BASE_PERSON}/${id}/movie_credits`
`${BASE_PERSON}/${id}/movie_credits`,
options
);
}
async tvShowCredits(id: number): Promise<PersonTvShowCredit> {
async tvShowCredits(
id: number,
options?: LanguageOption
): Promise<PersonTvShowCredit> {
return await this.api.get<PersonTvShowCredit>(
`${BASE_PERSON}/${id}/tv_credits`
`${BASE_PERSON}/${id}/tv_credits`,
options
);
}
async combinedCredits(id: number): Promise<PersonCombinedCredits> {
async combinedCredits(
id: number,
options?: LanguageOption
): Promise<PersonCombinedCredits> {
return await this.api.get<PersonCombinedCredits>(
`${BASE_PERSON}/${id}/combined_credits`
`${BASE_PERSON}/${id}/combined_credits`,
options
);
}
@@ -92,7 +107,9 @@ export class PeopleEndpoint extends BaseEndpoint {
return await this.api.get<PersonDetails>(`${BASE_PERSON}/latest`);
}
async popular(options?: PageOption): Promise<PopularPersons> {
async popular(
options?: LanguageOption & PageOption
): Promise<PopularPersons> {
return await this.api.get<PopularPersons>(
`${BASE_PERSON}/popular`,
options

View File

@@ -1,6 +1,15 @@
import { BaseEndpoint } from './base';
import { MultiSearchResult, Search } from '../types/search';
import { Collection, Company, Movie, Person, TV } from '../types';
import {
Collection,
Company,
LanguageOption,
Movie,
PageOption,
Person,
RegionOption,
TV,
} from '../types';
const BASE_SEARCH = '/search';
@@ -9,22 +18,44 @@ export interface SearchOptions {
page?: number;
}
export interface MovieSearchOptions extends SearchOptions {
export interface MovieSearchOptions
extends SearchOptions,
LanguageOption,
PageOption,
RegionOption {
include_adult?: boolean;
year?: number;
primary_release_year?: number;
}
export interface TvSearchOptions extends SearchOptions {
export interface CollectionSearchOptions
extends SearchOptions,
LanguageOption,
PageOption,
RegionOption {
include_adult?: boolean;
}
export interface TvSearchOptions
extends SearchOptions,
LanguageOption,
PageOption {
include_adult?: boolean;
year?: number;
first_air_date_year?: number;
}
export interface PeopleSearchOptions extends SearchOptions {
export interface PeopleSearchOptions
extends SearchOptions,
LanguageOption,
PageOption {
include_adult?: boolean;
}
export interface MultiSearchOptions extends SearchOptions {
export interface MultiSearchOptions
extends SearchOptions,
LanguageOption,
PageOption {
include_adult?: boolean;
}

View File

@@ -1,4 +1,10 @@
import { TrendingMediaType, TimeWindow, TrendingResults } from '../types';
import {
TrendingMediaType,
TimeWindow,
TrendingResults,
LanguageOption,
PageOption,
} from '../types';
import { BaseEndpoint } from './base';
export class TrendingEndpoint extends BaseEndpoint {
@@ -8,10 +14,12 @@ export class TrendingEndpoint extends BaseEndpoint {
async trending<T extends TrendingMediaType>(
mediaType: T,
timeWindow: TimeWindow
timeWindow: TimeWindow,
options?: LanguageOption & PageOption
): Promise<TrendingResults<T>> {
return await this.api.get<TrendingResults<T>>(
`/trending/${mediaType}/${timeWindow}`
`/trending/${mediaType}/${timeWindow}`,
options
);
}
}

View File

@@ -8,7 +8,6 @@ import {
Images,
TvEpisodeTranslations,
Videos,
AppendToResponseMovieKey,
AppendToResponse,
Changes,
TvEpisodeChangeValue,
@@ -20,6 +19,20 @@ const BASE_EPISODE = (episodeSelection: EpisodeSelection): string => {
return `/tv/${episodeSelection.tvShowID}/season/${episodeSelection.seasonNumber}/episode/${episodeSelection.episodeNumber}`;
};
export interface TvEpisodeImageSearchOptions extends LanguageOption {
/**
* a list of ISO-639-1 values to query
*/
include_image_language?: string[];
}
export interface TvEpisodeVideoSearchOptions extends LanguageOption {
/**
* a list of ISO-639-1 values to query
*/
include_video_language?: string[];
}
export class TvEpisodesEndpoint extends BaseEndpoint {
constructor(accessToken: string) {
super(accessToken);
@@ -62,9 +75,17 @@ export class TvEpisodesEndpoint extends BaseEndpoint {
);
}
async images(episodeSelection: EpisodeSelection) {
async images(
episodeSelection: EpisodeSelection,
options?: TvEpisodeImageSearchOptions
) {
const computedOptions = {
include_image_language: options?.include_image_language?.join(','),
language: options?.language,
};
return await this.api.get<Images>(
`${BASE_EPISODE(episodeSelection)}/images`
`${BASE_EPISODE(episodeSelection)}/images`,
computedOptions
);
}
@@ -74,10 +95,17 @@ export class TvEpisodesEndpoint extends BaseEndpoint {
);
}
async videos(episodeSelection: EpisodeSelection, options?: LanguageOption) {
async videos(
episodeSelection: EpisodeSelection,
options?: TvEpisodeVideoSearchOptions
) {
const computedOptions = {
include_video_language: options?.include_video_language?.join(','),
language: options?.language,
};
return await this.api.get<Videos>(
`${BASE_EPISODE(episodeSelection)}/videos`,
options
computedOptions
);
}
}

View File

@@ -20,6 +20,20 @@ const BASE_SEASON = (seasonSelection: SeasonSelection): string => {
return `/tv/${seasonSelection.tvShowID}/season/${seasonSelection.seasonNumber}`;
};
export interface TvSeasonImageSearchOptions extends LanguageOption {
/**
* a list of ISO-639-1 values to query
*/
include_image_language?: string[];
}
export interface TvSeasonVideoSearchOptions extends LanguageOption {
/**
* a list of ISO-639-1 values to query
*/
include_video_language?: string[];
}
export class TvSeasonsEndpoint extends BaseEndpoint {
constructor(accessToken: string) {
super(accessToken);
@@ -77,17 +91,31 @@ export class TvSeasonsEndpoint extends BaseEndpoint {
);
}
async images(seasonSelection: SeasonSelection, options?: LanguageOption) {
async images(
seasonSelection: SeasonSelection,
options?: TvSeasonImageSearchOptions
) {
const computedOptions = {
include_image_language: options?.include_image_language?.join(','),
language: options?.language,
};
return await this.api.get<Images>(
`${BASE_SEASON(seasonSelection)}/images`,
options
computedOptions
);
}
async videos(seasonSelection: SeasonSelection, options?: LanguageOption) {
async videos(
seasonSelection: SeasonSelection,
options?: TvSeasonVideoSearchOptions
) {
const computedOptions = {
include_video_language: options?.include_video_language?.join(','),
language: options?.language,
};
return await this.api.get<Videos>(
`${BASE_SEASON(seasonSelection)}/videos`,
options
computedOptions
);
}

View File

@@ -18,13 +18,15 @@ import {
PageOption,
PopularTvShows,
Recommendations,
RegionOption,
Reviews,
ScreenedTheatrically,
SeasonDetails,
SimilarTvShows,
TimezoneOption,
TopRatedTvShows,
Translations,
TvShowImageOptions,
TvShowVideoOptions,
TvShowChangeValue,
TvShowDetails,
TvShowsAiringToday,
@@ -41,12 +43,14 @@ export class TvShowsEndpoint extends BaseEndpoint {
async details<T extends AppendToResponseTvKey[] | undefined>(
id: number,
appendToResponse?: T
appendToResponse?: T,
language?: string
) {
const options = {
append_to_response: appendToResponse
? appendToResponse.join(',')
: undefined,
language: language,
};
return await this.api.get<AppendToResponse<TvShowDetails, T, 'tvShow'>>(
`${BASE_TV}/${id}`,
@@ -76,14 +80,18 @@ export class TvShowsEndpoint extends BaseEndpoint {
);
}
async aggregateCredits(id: number): Promise<AggregateCredits> {
async aggregateCredits(
id: number,
options?: LanguageOption
): Promise<AggregateCredits> {
return await this.api.get<AggregateCredits>(
`${BASE_TV}/${id}/aggregate_credits`
`${BASE_TV}/${id}/aggregate_credits`,
options
);
}
async credits(id: number): Promise<Credits> {
return await this.api.get<Credits>(`${BASE_TV}/${id}/credits`);
async credits(id: number, options?: LanguageOption): Promise<Credits> {
return await this.api.get<Credits>(`${BASE_TV}/${id}/credits`, options);
}
async season(tvId: number, seasonNumber: number): Promise<SeasonDetails> {
@@ -100,8 +108,15 @@ export class TvShowsEndpoint extends BaseEndpoint {
return await this.api.get<ExternalIds>(`${BASE_TV}/${id}/external_ids`);
}
async images(id: number): Promise<Images> {
return await this.api.get<Images>(`${BASE_TV}/${id}/images`);
async images(id: number, options?: TvShowImageOptions): Promise<Images> {
const computedOptions = {
include_image_language: options?.include_image_language?.join(','),
language: options?.language,
};
return await this.api.get<Images>(
`${BASE_TV}/${id}/images`,
computedOptions
);
}
async keywords(id: number): Promise<Keywords> {
@@ -110,7 +125,7 @@ export class TvShowsEndpoint extends BaseEndpoint {
async recommendations(
id: number,
options?: PageOption
options?: LanguageOption & PageOption
): Promise<Recommendations> {
return await this.api.get<Recommendations>(
`${BASE_TV}/${id}/recommendations`,
@@ -118,7 +133,10 @@ export class TvShowsEndpoint extends BaseEndpoint {
);
}
async reviews(id: number, options?: PageOption): Promise<Reviews> {
async reviews(
id: number,
options?: LanguageOption & PageOption
): Promise<Reviews> {
return await this.api.get<Reviews>(`${BASE_TV}/${id}/reviews`, options);
}
@@ -128,7 +146,10 @@ export class TvShowsEndpoint extends BaseEndpoint {
);
}
async similar(id: number, options?: PageOption): Promise<SimilarTvShows> {
async similar(
id: number,
options?: LanguageOption & PageOption
): Promise<SimilarTvShows> {
return await this.api.get<SimilarTvShows>(
`${BASE_TV}/${id}/similar`,
options
@@ -139,8 +160,15 @@ export class TvShowsEndpoint extends BaseEndpoint {
return await this.api.get<Translations>(`${BASE_TV}/${id}/translations`);
}
async videos(id: number): Promise<Videos> {
return await this.api.get<Videos>(`${BASE_TV}/${id}/videos`);
async videos(id: number, options?: TvShowVideoOptions): Promise<Videos> {
const computedOptions = {
include_video_language: options?.include_video_language?.join(','),
language: options?.language,
};
return await this.api.get<Videos>(
`${BASE_TV}/${id}/videos`,
computedOptions
);
}
/**
@@ -157,12 +185,14 @@ export class TvShowsEndpoint extends BaseEndpoint {
return await this.api.get<LatestTvShows>(`${BASE_TV}/latest`);
}
async onTheAir(): Promise<OnTheAir> {
return await this.api.get<OnTheAir>(`${BASE_TV}/on_the_air`);
async onTheAir(
options?: PageOption & LanguageOption & TimezoneOption
): Promise<OnTheAir> {
return await this.api.get<OnTheAir>(`${BASE_TV}/on_the_air`, options);
}
async airingToday(
options?: PageOption & LanguageOption & RegionOption
options?: PageOption & LanguageOption & TimezoneOption
): Promise<TvShowsAiringToday> {
return await this.api.get<TvShowsAiringToday>(
`${BASE_TV}/airing_today`,
@@ -171,13 +201,13 @@ export class TvShowsEndpoint extends BaseEndpoint {
}
async popular(
options?: PageOption & LanguageOption & RegionOption
options?: PageOption & LanguageOption
): Promise<PopularTvShows> {
return await this.api.get<PopularTvShows>(`${BASE_TV}/popular`, options);
}
async topRated(
options?: PageOption & LanguageOption & RegionOption
options?: PageOption & LanguageOption
): Promise<TopRatedTvShows> {
return await this.api.get<TopRatedTvShows>(`${BASE_TV}/top_rated`, options);
}

View File

@@ -1,4 +1,4 @@
import { Movie } from '.';
import { LanguageOption, Movie } from '.';
export interface Collection {
id: number;
@@ -14,3 +14,10 @@ export interface Collection {
export interface DetailedCollection extends Collection {
parts: Movie[];
}
export interface CollectionImageOptions extends LanguageOption {
/**
* a list of ISO-639-1 values to query
*/
include_image_language?: string[];
}

View File

@@ -13,14 +13,15 @@ export interface Configuration {
change_keys: ChangeKeys[];
}
export const enum BackdropSizes {
export enum BackdropSizes {
W300 = 'w300',
W500 = 'w500',
W780 = 'w780',
W1280 = 'w1280',
ORIGINAL = 'original',
}
export const enum LogoSizes {
export enum LogoSizes {
W45 = 'w45',
W92 = 'w92',
W154 = 'w154',
@@ -30,7 +31,7 @@ export const enum LogoSizes {
ORIGINAL = 'original',
}
export const enum PosterSizes {
export enum PosterSizes {
W92 = 'w92',
W154 = 'w154',
W185 = 'w185',
@@ -40,21 +41,21 @@ export const enum PosterSizes {
ORIGINAL = 'original',
}
export const enum ProfileSizes {
export enum ProfileSizes {
W45 = 'w45',
W185 = 'w185',
W632 = 'w632',
ORIGINAL = 'original',
}
export const enum StillSizes {
export enum StillSizes {
W92 = 'w92',
W185 = 'w185',
W300 = 'w300',
ORIGINAL = 'original',
}
export const enum ChangeKeys {
export enum ChangeKeys {
ADULT = 'adult',
AIR_DATE = 'air_date',
ALSO_KNOWN_AS = 'also_known_as',

View File

@@ -19,6 +19,12 @@ export * from './collections';
export * from './tv-episode';
export * from './tv-seasons';
export interface ErrorResponse {
status_code: number;
status_message: string;
success: boolean;
}
export type MediaType = 'movie' | 'tv' | 'person';
export interface AuthorDetails {

View File

@@ -1,6 +1,7 @@
import { Movie } from '.';
import { PageOption } from './options';
export interface KeywordsOptions {
export interface KeywordsOptions extends PageOption {
include_adult?: boolean;
language?: string;
}

View File

@@ -40,6 +40,10 @@ export interface RegionOption {
region?: string;
}
export interface TimezoneOption {
timezone?: string;
}
export interface PageOption {
page?: number;
}

View File

@@ -3,7 +3,7 @@ import {
ProductionCompany,
ProductionCountry,
SpokenLanguage,
Episode,
LanguageOption,
} from './';
export interface CreatedBy {
@@ -274,3 +274,17 @@ export interface TvShowChangeValue {
season_id: number;
season_number: number;
}
export interface TvShowImageOptions extends LanguageOption {
/**
* a list of ISO-639-1 values to query
*/
include_image_language?: string[];
}
export interface TvShowVideoOptions extends LanguageOption {
/**
* a list of ISO-639-1 values to query
*/
include_video_language?: string[];
}