From 53cdcdc23b671fc3f681f9e9d284e62ac5ff2090 Mon Sep 17 00:00:00 2001 From: tidusjar Date: Sun, 30 Dec 2018 11:43:30 +0000 Subject: [PATCH] Added the ability to specify a year when searching for movies --- .../Engine/Interfaces/IMovieEngine.cs | 2 +- src/Ombi.Core/Engine/MovieSearchEngine.cs | 18 +- src/Ombi.TheMovieDbApi/IMovieDbApi.cs | 2 +- src/Ombi.TheMovieDbApi/TheMovieDbApi.cs | 6 +- .../requests/music/musicrequests.component.ts | 2 +- .../app/search/moviesearch.component.html | 27 +- .../app/search/moviesearch.component.ts | 34 +- .../app/search/search.component.scss | 10 + .../ClientApp/app/services/search.service.ts | 8 +- src/Ombi/Controllers/SearchController.cs | 20 +- src/Ombi/Ombi.csproj | 2 +- src/Ombi/package.json | 1 + src/Ombi/wwwroot/translations/en.json | 1 + src/Ombi/yarn.lock | 3028 +++++++++++------ 14 files changed, 2125 insertions(+), 1036 deletions(-) create mode 100644 src/Ombi/ClientApp/app/search/search.component.scss diff --git a/src/Ombi.Core/Engine/Interfaces/IMovieEngine.cs b/src/Ombi.Core/Engine/Interfaces/IMovieEngine.cs index 91b6404db..6a28b8d8f 100644 --- a/src/Ombi.Core/Engine/Interfaces/IMovieEngine.cs +++ b/src/Ombi.Core/Engine/Interfaces/IMovieEngine.cs @@ -10,7 +10,7 @@ namespace Ombi.Core Task> PopularMovies(); - Task> Search(string search); + Task> Search(string search, int? year); Task> TopRatedMovies(); diff --git a/src/Ombi.Core/Engine/MovieSearchEngine.cs b/src/Ombi.Core/Engine/MovieSearchEngine.cs index 09b4cea6b..05652f83b 100644 --- a/src/Ombi.Core/Engine/MovieSearchEngine.cs +++ b/src/Ombi.Core/Engine/MovieSearchEngine.cs @@ -36,6 +36,8 @@ namespace Ombi.Core.Engine private IMapper Mapper { get; } private ILogger Logger { get; } + private const int MovieLimit = 10; + /// /// Lookups the imdb information. /// @@ -54,13 +56,13 @@ namespace Ombi.Core.Engine /// /// The search. /// - public async Task> Search(string search) + public async Task> Search(string search, int? year) { - var result = await MovieApi.SearchMovie(search); + var result = await MovieApi.SearchMovie(search, year); if (result != null) { - return await TransformMovieResultsToResponse(result.Take(10)); // Take 10 to stop us overloading the API + return await TransformMovieResultsToResponse(result.Take(MovieLimit)); // Take x to stop us overloading the API } return null; } @@ -76,7 +78,7 @@ namespace Ombi.Core.Engine if (result != null) { Logger.LogDebug("Search Result: {result}", result); - return await TransformMovieResultsToResponse(result.Take(10)); // Take 10 to stop us overloading the API + return await TransformMovieResultsToResponse(result.Take(MovieLimit)); // Take x to stop us overloading the API } return null; } @@ -90,7 +92,7 @@ namespace Ombi.Core.Engine var result = await Cache.GetOrAdd(CacheKeys.PopularMovies, async () => await MovieApi.PopularMovies(), DateTime.Now.AddHours(12)); if (result != null) { - return await TransformMovieResultsToResponse(result.Take(10)); // Take 10 to stop us overloading the API + return await TransformMovieResultsToResponse(result.Take(MovieLimit)); // Take x to stop us overloading the API } return null; } @@ -104,7 +106,7 @@ namespace Ombi.Core.Engine var result = await Cache.GetOrAdd(CacheKeys.TopRatedMovies, async () => await MovieApi.TopRated(), DateTime.Now.AddHours(12)); if (result != null) { - return await TransformMovieResultsToResponse(result.Take(10)); // Take 10 to stop us overloading the API + return await TransformMovieResultsToResponse(result.Take(MovieLimit)); // Take x to stop us overloading the API } return null; } @@ -119,7 +121,7 @@ namespace Ombi.Core.Engine if (result != null) { Logger.LogDebug("Search Result: {result}", result); - return await TransformMovieResultsToResponse(result.Take(10)); // Take 10 to stop us overloading the API + return await TransformMovieResultsToResponse(result.Take(MovieLimit)); // Take x to stop us overloading the API } return null; } @@ -133,7 +135,7 @@ namespace Ombi.Core.Engine var result = await Cache.GetOrAdd(CacheKeys.NowPlayingMovies, async () => await MovieApi.NowPlaying(), DateTime.Now.AddHours(12)); if (result != null) { - return await TransformMovieResultsToResponse(result.Take(10)); // Take 10 to stop us overloading the API + return await TransformMovieResultsToResponse(result.Take(MovieLimit)); // Take x to stop us overloading the API } return null; } diff --git a/src/Ombi.TheMovieDbApi/IMovieDbApi.cs b/src/Ombi.TheMovieDbApi/IMovieDbApi.cs index 0b24bd55c..e684014e9 100644 --- a/src/Ombi.TheMovieDbApi/IMovieDbApi.cs +++ b/src/Ombi.TheMovieDbApi/IMovieDbApi.cs @@ -11,7 +11,7 @@ namespace Ombi.Api.TheMovieDb Task GetMovieInformationWithExtraInfo(int movieId); Task> NowPlaying(); Task> PopularMovies(); - Task> SearchMovie(string searchTerm); + Task> SearchMovie(string searchTerm, int? year); Task> SearchTv(string searchTerm); Task> TopRated(); Task> Upcoming(); diff --git a/src/Ombi.TheMovieDbApi/TheMovieDbApi.cs b/src/Ombi.TheMovieDbApi/TheMovieDbApi.cs index af9423f5d..adab2c5a1 100644 --- a/src/Ombi.TheMovieDbApi/TheMovieDbApi.cs +++ b/src/Ombi.TheMovieDbApi/TheMovieDbApi.cs @@ -83,11 +83,15 @@ namespace Ombi.Api.TheMovieDb return Mapper.Map(result); } - public async Task> SearchMovie(string searchTerm) + public async Task> SearchMovie(string searchTerm, int? year) { var request = new Request($"search/movie", BaseUri, HttpMethod.Get); request.FullUri = request.FullUri.AddQueryParameter("api_key", ApiToken); request.FullUri = request.FullUri.AddQueryParameter("query", searchTerm); + if(year.HasValue && year.Value > 0) + { + request.FullUri = request.FullUri.AddQueryParameter("year", year.Value.ToString()); + } AddRetry(request); var result = await Api.Request>(request); diff --git a/src/Ombi/ClientApp/app/requests/music/musicrequests.component.ts b/src/Ombi/ClientApp/app/requests/music/musicrequests.component.ts index 7cda9ab29..b10173042 100644 --- a/src/Ombi/ClientApp/app/requests/music/musicrequests.component.ts +++ b/src/Ombi/ClientApp/app/requests/music/musicrequests.component.ts @@ -39,7 +39,7 @@ export class MusicRequestsComponent implements OnInit { public rejectionReason: string; public totalAlbums: number = 100; - private currentlyLoaded: number; + public currentlyLoaded: number; private amountToLoad: number; constructor( diff --git a/src/Ombi/ClientApp/app/search/moviesearch.component.html b/src/Ombi/ClientApp/app/search/moviesearch.component.html index 64ba43450..8f3b8fded 100644 --- a/src/Ombi/ClientApp/app/search/moviesearch.component.html +++ b/src/Ombi/ClientApp/app/search/moviesearch.component.html @@ -5,7 +5,7 @@
-
+
  • +
    +
    + +
    +
    + +
    +
    + +
    +
    + @@ -111,11 +126,15 @@