Moved eveything related to the api to a seperate folder seasoned_api.
This commit is contained in:
30
seasoned_api/src/tmdb/convertTmdbToMovie.js
Normal file
30
seasoned_api/src/tmdb/convertTmdbToMovie.js
Normal file
@@ -0,0 +1,30 @@
|
||||
const Movie = require('src/media_classes/movie');
|
||||
|
||||
function convertTmdbToMovie(tmdbMovie) {
|
||||
const movie = new Movie();
|
||||
movie.id = tmdbMovie.id;
|
||||
if (tmdbMovie.media_type === 'movie' || tmdbMovie.release_date !== undefined) {
|
||||
movie.title = tmdbMovie.title;
|
||||
movie.type = 'movie';
|
||||
|
||||
if (tmdbMovie.release_date !== undefined) {
|
||||
movie.release_date = new Date(tmdbMovie.release_date);
|
||||
movie.year = movie.release_date.getFullYear();
|
||||
}
|
||||
} else if (tmdbMovie.first_air_date !== undefined) {
|
||||
movie.title = tmdbMovie.name;
|
||||
movie.type = 'show';
|
||||
if (tmdbMovie.first_air_date !== undefined) {
|
||||
movie.release_date = new Date(tmdbMovie.first_air_date);
|
||||
movie.year = movie.release_date.getFullYear();
|
||||
}
|
||||
}
|
||||
|
||||
movie.poster = tmdbMovie.poster_path;
|
||||
movie.background = tmdbMovie.backdrop_path;
|
||||
movie.overview = tmdbMovie.overview;
|
||||
|
||||
return movie;
|
||||
}
|
||||
|
||||
module.exports = convertTmdbToMovie;
|
||||
67
seasoned_api/src/tmdb/tmdb.js
Normal file
67
seasoned_api/src/tmdb/tmdb.js
Normal file
@@ -0,0 +1,67 @@
|
||||
const moviedb = require('moviedb');
|
||||
const convertTmdbToMovie = require('src/tmdb/convertTmdbToMovie');
|
||||
var methodTypes = { 'movie': 'searchMovie', 'tv': 'searchTv', 'multi': 'searchMulti', 'movieInfo': 'movieInfo',
|
||||
'tvInfo': 'tvInfo' };
|
||||
|
||||
class TMDB {
|
||||
constructor(apiKey, tmdbLibrary) {
|
||||
this.tmdbLibrary = tmdbLibrary || moviedb(apiKey);
|
||||
}
|
||||
|
||||
search(text, page = 1, type = 'multi') {
|
||||
const query = { query: text, page };
|
||||
return Promise.resolve()
|
||||
.then(() => this.tmdb(type, query))
|
||||
.catch(() => { throw new Error('Could not search for movies.'); })
|
||||
.then((reponse) => {
|
||||
try {
|
||||
return reponse.results.filter(function(item) {
|
||||
return (item.popularity >= 1.15)
|
||||
}).map(convertTmdbToMovie);
|
||||
} catch (parseError) {
|
||||
throw new Error('Could not parse result.');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retrieve a specific movie by id from TMDB.
|
||||
* @param {Number} identifier of the movie you want to retrieve
|
||||
* @returns {Promise} succeeds if movie was found
|
||||
*/
|
||||
lookup(identifier, type = 'movie') {
|
||||
if (type === 'movie') { type = 'movieInfo'}
|
||||
else if (type === 'tv') { type = 'tvInfo'}
|
||||
const query = { id: identifier };
|
||||
return Promise.resolve()
|
||||
.then(() => this.tmdb(type, query))
|
||||
.catch(() => { throw new Error('Could not find a movie with that id.'); })
|
||||
.then((response) => {
|
||||
try {
|
||||
return convertTmdbToMovie(response);
|
||||
} catch (parseError) {
|
||||
throw new Error('Could not parse movie.');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
tmdb(method, argument) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const callback = (error, reponse) => {
|
||||
if (error) {
|
||||
return reject(error);
|
||||
}
|
||||
resolve(reponse);
|
||||
};
|
||||
|
||||
if (!argument) {
|
||||
this.tmdbLibrary[methodTypes[method]](callback);
|
||||
} else {
|
||||
this.tmdbLibrary[methodTypes[method]](argument, callback);
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = TMDB;
|
||||
Reference in New Issue
Block a user