/// <summary>
        /// Retrieves trending media items (tv, movie, or people) for the day or week.
        /// </summary>
        /// <param name="inTrendingAllowedMediaTypes">Trending media to retrieve, (all, movie, tv, or people.</param>
        /// <param name="inTrendingTimeWindow">Trending time scale, (day or week)</param>
        public static async Task <Trending> retrieveTrendingAsync(TrendingAllowedMediaTypesEnum inTrendingAllowedMediaTypes, TrendingTimeWindowEnum inTrendingTimeWindow)
        {
            // Written, 01.12.2019

            string  address = String.Format("{0}/{1}/{2}?api_key={3}", ApplicationInfomation.TRENDING_ADDRESS, inTrendingAllowedMediaTypes, inTrendingTimeWindow, ApplicationInfomation.API_KEY);
            JObject jObject = await WebResponse.toJObject(await WebResponse.sendRequestAsync(new Uri(address)));

            JArray results = jObject["results"].ToObject <JArray>();
            List <IdResultObject> _results = new List <IdResultObject>();

            for (int i = 0; i < results.Count; i++)
            {
                JToken jToken = results[i];
                switch (jToken.ToObject <IdResultObjectWithMediaType>().mediaType)
                {
                case MediaTypeEnum.movie:
                    _results.Add(jToken.ToObject <MovieSearchResult>());
                    break;

                case MediaTypeEnum.tv:
                    _results.Add(jToken.ToObject <TvSearchResult>());
                    break;

                case MediaTypeEnum.person:
                    _results.Add(jToken.ToObject <PeopleSearchResult>());
                    break;
                }
            }
            return(new Trending
            {
                trendingResults = _results.ToArray()
            });
        }
Beispiel #2
0
        // Written, 02.12.2019

        static async Task Main(string[] args)
        {
            // Written, 02.12.2019

            Console.WriteLine("The Library v1.1 Trending Test\nEnter either, 'all', 'movie', 'tv' or 'person' to get trending items");
            string mediaTypeInput         = Console.ReadLine();
            bool   vaildTrendingMediaType = true;
            TrendingAllowedMediaTypesEnum trendMediaType = TrendingAllowedMediaTypesEnum.all;

            switch (mediaTypeInput)
            {
            case "all":
                trendMediaType = TrendingAllowedMediaTypesEnum.all;
                break;

            case "movie":
                trendMediaType = TrendingAllowedMediaTypesEnum.movie;
                break;

            case "tv":
                trendMediaType = TrendingAllowedMediaTypesEnum.tv;
                break;

            case "person":
                trendMediaType = TrendingAllowedMediaTypesEnum.person;
                break;

            default:
                vaildTrendingMediaType = false;
                break;
            }
            if (vaildTrendingMediaType)
            {
                Console.WriteLine("Enter either, 'day' or 'week' to get daily or weekly trending items.");
                string timeWindowInput      = Console.ReadLine();
                bool   vaildTimeWindowInput = true;
                TrendingTimeWindowEnum trendingTimeWindow = TrendingTimeWindowEnum.day;

                switch (timeWindowInput)
                {
                case "day":
                    trendingTimeWindow = TrendingTimeWindowEnum.day;
                    break;

                case "week":
                    trendingTimeWindow = TrendingTimeWindowEnum.week;
                    break;

                default:
                    vaildTimeWindowInput = false;
                    break;
                }
                if (vaildTimeWindowInput)
                {
                    Trending trending = await Trending.retrieveTrendingAsync(trendMediaType, trendingTimeWindow);

                    for (int i = 0; i < trending.trendingResults.GetLength(0); i++)
                    {
                        IdResultObject idResult = trending.trendingResults[i];

                        Console.Write("{0}.) [{1}]", i + 1, idResult.GetType().Name);

                        if (idResult is MediaSearchResult)
                        {
                            MediaSearchResult media = idResult as MediaSearchResult;
                            Console.Write(" | {0} ({1})", media.name, media.release_date);
                        }
                        else
                        {
                            if (idResult is PeopleSearchResult)
                            {
                                PersonResult person = await PersonResult.retrieveDetailsAsync(idResult.id);

                                Console.Write(" | {0} ({1})", person.name, person.birthday);
                            }
                        }
                        Console.WriteLine();
                    }
                }
                else
                {
                    Console.WriteLine("Error: Invaild time window input, '{0}'. Expecting either: 'day' or 'week'.", timeWindowInput);
                }
            }
            else
            {
                Console.WriteLine("Error: Invaild trend media type, '{0}'. Expecting one of: 'all', 'movie', 'tv' or 'person'.", mediaTypeInput);
            }
            Console.WriteLine("\n\nPress R to restart or press any key to exit");
            if (Console.ReadKey().Key == ConsoleKey.R)
            {
                Console.Clear();
                await Main(null);
            }
        }