From aab9194cf56ce390a3348e5f26a83b1b3523b92e Mon Sep 17 00:00:00 2001 From: "Jamie.Rees" Date: Wed, 7 Jun 2017 09:06:29 +0100 Subject: [PATCH] Fixed the TV search via Trakt not returning Images anymore. #865 --- .../Engine/Interfaces/ITvSearchEngine.cs | 2 +- src/Ombi.Core/Engine/TvSearchEngine.cs | 6 ++--- src/Ombi.Core/Rule/RuleEvaluator.cs | 4 ++-- src/Ombi.Mapping/Profiles/TvProfile.cs | 24 ++++++++++++++++++- .../wwwroot/app/search/tvsearch.component.ts | 21 ++++++++++++++++ 5 files changed, 50 insertions(+), 7 deletions(-) diff --git a/src/Ombi.Core/Engine/Interfaces/ITvSearchEngine.cs b/src/Ombi.Core/Engine/Interfaces/ITvSearchEngine.cs index 50268d4dd..5e02d4409 100644 --- a/src/Ombi.Core/Engine/Interfaces/ITvSearchEngine.cs +++ b/src/Ombi.Core/Engine/Interfaces/ITvSearchEngine.cs @@ -8,7 +8,7 @@ namespace Ombi.Core.Engine.Interfaces { Task> Search(string searchTerm); - Task GetShowInformation(int tvdbId); + Task GetShowInformation(int tvdbid); Task> Popular(); diff --git a/src/Ombi.Core/Engine/TvSearchEngine.cs b/src/Ombi.Core/Engine/TvSearchEngine.cs index f8055963e..953c242ec 100644 --- a/src/Ombi.Core/Engine/TvSearchEngine.cs +++ b/src/Ombi.Core/Engine/TvSearchEngine.cs @@ -50,9 +50,9 @@ namespace Ombi.Core.Engine return null; } - public async Task GetShowInformation(int tvmazeId) + public async Task GetShowInformation(int tvdbid) { - var show = await TvMazeApi.ShowLookup(tvmazeId); + var show = await TvMazeApi.ShowLookupByTheTvDbId(tvdbid); var episodes = await TvMazeApi.EpisodeLookup(show.id); var mapped = Mapper.Map(show); @@ -154,7 +154,7 @@ namespace Ombi.Core.Engine } } - if (item.Id > 0 && item.Available) + if (item.Id > 0) { // TODO need to check if the episodes are available var tvdbid = item.Id; diff --git a/src/Ombi.Core/Rule/RuleEvaluator.cs b/src/Ombi.Core/Rule/RuleEvaluator.cs index c8a2f8bcd..1fe618694 100644 --- a/src/Ombi.Core/Rule/RuleEvaluator.cs +++ b/src/Ombi.Core/Rule/RuleEvaluator.cs @@ -15,8 +15,8 @@ namespace Ombi.Core.Rule { RequestRules = new List>(); SearchRules = new List>(); - var baseSearchType = typeof(BaseSearchRule).FullName; - var baseRequestType = typeof(BaseRequestRule).FullName; + var baseSearchType = typeof(BaseRequestRule).FullName; + var baseRequestType = typeof(BaseSearchRule).FullName; var ass = typeof(RuleEvaluator).GetTypeInfo().Assembly; diff --git a/src/Ombi.Mapping/Profiles/TvProfile.cs b/src/Ombi.Mapping/Profiles/TvProfile.cs index 49ed13683..70bca6665 100644 --- a/src/Ombi.Mapping/Profiles/TvProfile.cs +++ b/src/Ombi.Mapping/Profiles/TvProfile.cs @@ -46,10 +46,32 @@ namespace Ombi.Mapping.Profiles .ForMember(dest => dest.Status, opts => opts.MapFrom(src => src.status)) .ForMember(dest => dest.SeasonRequests, opts => opts.MapFrom(src => src.Season)); + + + CreateMap() + .ConstructUsing(x => + { + var season = new SeasonRequestModel + { + SeasonNumber = x.SeasonNumber + }; + foreach (var ep in x.EpisodeNumber) + { + season.Episodes.Add(new EpisodesRequested + { + EpisodeNumber = ep, + + }); + } + return season; + }); + + + CreateMap() .ForMember(dest => dest.Id, opts => opts.MapFrom(src => Convert.ToInt32(src.Ids.Tvdb.ToString()))) .ForMember(dest => dest.FirstAired, opts => opts.MapFrom(src => src.FirstAired.HasValue ? src.FirstAired.Value.ToString("yyyy-MM-ddTHH:mm:ss") : string.Empty)) - .ForMember(dest => dest.Banner, opts => opts.MapFrom(src => src.Ids.Imdb)) + .ForMember(dest => dest.Banner, opts => opts.MapFrom(src => src.Images.Banner.Full)) .ForMember(dest => dest.ImdbId, opts => opts.MapFrom(src => src.Ids.Imdb)) .ForMember(dest => dest.Network, opts => opts.MapFrom(src => src.Network)) .ForMember(dest => dest.Overview, opts => opts.MapFrom(src => src.Overview.RemoveHtml())) diff --git a/src/Ombi/wwwroot/app/search/tvsearch.component.ts b/src/Ombi/wwwroot/app/search/tvsearch.component.ts index f349bd456..ebe779dde 100644 --- a/src/Ombi/wwwroot/app/search/tvsearch.component.ts +++ b/src/Ombi/wwwroot/app/search/tvsearch.component.ts @@ -70,6 +70,7 @@ export class TvSearchComponent implements OnInit, OnDestroy { .takeUntil(this.subscriptions) .subscribe(x => { this.tvResults = x; + this.getExtraInfo(); }); } @@ -79,6 +80,7 @@ export class TvSearchComponent implements OnInit, OnDestroy { .takeUntil(this.subscriptions) .subscribe(x => { this.tvResults = x; + this.getExtraInfo(); }); } @@ -88,6 +90,7 @@ export class TvSearchComponent implements OnInit, OnDestroy { .takeUntil(this.subscriptions) .subscribe(x => { this.tvResults = x; + this.getExtraInfo(); }); } @@ -97,9 +100,21 @@ export class TvSearchComponent implements OnInit, OnDestroy { .takeUntil(this.subscriptions) .subscribe(x => { this.tvResults = x; + this.getExtraInfo(); }); } + getExtraInfo() { + this.tvResults.forEach((val, index) => { + this.searchService.getShowInformation(val.id) + .takeUntil(this.subscriptions) + .subscribe(x => { + this.updateItem(val,x); + }); + + }); + } + request(searchResult: ISearchTvResult) { searchResult.requested = true; this.requestService.requestTv(searchResult) @@ -136,6 +151,12 @@ export class TvSearchComponent implements OnInit, OnDestroy { this.route.navigate(['/search/show', searchResult.seriesId]); } + private updateItem(key: ISearchTvResult, updated: ISearchTvResult) { + var index = this.tvResults.indexOf(key, 0); + if (index > -1) { + this.tvResults[index] = updated; + } + } private clearResults() { this.tvResults = [];