Now we have brand spanking new functions for lookup and searching. The idea here is to match tmdb items to plex counterparts.
This commit is contained in:
@@ -29,108 +29,21 @@ class RequestRepository {
|
||||
}
|
||||
}
|
||||
|
||||
searchRequest(text, page, type) {
|
||||
// STRIP METADATA THAT IS NOT ALLOWED
|
||||
|
||||
// Do a search in the tmdb api and return the results of the object
|
||||
let getTmdbResults = function() {
|
||||
return tmdb.search(text, page, type)
|
||||
.then((tmdbSearch) => {
|
||||
return tmdbSearch.results;
|
||||
})
|
||||
}
|
||||
|
||||
// Take inputs and verify them with a list. Now we are for every item in tmdb result
|
||||
// runnning through the entire plex loop. Many loops, but safe.
|
||||
let checkIfMatchesPlexObjects = function(title, year, plexarray) {
|
||||
// Iterate all elements in plexarray
|
||||
console.log(plexArray)
|
||||
for (let plexItem of plexarray) {
|
||||
// If matches with our title and year return true
|
||||
if (plexItem.title === title && plexItem.year === year)
|
||||
return true;
|
||||
}
|
||||
// If no matches were found, return false
|
||||
return false;
|
||||
}
|
||||
|
||||
search(query, type, page) {
|
||||
return Promise.resolve()
|
||||
.then(() => plexRepository.searchMedia(text))
|
||||
// Get the list of plexItems matching the query passed.
|
||||
.then((plexItem) => {
|
||||
let tmdbSearchResult = getTmdbResults();
|
||||
|
||||
// When we get the result from tmdbSearchResult we pass it along and iterate over each
|
||||
// element, and updates the matchedInPlex status of a item.
|
||||
return tmdbSearchResult.then((tmdbResult) => {
|
||||
for (var i = 0; i < tmdbResult.length; i++) {
|
||||
let foundMatchInPlex = checkIfMatchesPlexObjects(tmdbResult[i].title, tmdbResult[i].year, plexItem);
|
||||
tmdbResult[i].matchedInPlex = foundMatchInPlex;
|
||||
}
|
||||
return { 'results': tmdbResult, 'page': 1 };
|
||||
})
|
||||
// TODO log error
|
||||
.catch((error) => {
|
||||
console.log(error);
|
||||
throw new Error('Search query did not give any results.');
|
||||
})
|
||||
})
|
||||
.catch(() => {
|
||||
let tmdbSearchResult = getTmdbResults();
|
||||
|
||||
// Catch if empty, then 404
|
||||
return tmdbSearchResult.then((tmdbResult) => {
|
||||
return {'results': tmdbResult, 'page': 1 };
|
||||
})
|
||||
.then(() => tmdb.search(query, type, page))
|
||||
// .then((tmdbResult) => plexRepository.multipleInPlex(tmdbResult))
|
||||
.then((result) => {
|
||||
return result
|
||||
})
|
||||
.catch((error) => {return 'error in the house' + error})
|
||||
}
|
||||
|
||||
lookup(identifier, type = 'movie') {
|
||||
// console.log('Lookup: ', identifier + ' : ' + type)
|
||||
// if (type === 'movie') { type = 'movieInfo'}
|
||||
// else if (type === 'tv') { type = 'tvInfo'}
|
||||
// return Promise.resolve()
|
||||
// .then(() => tmdb.lookup(identifier, type))
|
||||
// .then((tmdbMovie) => {
|
||||
// return Promise.resolve(plexRepository.searchMedia(tmdbMovie.title))
|
||||
// .then((plexMovies) => {
|
||||
// for (var i = 0; i < plexMovies.length; i++) {
|
||||
// if (tmdbMovie.title === plexMovies[i].title && tmdbMovie.year === plexMovies[i].year) {
|
||||
// tmdbMovie.matchedInPlex = true;
|
||||
// return tmdbMovie;
|
||||
// }
|
||||
// }
|
||||
// })
|
||||
// .catch((error) => {
|
||||
// return error;
|
||||
// });
|
||||
// return tmdbMovie;
|
||||
// });
|
||||
let tmdbType = undefined;
|
||||
if (type === 'movie') { tmdbType = 'movieInfo'}
|
||||
else if (type === 'tv') { tmdbType = 'tvInfo'}
|
||||
return Promise.resolve()
|
||||
.then(() => tmdb.lookup(identifier, tmdbType))
|
||||
.then(() => tmdb.lookup(identifier, type))
|
||||
.then((tmdbMovie) => this.checkID(tmdbMovie))
|
||||
.then((tmdbMovie) => {
|
||||
return Promise.resolve(plexRepository.searchMedia(tmdbMovie.title))
|
||||
.then((plexMovies) => {
|
||||
console.log('plexMovies lookup: ', plexMovies)
|
||||
for (var i = 0; i < plexMovies.length; i++) {
|
||||
if (tmdbMovie.title === plexMovies[i].title && tmdbMovie.year === plexMovies[i].year) {
|
||||
console.log('matched')
|
||||
tmdbMovie.matchedInPlex = true;
|
||||
return tmdbMovie;
|
||||
}
|
||||
}
|
||||
return tmdbMovie;
|
||||
})
|
||||
// Add it here
|
||||
.catch((error) => {
|
||||
console.log('there was a error:', error)
|
||||
return tmdbMovie;
|
||||
})
|
||||
})
|
||||
.then((tmdbMovie) => plexRepository.inPlex(tmdbMovie))
|
||||
.catch((error) => {
|
||||
console.log(error)
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user