From 02a1c8508192bf1d3d24544a8fa37f94935c7381 Mon Sep 17 00:00:00 2001 From: DerPenz Date: Wed, 22 Feb 2023 17:27:32 +0100 Subject: [PATCH 1/6] added review endpoint and types --- src/endpoints/index.ts | 1 + src/endpoints/review.ts | 12 ++++++++++++ src/types/index.ts | 1 + src/types/review.ts | 8 ++++++++ 4 files changed, 22 insertions(+) create mode 100644 src/endpoints/review.ts create mode 100644 src/types/review.ts diff --git a/src/endpoints/index.ts b/src/endpoints/index.ts index e40522e..ccab30d 100644 --- a/src/endpoints/index.ts +++ b/src/endpoints/index.ts @@ -11,4 +11,5 @@ export * from './configuration'; export * from './tv-shows'; export * from './discover'; export * from './people'; +export * from './review'; diff --git a/src/endpoints/review.ts b/src/endpoints/review.ts new file mode 100644 index 0000000..35925b7 --- /dev/null +++ b/src/endpoints/review.ts @@ -0,0 +1,12 @@ +import { ReviewDetails } from '../types'; +import { BaseEndpoint } from './base'; + +export class ReviewEndpoint extends BaseEndpoint { + constructor(accessToken: string) { + super(accessToken); + } + + async details(id: string): Promise { + return await this.api.get(`/review/${id}`); + } +} diff --git a/src/types/index.ts b/src/types/index.ts index 0cd84cb..856e318 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -8,6 +8,7 @@ export * from './tv-shows'; export * from './watch-providers'; export * from './people'; export * from './discover'; +export * from './review'; export interface AuthorDetails { name: string; diff --git a/src/types/review.ts b/src/types/review.ts new file mode 100644 index 0000000..dfd92c9 --- /dev/null +++ b/src/types/review.ts @@ -0,0 +1,8 @@ +import { Review } from './'; + +export interface ReviewDetails extends Review{ + iso_639_1: string; + media_id: number; + media_title: number; + media_type: number; +} \ No newline at end of file From 3c31ab33748f68ccbc7d2c99f0d20b69d53ab239 Mon Sep 17 00:00:00 2001 From: DerPenz Date: Wed, 22 Feb 2023 17:27:47 +0100 Subject: [PATCH 2/6] Integrated review endpoint with main TMDB class --- src/tmdb.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/tmdb.ts b/src/tmdb.ts index 599ef1a..13882e6 100644 --- a/src/tmdb.ts +++ b/src/tmdb.ts @@ -10,6 +10,7 @@ import { ConfigurationEndpoint, DiscoverEndpoint, PeopleEndpoint, + ReviewEndpoint, } from './endpoints'; export default class TMDB { @@ -62,4 +63,8 @@ export default class TMDB { get people(): PeopleEndpoint{ return new PeopleEndpoint(this.accessToken); } + + get review(): ReviewEndpoint{ + return new ReviewEndpoint(this.accessToken); + } } From c45e74db135b611be4be1b9c9613065cd17f7e55 Mon Sep 17 00:00:00 2001 From: DerPenz Date: Thu, 23 Feb 2023 18:03:38 +0100 Subject: [PATCH 3/6] added trending endpoint and types --- src/endpoints/index.ts | 1 + src/endpoints/trending.ts | 14 ++++++++++++++ src/types/index.ts | 1 + src/types/trending.ts | 19 +++++++++++++++++++ 4 files changed, 35 insertions(+) create mode 100644 src/endpoints/trending.ts create mode 100644 src/types/trending.ts diff --git a/src/endpoints/index.ts b/src/endpoints/index.ts index ccab30d..d100360 100644 --- a/src/endpoints/index.ts +++ b/src/endpoints/index.ts @@ -12,4 +12,5 @@ export * from './tv-shows'; export * from './discover'; export * from './people'; export * from './review'; +export * from './trending'; diff --git a/src/endpoints/trending.ts b/src/endpoints/trending.ts new file mode 100644 index 0000000..5cdc79f --- /dev/null +++ b/src/endpoints/trending.ts @@ -0,0 +1,14 @@ +import { MediaType, TimeWindow, TrendingResults, } from '../types'; +import { BaseEndpoint } from './base'; + +export class TrendingEndpoint extends BaseEndpoint { + constructor(accessToken: string) { + super(accessToken); + } + + async trending(mediaType : T, timeWindow: TimeWindow): Promise> { + return await this.api.get>(`/trending/${mediaType}/${timeWindow}`); + } +} + + diff --git a/src/types/index.ts b/src/types/index.ts index 856e318..954d913 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -9,6 +9,7 @@ export * from './watch-providers'; export * from './people'; export * from './discover'; export * from './review'; +export * from './trending'; export interface AuthorDetails { name: string; diff --git a/src/types/trending.ts b/src/types/trending.ts new file mode 100644 index 0000000..b295ced --- /dev/null +++ b/src/types/trending.ts @@ -0,0 +1,19 @@ +import { Movie, Person, TV } from '.'; +export type MediaType = 'all' | 'movie' | 'tv' | 'person'; + +export type TimeWindow = 'day' | 'week'; + +type TrendingResult = T extends 'tv' +? TV +: T extends 'movie' +? Movie +: T extends 'person' +? Person +: TV | Movie | Person; + +export interface TrendingResults { + page: number; + results: (TrendingResult & {media_type: MediaType})[]; + total_pages: number; + total_results: number; +} \ No newline at end of file From f75321e6a64f839fefaafc372b26ed09672cdbc4 Mon Sep 17 00:00:00 2001 From: DerPenz Date: Thu, 23 Feb 2023 18:03:58 +0100 Subject: [PATCH 4/6] integrated trending endpoint with main TMDB class --- src/tmdb.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/tmdb.ts b/src/tmdb.ts index 13882e6..adf9539 100644 --- a/src/tmdb.ts +++ b/src/tmdb.ts @@ -11,6 +11,7 @@ import { DiscoverEndpoint, PeopleEndpoint, ReviewEndpoint, + TrendingEndpoint, } from './endpoints'; export default class TMDB { @@ -67,4 +68,8 @@ export default class TMDB { get review(): ReviewEndpoint{ return new ReviewEndpoint(this.accessToken); } + + get trending(): TrendingEndpoint{ + return new TrendingEndpoint(this.accessToken); + } } From 4efa4a7354616557aeb9b6146c606eabd7c5ee49 Mon Sep 17 00:00:00 2001 From: DerPenz Date: Thu, 23 Feb 2023 18:44:26 +0100 Subject: [PATCH 5/6] added find endpoint and types --- src/endpoints/find.ts | 14 ++++++++++++++ src/endpoints/index.ts | 1 + src/types/find.ts | 29 +++++++++++++++++++++++++++++ src/types/index.ts | 1 + src/types/tv-shows.ts | 2 ++ 5 files changed, 47 insertions(+) create mode 100644 src/endpoints/find.ts create mode 100644 src/types/find.ts diff --git a/src/endpoints/find.ts b/src/endpoints/find.ts new file mode 100644 index 0000000..4df537d --- /dev/null +++ b/src/endpoints/find.ts @@ -0,0 +1,14 @@ +import { BaseEndpoint } from './base'; +import querystring from 'querystring'; +import { ExternalIdOptions, FindResult } from '../types'; + +export class FindEndpoint extends BaseEndpoint { + constructor(accessToken: string) { + super(accessToken); + } + + async byId(externalId: string, options: ExternalIdOptions): Promise { + const params = querystring.encode(options); + return await this.api.get(`/find/${externalId}?${params}`); + } +} diff --git a/src/endpoints/index.ts b/src/endpoints/index.ts index d100360..afa61d5 100644 --- a/src/endpoints/index.ts +++ b/src/endpoints/index.ts @@ -13,4 +13,5 @@ export * from './discover'; export * from './people'; export * from './review'; export * from './trending'; +export * from './find'; diff --git a/src/types/find.ts b/src/types/find.ts new file mode 100644 index 0000000..a4a3b8f --- /dev/null +++ b/src/types/find.ts @@ -0,0 +1,29 @@ +import { ParsedUrlQueryInput } from 'querystring'; +import { Episode, Media, MediaType, Movie, Person, Season, TV } from '.'; + +export type ExternalSource = + | 'imdb_id' + | 'freebase_mid' + | 'freebase_id' + | 'tvdb_id' + | 'tvrage_id' + | 'facebook_id' + | 'twitter_id' + | 'instagram_id'; + +export interface ExternalIdOptions extends ParsedUrlQueryInput { + external_source: ExternalSource; + language?: string; +} + +type MediaTagged = T & { + media_type: MediaType; +}; + +export interface FindResult { + movie_results: MediaTagged[]; + person_results: MediaTagged[]; + tv_results: MediaTagged[]; + tv_episode_results: MediaTagged[]; + tv_season_results: MediaTagged[]; +} diff --git a/src/types/index.ts b/src/types/index.ts index 954d913..783be6b 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -10,6 +10,7 @@ export * from './people'; export * from './discover'; export * from './review'; export * from './trending'; +export * from './find'; export interface AuthorDetails { name: string; diff --git a/src/types/tv-shows.ts b/src/types/tv-shows.ts index aff729a..81b223a 100644 --- a/src/types/tv-shows.ts +++ b/src/types/tv-shows.ts @@ -100,6 +100,8 @@ export interface Episode { still_path: string vote_average: number vote_count: number + show_id: number; + runtime: number; } export interface SeasonDetails { From 6a1eafef05c251b40dff324eed82dc0d676a8969 Mon Sep 17 00:00:00 2001 From: DerPenz Date: Thu, 23 Feb 2023 18:44:40 +0100 Subject: [PATCH 6/6] integrated find endpoint with main TMDB class --- src/tmdb.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/tmdb.ts b/src/tmdb.ts index adf9539..eb386a3 100644 --- a/src/tmdb.ts +++ b/src/tmdb.ts @@ -12,6 +12,7 @@ import { PeopleEndpoint, ReviewEndpoint, TrendingEndpoint, + FindEndpoint, } from './endpoints'; export default class TMDB { @@ -72,4 +73,8 @@ export default class TMDB { get trending(): TrendingEndpoint{ return new TrendingEndpoint(this.accessToken); } + + get find() : FindEndpoint{ + return new FindEndpoint(this.accessToken); + } }