Files
seasonedShows/seasoned_api/src/tmdb/convertTmdbToMovie.js

72 lines
1.9 KiB
JavaScript

import { Movie } from './types'
const tmdbSwitcher = (tmdbMovie, property) => tmdbMovie[property]
const releaseTypeEnum = {
1: 'Premier',
2: 'Limited theatrical',
3: 'Theatrical',
4: 'Digital',
5: 'Physical',
6: 'TV'
}
function convertTmdbToMovie(tmdbMovie, credits=undefined, releaseDates=undefined) {
const movie = new Movie(tmdbMovie.id, tmdbMovie.title)
movie.overview = tmdbMovie.overview;
movie.rank = tmdbMovie.vote_average;
if (credits) {
movie.credits = { cast: credits.cast, crew: credits.crew };
}
if (releaseDates) {
movie.release_dates = releaseDates.results.map((releasePlace) => {
const newestRelease = releasePlace.release_dates.sort((a,b) => a.type < b.type ? 1 : -1)[0]
const type = releaseTypeEnum[newestRelease.type]
return {
country: releasePlace.iso_3166_1,
type: type,
date: newestRelease.release_date
}
})
}
if (tmdbMovie.release_date !== undefined && tmdbMovie.release_date) {
movie.release_date = new Date(tmdbMovie.release_date);
movie.year = movie.release_date.getFullYear();
}
if (tmdbMovie.poster_path !== undefined && tmdbMovie.poster_path) {
movie.poster = tmdbMovie.poster_path;
}
if (tmdbMovie.backdrop_path !== undefined && tmdbMovie.backdrop_path) {
movie.backdrop = tmdbMovie.backdrop_path;
}
if (tmdbMovie.status !== undefined && tmdbMovie.status) {
movie.status = tmdbMovie.status;
}
if (tmdbMovie.genres !== undefined && tmdbMovie.genres) {
movie.genres = tmdbMovie.genres.map(genre => genre.name);
}
if (tmdbMovie.tagline !== undefined && tmdbMovie.tagline) {
movie.tagline = tmdbMovie.tagline;
}
if (tmdbMovie.runtime !== undefined && tmdbMovie.runtime) {
movie.runtime = tmdbMovie.runtime;
}
if (tmdbMovie.imdb_id !== undefined && tmdbMovie.imdb_id) {
movie.imdb_id = tmdbMovie.imdb_id;
}
return movie;
}
module.exports = convertTmdbToMovie;