added people endpoint with details, credits

This commit is contained in:
DerPenz
2023-02-07 17:07:15 +01:00
parent 641f6cfcd2
commit 912a91e8dc
4 changed files with 124 additions and 0 deletions

View File

@@ -9,3 +9,5 @@ export * from './genre';
export * from './movies';
export * from './configuration';
export * from './tv-shows';
export * from './people';

32
src/endpoints/people.ts Normal file
View File

@@ -0,0 +1,32 @@
import { PersonDetail, PersonMovieCredit, PersonTvShowCredit } from '../types';
import { BaseEndpoint } from './base';
const BASE_PERSON = '/person';
export class PeopleEndpoint extends BaseEndpoint {
constructor(accessToken: string) {
super(accessToken);
}
async details(id: number): Promise<PersonDetail> {
return await this.api.get<PersonDetail>(`${BASE_PERSON}/${id}`);
}
async movieCredits(
id: number
): Promise<PersonMovieCredit> {
return await this.api.get<PersonMovieCredit>(
`${BASE_PERSON}/${id}/movie_credits`
);
}
async tvShowCredits(
id: number
): Promise<PersonTvShowCredit> {
return await this.api.get<PersonTvShowCredit>(
`${BASE_PERSON}/${id}/tv_credits`
);
}
}

View File

@@ -6,6 +6,7 @@ export * from './movies';
export * from './search';
export * from './tv-shows';
export * from './watch-providers';
export * from './people';
export interface AuthorDetails {
name: string;

89
src/types/people.ts Normal file
View File

@@ -0,0 +1,89 @@
interface Cast {
character: string;
credit_id: string;
vote_count: number;
id: number;
backdrop_path: string;
poster_path: string;
original_language: string;
vote_average: number;
genre_ids: number[];
popularity: number;
overview: string;
}
interface Crew {
id: number;
department: string;
original_language: string;
credit_id: string;
overview: string;
vote_count: number;
poster_path: string;
backdrop_path: string;
popularity: number;
genre_ids: number[];
job: string;
vote_average: number;
}
export interface PersonMovieCast extends Cast {
release_date: string;
video: boolean;
adult: boolean;
title: string;
original_title: string;
}
export interface PersonMovieCrew extends Crew {
original_title: string;
video: boolean;
title: string;
adult: boolean;
release_date: string;
}
export interface PersonTvShowCrew extends Crew {
episode_count: number;
origin_country: string[];
original_name: string;
name: string;
first_air_date: string;
}
export interface PersonTvShowCast extends Cast {
original_name: string;
name: string;
episode_count: number;
first_air_date: string;
origin_country: string[];
}
export interface PersonMovieCredit {
cast: PersonMovieCast[];
crew: PersonMovieCrew[];
id: number;
}
export interface PersonTvShowCredit {
cast: PersonTvShowCast[];
crew: PersonTvShowCrew[];
id: number;
}
export interface PersonDetail {
birthday: string,
known_for_department: string,
deathday: string,
id: number,
name: string,
also_known_as: string[]
gender: number,
biography: string,
popularity: number,
place_of_birth: string,
profile_path: string,
adult: boolean,
imdb_id: string,
homepage: string
}