/// <summary> /// return true if success. /// </summary> /// <returns></returns> public async Task <bool> GenerateAsync(DataCenter dataCenter, ICoverParent source) { var video = (JryVideoInfo)source; if (video.DoubanId == null) { return(false); } return(await Task.Run(async() => { var builder = CoverBuilder.CreateVideo(video); var requests = (await DoubanHelper.TryGetMovieInfoAsync(video.DoubanId))?.GetMovieCoverRequest().ToArray(); if (requests == null) { return false; } if (requests.Length == 0) { return false; } builder.Requests.AddRange(requests); return await this.manager.BuildCoverAsync(builder); })); }
private async Task <bool> TryAutoAddCoverAsync(DataCenter dataCenter, TheTVDBClient client, RemoteId removeId, VideoRole role) { var theTVDBId = await client.TryGetTheTVDBSeriesIdByRemoteIdAsync(removeId); if (theTVDBId == null) { return(false); } var actor = await dataCenter.ArtistManager.FindAsync(role.ActorId); if (actor == null) { return(false); } var actors = (await client.GetActorsBySeriesIdAsync(theTVDBId)).ToArray(); actors = actors.Where(z => z.Id == actor.TheTVDBId).ToArray(); if (actors.Length != 1) { return(false); } if (!actors[0].HasBanner) { return(false); } var url = actors[0].BuildUrl(client); var builder = CoverBuilder.CreateRole(role); builder.Uri.Add(url); return(await dataCenter.CoverManager.BuildCoverAsync(builder)); }
public Task <bool> BuildCoverAsync(CoverBuilder builder) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } Task <bool> task; lock (this.downloaders) { task = this.downloaders.GetValueOrDefault(builder.Id); if (task == null) { if (builder.Requests.Count + builder.Uri.Count == 0) { return(Task.FromResult(false)); } task = Task.Run(async() => { foreach (var request in builder.Requests.Concat(builder.Uri .Select(WebRequest.CreateHttp) .As2().Ignore <Exception>())) { var result = await request.GetResultAsBytesAsync(); if (!result.IsSuccess) { continue; } var cover = builder.Build(result.Result); cover.Version = Upgrader <JryCover> .MaxVersion; if (await this.InsertOrUpdateAsync(cover)) { return(true); } } return(false); }); this.downloaders[builder.Id] = task; } } return(task); }
/// <summary> /// return true if success. /// </summary> /// <param name="dataCenter"></param> /// <param name="source"></param> /// <returns></returns> public async Task <bool> GenerateAsync(DataCenter dataCenter, ICoverParent source) { var item = (Artist)source; var doubanId = item.DoubanId; if (string.IsNullOrWhiteSpace(doubanId)) { return(false); } var info = await DoubanHelper.TryGetArtistInfoAsync(doubanId); if (info == null) { return(false); } var url = info.GetLargeImageUrl(); var coverBuilder = CoverBuilder.CreateArtist(item); coverBuilder.Uri.Add(url); return(await dataCenter.CoverManager.BuildCoverAsync(coverBuilder)); }
public async Task <bool?> StartSelect(Window window) { var parameters = new List <RemoteId>(); var imdbId = this.videoViewer.InfoView.Source.GetValidImdbId(); if (imdbId != null) { parameters.Add(new RemoteId(RemoteIdType.Imdb, imdbId)); } var theTVDBId = this.videoViewer.InfoView.SeriesView.Source.TheTVDBId; if (!theTVDBId.IsNullOrWhiteSpace()) { parameters.Add(new RemoteId(RemoteIdType.TheTVDB, theTVDBId)); } imdbId = this.videoViewer.InfoView.SeriesView.Source.GetValidImdbId(); if (imdbId != null) { parameters.Add(new RemoteId(RemoteIdType.Imdb, imdbId)); } var url = WebImageSelectorWindow.StartSelectFanartByImdbId(window, this.videoViewer.InfoView.Source.Index.ToString(), parameters.ToArray()); if (string.IsNullOrWhiteSpace(url)) { return(null); } var builder = CoverBuilder.CreateBackground(this.videoViewer.InfoView.Source); builder.Uri.Add(url); await this.GetManagers().CoverManager.BuildCoverAsync(builder); this.RefreshProperties(); return(false); }
private async Task <bool> AutoGenerateCoverOverTheTVDBIdAsync(TheTVDBClient client, string theTVDBId, string index) { if (theTVDBId.IsNullOrWhiteSpace()) { return(false); } return(await Task.Run(async() => { var array = (await client.GetBannersBySeriesIdAsync(theTVDBId)).ToArray(); var urls = array.Where(z => z.Season == index).RandomSort() .Concat(array.Where(z => z.Season != index).RandomSort()) .Where(banner => banner.BannerType == BannerType.Fanart) .Select(z => z.BuildUrl(client)) .ToArray(); if (urls.Length == 0) { return false; } var builder = CoverBuilder.CreateBackground(this.source.InfoView.Source); builder.Uri.AddRange(urls); return await this.coverManager.BuildCoverAsync(builder); })); }