From e95ca1523d3896310658c9305303bc257f6f9629 Mon Sep 17 00:00:00 2001 From: TidusJar Date: Tue, 26 Feb 2019 21:22:25 +0000 Subject: [PATCH] !wip --- src/Ombi.Core/Engine/Interfaces/IMovieEngineV2.cs | 1 + src/Ombi.Core/Engine/V2/MovieSearchEngineV2.cs | 6 ++++++ .../src/app/media-details/media-details.module.ts | 2 +- .../src/app/media-details/tv/tv-details.component.ts | 10 +++++++++- .../ClientApp/src/app/my-nav/nav-search.component.ts | 3 +++ .../ClientApp/src/app/services/searchV2.service.ts | 3 +++ .../episode-request/episode-request.component.ts | 2 +- src/Ombi/Controllers/V2/SearchController.cs | 11 +++++++++++ 8 files changed, 35 insertions(+), 3 deletions(-) diff --git a/src/Ombi.Core/Engine/Interfaces/IMovieEngineV2.cs b/src/Ombi.Core/Engine/Interfaces/IMovieEngineV2.cs index 03518cf6d..7d8b6829c 100644 --- a/src/Ombi.Core/Engine/Interfaces/IMovieEngineV2.cs +++ b/src/Ombi.Core/Engine/Interfaces/IMovieEngineV2.cs @@ -13,6 +13,7 @@ namespace Ombi.Core.Engine.Interfaces Task> TopRatedMovies(); Task> UpcomingMovies(); Task> NowPlayingMovies(); + Task GetTvDbId(int theMovieDbId); int ResultLimit { get; set; } } } \ No newline at end of file diff --git a/src/Ombi.Core/Engine/V2/MovieSearchEngineV2.cs b/src/Ombi.Core/Engine/V2/MovieSearchEngineV2.cs index 384b28646..d7de75c6e 100644 --- a/src/Ombi.Core/Engine/V2/MovieSearchEngineV2.cs +++ b/src/Ombi.Core/Engine/V2/MovieSearchEngineV2.cs @@ -46,6 +46,12 @@ namespace Ombi.Core.Engine.V2 return await ProcessSingleMovie(movieInfo); } + public async Task GetTvDbId(int theMovieDbId) + { + var result = await MovieApi.GetTvExternals(theMovieDbId); + return result.tvdb_id; + } + /// /// Get similar movies to the id passed in /// diff --git a/src/Ombi/ClientApp/src/app/media-details/media-details.module.ts b/src/Ombi/ClientApp/src/app/media-details/media-details.module.ts index ed7e301f4..6c8074119 100644 --- a/src/Ombi/ClientApp/src/app/media-details/media-details.module.ts +++ b/src/Ombi/ClientApp/src/app/media-details/media-details.module.ts @@ -13,7 +13,7 @@ import { YoutubeTrailerComponent } from "./youtube-trailer.component"; const routes: Routes = [ { path: "movie/:movieDbId", component: MovieDetailsComponent }, - { path: "tv/:tvdbId", component: TvDetailsComponent }, + { path: "tv/:tvdbId/:search", component: TvDetailsComponent }, ]; @NgModule({ imports: [ diff --git a/src/Ombi/ClientApp/src/app/media-details/tv/tv-details.component.ts b/src/Ombi/ClientApp/src/app/media-details/tv/tv-details.component.ts index 412b3d2e4..3742fa062 100644 --- a/src/Ombi/ClientApp/src/app/media-details/tv/tv-details.component.ts +++ b/src/Ombi/ClientApp/src/app/media-details/tv/tv-details.component.ts @@ -14,6 +14,7 @@ import { EpisodeRequestComponent } from "../../shared/episode-request/episode-re }) export class TvDetailsComponent { public tv: ISearchTvResultV2; + public fromSearch: boolean; private tvdbId: number; constructor(private searchService: SearchV2Service, private route: ActivatedRoute, @@ -21,12 +22,19 @@ export class TvDetailsComponent { public dialog: MatDialog, public messageService: MessageService) { this.route.params.subscribe((params: any) => { this.tvdbId = params.tvdbId; + this.fromSearch = params.search; + this.load(); }); } public async load() { - this.tv = await this.searchService.getTvInfo(this.tvdbId); + if(this.fromSearch) { + this.tv = await this.searchService.getTvInfoWithMovieDbId(this.tvdbId); + this.tvdbId = this.tv.id; + } else { + this.tv = await this.searchService.getTvInfo(this.tvdbId); + } const tvBanner = await this.imageService.getTvBanner(this.tvdbId).toPromise(); this.tv.background = this.sanitizer.bypassSecurityTrustStyle("url(" + tvBanner + ")"); } diff --git a/src/Ombi/ClientApp/src/app/my-nav/nav-search.component.ts b/src/Ombi/ClientApp/src/app/my-nav/nav-search.component.ts index d3838742b..68a047c50 100644 --- a/src/Ombi/ClientApp/src/app/my-nav/nav-search.component.ts +++ b/src/Ombi/ClientApp/src/app/my-nav/nav-search.component.ts @@ -56,6 +56,9 @@ export class NavSearchComponent { if (event.item.media_type == "movie") { this.router.navigate([`details/movie/${event.item.id}`]); return; + } else if (event.item.media_type == "tv") { + this.router.navigate([`details/tv/${event.item.id}/true`]); + return; } } } diff --git a/src/Ombi/ClientApp/src/app/services/searchV2.service.ts b/src/Ombi/ClientApp/src/app/services/searchV2.service.ts index 02d4da317..fa1fb61be 100644 --- a/src/Ombi/ClientApp/src/app/services/searchV2.service.ts +++ b/src/Ombi/ClientApp/src/app/services/searchV2.service.ts @@ -64,4 +64,7 @@ export class SearchV2Service extends ServiceHelpers { public getTvInfo(tvdbid: number): Promise { return this.http.get(`${this.url}/Tv/${tvdbid}`, { headers: this.headers }).toPromise(); } + public getTvInfoWithMovieDbId(theMovieDbId: number): Promise { + return this.http.get(`${this.url}/Tv/moviedb/${theMovieDbId}`, { headers: this.headers }).toPromise(); + } } diff --git a/src/Ombi/ClientApp/src/app/shared/episode-request/episode-request.component.ts b/src/Ombi/ClientApp/src/app/shared/episode-request/episode-request.component.ts index d99128b8a..5caeb6126 100644 --- a/src/Ombi/ClientApp/src/app/shared/episode-request/episode-request.component.ts +++ b/src/Ombi/ClientApp/src/app/shared/episode-request/episode-request.component.ts @@ -42,9 +42,9 @@ export class EpisodeRequestComponent implements OnInit { this.series.seasonRequests.forEach((season) => { const seasonsViewModel = { seasonNumber: season.seasonNumber, episodes: [] }; season.episodes.forEach(ep => { - ep.requested = true; if (!this.series.latestSeason || !this.series.requestAll || !this.series.firstSeason) { if (ep.selected) { + ep.requested = true; seasonsViewModel.episodes.push({ episodeNumber: ep.episodeNumber }); } } diff --git a/src/Ombi/Controllers/V2/SearchController.cs b/src/Ombi/Controllers/V2/SearchController.cs index 3fc430ada..0e6a826e9 100644 --- a/src/Ombi/Controllers/V2/SearchController.cs +++ b/src/Ombi/Controllers/V2/SearchController.cs @@ -64,6 +64,17 @@ namespace Ombi.Controllers.V2 return await _tvEngineV2.GetShowInformation(tvdbid); } + /// + /// Returns details for a single show + /// + /// + [HttpGet("tv/moviedb/{moviedbid}")] + public async Task GetTvInfoByMovieId(int moviedbid) + { + var tvDbId = await _movieEngineV2.GetTvDbId(moviedbid); + return await _tvEngineV2.GetShowInformation(tvDbId); + } + /// /// Returns similar movies to the movie id passed in ///