Пример #1
0
        public async Task <string> GetMoviePoster(string movieDbId)
        {
            var key = await _cache.GetOrAdd(CacheKeys.FanartTv, async() => await Config.GetAsync(Store.Entities.ConfigurationTypes.FanartTv), DateTime.Now.AddDays(1));

            var images = await FanartTvApi.GetMovieImages(movieDbId, key.Value);

            if (images == null)
            {
                return(string.Empty);
            }

            if (images.movieposter?.Any() ?? false)
            {
                var enImage = images.movieposter.Where(x => x.lang == "en").OrderByDescending(x => x.likes).Select(x => x.url).FirstOrDefault();
                if (enImage == null)
                {
                    return(images.movieposter.OrderByDescending(x => x.likes).Select(x => x.url).FirstOrDefault());
                }
                return(enImage);
            }

            if (images.moviethumb?.Any() ?? false)
            {
                return(images.moviethumb.OrderBy(x => x.likes).Select(x => x.url).FirstOrDefault());
            }

            return(string.Empty);
        }
Пример #2
0
        public async Task <string> GetTvBanner(int tvdbid)
        {
            if (tvdbid <= 0)
            {
                return(string.Empty);
            }
            var key = await _cache.GetOrAdd(CacheKeys.FanartTv, async() => await Config.GetAsync(Store.Entities.ConfigurationTypes.FanartTv), DateTime.Now.AddDays(1));

            var images = await FanartTvApi.GetTvImages(tvdbid, key.Value);

            if (images == null)
            {
                return(string.Empty);
            }
            if (images.tvbanner != null)
            {
                var enImage = images.tvbanner.Where(x => x.lang == "en").OrderByDescending(x => x.likes).Select(x => x.url).FirstOrDefault();
                if (enImage == null)
                {
                    return(images.tvbanner.OrderByDescending(x => x.likes).Select(x => x.url).FirstOrDefault());
                }
            }
            if (images.seasonposter != null)
            {
                return(images.seasonposter.FirstOrDefault()?.url ?? string.Empty);
            }
            return(string.Empty);
        }
Пример #3
0
        public async Task <object> GetBackgroundImage()
        {
            var moviesArray = Options.Movies;
            var tvArray     = Options.TvShows;

            var rand     = new Random();
            var movieUrl = string.Empty;
            var tvUrl    = string.Empty;

            var key = await _cache.GetOrAdd(CacheKeys.FanartTv, async() => await Config.Get(Store.Entities.ConfigurationTypes.FanartTv), DateTime.Now.AddDays(1));

            if (moviesArray.Any())
            {
                var item   = rand.Next(moviesArray.Length);
                var result = await FanartTvApi.GetMovieImages(moviesArray[item].ToString(), key.Value);

                while (!result.moviebackground.Any())
                {
                    result = await FanartTvApi.GetMovieImages(moviesArray[item].ToString(), key.Value);
                }

                movieUrl = result.moviebackground[0].url;
            }
            if (tvArray.Any())
            {
                var item   = rand.Next(tvArray.Length);
                var result = await FanartTvApi.GetTvImages(tvArray[item], key.Value);

                while (!result.showbackground.Any())
                {
                    result = await FanartTvApi.GetTvImages(tvArray[item], key.Value);
                }

                tvUrl = result.showbackground[0].url;
            }

            if (!string.IsNullOrEmpty(movieUrl) && !string.IsNullOrEmpty(tvUrl))
            {
                var result = rand.Next(2);
                if (result == 0)
                {
                    return new { url = movieUrl }
                }
                ;
                if (result == 1)
                {
                    return new { url = tvUrl }
                }
                ;
            }

            if (!string.IsNullOrEmpty(movieUrl))
            {
                return(new { url = movieUrl });
            }
            return(new { url = tvUrl });
        }
    }
}
Пример #4
0
        public async Task <string> GetTvBackground(int tvdbid)
        {
            var key = await _cache.GetOrAdd(CacheKeys.FanartTv, async() => await Config.Get(Store.Entities.ConfigurationTypes.FanartTv), DateTime.Now.AddDays(1));

            var images = await FanartTvApi.GetTvImages(tvdbid, key.Value);

            if (images == null)
            {
                return(string.Empty);
            }

            if (images.showbackground?.Any() ?? false)
            {
                var enImage = images.showbackground.Where(x => x.lang == "en").OrderByDescending(x => x.likes).Select(x => x.url).FirstOrDefault();
                if (enImage == null)
                {
                    return(images.showbackground.OrderByDescending(x => x.likes).Select(x => x.url).FirstOrDefault());
                }
                return(enImage);
            }

            return(string.Empty);
        }
Пример #5
0
        public async Task <string> GetRandomPoster()
        {
            var key = await _cache.GetOrAdd(CacheKeys.FanartTv, async() => await Config.GetAsync(Store.Entities.ConfigurationTypes.FanartTv), DateTime.Now.AddDays(1));

            var rand = new Random();
            var val  = rand.Next(1, 3);

            if (val == 1)
            {
                var movies             = (await _movieEngineV2.PopularMovies(0, 10, HttpContext.RequestAborted, "en")).ToArray();
                var selectedMovieIndex = rand.Next(movies.Count());
                var movie = movies[selectedMovieIndex];

                var images = await _cache.GetOrAdd($"{CacheKeys.FanartTv}movie{movie.Id}", async() => await FanartTvApi.GetMovieImages(movie.Id.ToString(), key.Value), DateTime.Now.AddDays(1));

                if (images == null)
                {
                    return(string.Empty);
                }

                if (images.movieposter?.Any() ?? false)
                {
                    var enImage = images.movieposter.Where(x => x.lang == "en").OrderByDescending(x => x.likes).Select(x => x.url).FirstOrDefault();
                    if (enImage == null)
                    {
                        return(images.movieposter.OrderByDescending(x => x.likes).Select(x => x.url).FirstOrDefault());
                    }
                    return(enImage);
                }

                if (images.moviethumb?.Any() ?? false)
                {
                    return(images.moviethumb.OrderBy(x => x.likes).Select(x => x.url).FirstOrDefault());
                }
            }
            else
            {
                var tv = (await _tvSearchEngineV2.Popular(0, 10, "en")).ToArray();
                var selectedMovieIndex = rand.Next(tv.Count());
                var selected           = tv[selectedMovieIndex];

                return($"https://image.tmdb.org/t/p/original{selected.BackdropPath}");
            }
            return("");
        }
Пример #6
0
        public async Task <object> GetBackgroundImage()
        {
            var moviesArray = Options.Movies ?? new int[0];
            var tvArray     = Options.TvShows ?? new int[0];

            var rand     = new Random();
            var movieUrl = string.Empty;
            var tvUrl    = string.Empty;

            var key = await _cache.GetOrAddAsync(CacheKeys.FanartTv, () => Config.GetAsync(Store.Entities.ConfigurationTypes.FanartTv), DateTimeOffset.Now.AddDays(1));

            if (moviesArray.Length > 0)
            {
                var item   = rand.Next(moviesArray.Length);
                var result = await _cache.GetOrAddAsync($"{CacheKeys.FanartTv}movie{moviesArray[item]}", () => FanartTvApi.GetMovieImages(moviesArray[item].ToString(), key.Value), DateTimeOffset.Now.AddDays(1));

                while (!result.moviebackground?.Any() ?? true)
                {
                    item   = rand.Next(moviesArray.Length);
                    result = await _cache.GetOrAddAsync($"{CacheKeys.FanartTv}movie{moviesArray[item]}", () => FanartTvApi.GetMovieImages(moviesArray[item].ToString(), key.Value), DateTimeOffset.Now.AddDays(1));
                }

                var otherRand = new Random();
                var res       = otherRand.Next(result.moviebackground.Length);

                movieUrl = result.moviebackground[res].url;
            }
            if (tvArray.Length > 0)
            {
                var item   = rand.Next(tvArray.Length);
                var result = await _cache.GetOrAddAsync($"{CacheKeys.FanartTv}tv{tvArray[item]}", () => FanartTvApi.GetTvImages(tvArray[item], key.Value), DateTimeOffset.Now.AddDays(1));

                while (!result.showbackground?.Any() ?? true)
                {
                    item   = rand.Next(tvArray.Length);
                    result = await _cache.GetOrAddAsync($"{CacheKeys.FanartTv}tv{tvArray[item]}", () => FanartTvApi.GetTvImages(tvArray[item], key.Value), DateTimeOffset.Now.AddDays(1));
                }
                var otherRand = new Random();
                var res       = otherRand.Next(result.showbackground.Length);

                tvUrl = result.showbackground[res].url;
            }

            if (!string.IsNullOrEmpty(movieUrl) && !string.IsNullOrEmpty(tvUrl))
            {
                var result = rand.Next(2);
                if (result == 0)
                {
                    return new { url = movieUrl }
                }
                ;
                if (result == 1)
                {
                    return new { url = tvUrl }
                }
                ;
            }

            if (!string.IsNullOrEmpty(movieUrl))
            {
                return(new { url = movieUrl });
            }
            return(new { url = tvUrl });
        }
    }
}
Пример #7
0
        public async Task <string> GetMovieBanner(string movieDbId)
        {
            var key = await _cache.GetOrAddAsync(CacheKeys.FanartTv, () => Config.GetAsync(Store.Entities.ConfigurationTypes.FanartTv), DateTimeOffset.Now.AddDays(1));

            var images = await _cache.GetOrAddAsync($"{CacheKeys.FanartTv}movie{movieDbId}", () => FanartTvApi.GetMovieImages(movieDbId, key.Value), DateTimeOffset.Now.AddDays(1));

            if (images == null)
            {
                return(string.Empty);
            }

            if (images.moviebackground?.Any() ?? false)
            {
                var enImage = images.moviebackground.Where(x => x.lang == "en").OrderByDescending(x => x.likes).Select(x => x.url).FirstOrDefault();
                if (enImage == null)
                {
                    return(images.moviebackground.OrderByDescending(x => x.likes).Select(x => x.url).FirstOrDefault());
                }
                return(enImage);
            }

            return(string.Empty);
        }
Пример #8
0
        public async Task <string> GetTvPoster(int tvdbid)
        {
            if (tvdbid <= 0)
            {
                return(string.Empty);
            }
            var key = await _cache.GetOrAddAsync(CacheKeys.FanartTv, () => Config.GetAsync(Store.Entities.ConfigurationTypes.FanartTv), DateTimeOffset.Now.AddDays(1));

            var images = await _cache.GetOrAddAsync($"{CacheKeys.FanartTv}tv{tvdbid}", () => FanartTvApi.GetTvImages(tvdbid, key.Value), DateTimeOffset.Now.AddDays(1));

            if (images == null)
            {
                return(string.Empty);
            }

            if (images.tvposter?.Any() ?? false)
            {
                var enImage = images.tvposter.Where(x => x.lang == "en").OrderByDescending(x => x.likes).Select(x => x.url).FirstOrDefault();
                if (enImage == null)
                {
                    return(images.tvposter.OrderByDescending(x => x.likes).Select(x => x.url).FirstOrDefault());
                }
                return(enImage);
            }

            if (images.tvthumb?.Any() ?? false)
            {
                return(images.tvthumb.OrderBy(x => x.likes).Select(x => x.url).FirstOrDefault());
            }

            return(string.Empty);
        }