private async Task updateMediaPosterAsync(ListView inSender, MediaSearchResult inMedia, string inOverrideImageAddressPrefix = null)
        {
            // Written, 21.09.2020

            if (inMedia?.poster_path is null)
            {
                this.imageLoading_label.Text = "No poster present..";
            }
            else
            {
                if (inMedia.poster_image is null)
                {
                    this.imageLoading_label.Text = "Loading poster..";
                    try
                    {
                        await inMedia.retrieveMediaImages(inOverrideImageAddressPrefix);
                    }
                    catch
                    {
                        this.imageLoading_label.Text = "Error loading poster";
                        return;
                    }
                }
            }
            //if (inMedia == (inSender?.SelectedItems[0].Tag))
            this.updatePosterImageDisplay();
            this.imageLoading_label.Text = string.Empty;
        }
        /// <summary>
        /// Updates the search media actions.
        /// </summary>
        private async Task updateSearchMediaActionsAsync()
        {
            // Written, 17.12.2019

            if (this.searchResults_listView.SelectedItems.Count == 1)
            {
                MediaSearchResult media = this.searchResults_listView.SelectedItems[0].Tag as MediaSearchResult;
                this.search_selectedMedia              = media;
                this.actions_groupBox.Text             = "Actions: " + media.name;
                this.mediaPoster_pictureBox.Image      = media.poster_image;
                this.search_viewDetails_button.Enabled = true;
                this.search_viewDetails_button.Visible = true;
                this.favoriteMediaItem_button.Enabled  = true;
                this.favoriteMediaItem_button.Visible  = true;
                this.watchMediaItem_button.Enabled     = true;
                this.watchMediaItem_button.Visible     = true;
                if (media is MovieSearchResult)
                {
                    this.yts_button.Enabled = true;
                    this.yts_button.Visible = true;
                    this.yts_button.Text    = "Search YTS";
                }
                else
                {
                    this.yts_button.Enabled = false;
                    this.yts_button.Visible = false;
                    this.yts_button.Text    = "yts_button";
                }
                List <IdResultObject> favoritedMedia = new List <IdResultObject>();
                favoritedMedia.AddRange(this.viewAccount.favoritedMovies);
                favoritedMedia.AddRange(this.viewAccount.favoritedTvSeries);
                bool favorited = favoritedMedia.Any(_fm => _fm.id == media.id);
                this.favoriteMediaItem_button.Text = !favorited ? "favorite" : "unfavorite";
                List <IdResultObject> watchlistMedia = new List <IdResultObject>();
                watchlistMedia.AddRange(this.viewAccount.watchlistMovies);
                watchlistMedia.AddRange(this.viewAccount.watchlistTvSeries);
                bool watchlisted = watchlistMedia.Any(_wm => _wm.id == media.id);
                this.watchMediaItem_button.Text     = !watchlisted ? "watch" : "unwatch";
                this.search_viewDetails_button.Text = "View Details: " + media.name;
                await this.updateMediaPosterAsync(this.searchResults_listView, media);
            }
            else
            {
                this.actions_groupBox.Text             = "Actions";
                this.search_viewDetails_button.Enabled = false;
                this.search_viewDetails_button.Visible = false;
                this.favoriteMediaItem_button.Enabled  = false;
                this.favoriteMediaItem_button.Visible  = false;
                this.watchMediaItem_button.Enabled     = false;
                this.watchMediaItem_button.Visible     = false;
                this.yts_button.Enabled             = false;
                this.yts_button.Visible             = false;
                this.search_viewDetails_button.Text = "View Details";
                this.mediaPoster_pictureBox.Image   = null;
                this.imageLoading_label.Text        = string.Empty;
            }
        }
        public void ApiTest()
        {
            ParsedMedia parsedMedia = _filenameParser.Parse("The.Secret.Life.of.Walter.Mitty.2013.1080p.BluRay.x264.YIFY");

            MediaSearchResult searchResult = _apiSearchService.SearchMultiByQuery(parsedMedia.Title)[0];
            MediaDetail       apiResult    = _apiSearchService.GetItemDetail(searchResult.MediaType, searchResult.Id);

            Console.WriteLine(apiResult);
        }
        /// <summary>
        /// Initializes a new isntance of this. and sets the media.
        /// </summary>
        /// <param name="inMedia">Sets the media to this.</param>
        public ViewReviewsDialog(MediaSearchResult inMedia)
        {
            InitializeComponent();

            // Written, 21.01.2020

            this.media          = inMedia;
            this.selectedReview = this.media.reviews[0];
            this.init();
        }
Example #5
0
        /// <summary>
        /// Initializes a new instance of this.
        /// </summary>
        /// <param name="inMedia">The media to view.</param>
        public ViewMediaDialog(MediaSearchResult inMedia, ViewAccount inViewAccount)
        {
            // Written, 17.12.2019

            InitializeComponent();

            this.media       = inMedia;
            this.viewAccount = inViewAccount;
            this.Text        = String.Format("View Details - {0}", this.media.name);
        }
        /// <summary>
        /// updates the favorite media actions.
        /// </summary>
        /// <param name="inSender">Listview sender.</param>
        /// <param name="inMediaType">The media type that is to be updated.</param>
        private async Task updateHomeMediaActionsAsync(ListView inSender, MediaSearchResult inMedia = null)
        {
            // Written, 24.12.2019

            if (inSender?.SelectedItems.Count == 1 || inMedia != null)
            {
                MediaSearchResult media = (inSender?.SelectedItems[0].Tag as MediaSearchResult) ?? inMedia;
                if (media != null)
                {
                    this.home_selectedMedia              = media;
                    this.actions_groupBox.Text           = "Actions: " + media.name;
                    this.mediaPoster_pictureBox.Image    = media.poster_image;
                    this.home_viewDetails_button.Enabled = true;
                    this.home_viewDetails_button.Visible = true;
                    this.movieRefresh_button.Enabled     = true;
                    this.movieRefresh_button.Visible     = true;
                    this.tvRefresh_button.Enabled        = true;
                    this.tvRefresh_button.Visible        = true;
                    if (media is MovieSearchResult)
                    {
                        this.yts_button.Enabled = true;
                        this.yts_button.Visible = true;
                        this.yts_button.Text    = "Search YTS";
                    }
                    else
                    {
                        this.yts_button.Enabled = false;
                        this.yts_button.Visible = false;
                        this.yts_button.Text    = "yts_button";
                    }
                    this.home_viewDetails_button.Text = "View Details: " + media.name;
                    await this.updateMediaPosterAsync(inSender, media);
                }
            }
            else
            {
                this.actions_groupBox.Text           = "Actions";
                this.home_viewDetails_button.Enabled = false;
                this.home_viewDetails_button.Visible = false;
                this.movieRefresh_button.Enabled     = false;
                this.movieRefresh_button.Visible     = false;
                this.tvRefresh_button.Enabled        = false;
                this.tvRefresh_button.Visible        = false;
                this.yts_button.Enabled           = false;
                this.yts_button.Visible           = false;
                this.home_viewDetails_button.Text = "View Details";
                this.mediaPoster_pictureBox.Image = null;
                this.imageLoading_label.Text      = string.Empty;
            }
        }
Example #7
0
        public static List <MediaControl> GetMediaSearchResultAsMediaControls(MediaSearchResult mediaSearchResult)
        {
            var  mediaControls = new List <MediaControl>();
            Page httpHandler   = (Page)HttpContext.Current.Handler;

            foreach (ParsnipData.Media.Media temp in mediaSearchResult.Media)
            {
                MediaControl myMediaControl = (MediaControl)httpHandler.LoadControl("~/Custom_Controls/Media/MediaControl.ascx");
                myMediaControl.MySearch = mediaSearchResult.SearchTerms;
                myMediaControl.MyMedia  = temp;
                mediaControls.Add(myMediaControl);
            }

            return(mediaControls.ToList());
        }
        private async void search_button_Click(object sender, EventArgs e)
        {
            // Written, 10.12.2019

            this.searchInput_textBox.Enabled = false;
            this.search_button.Enabled       = false;
            this.search_button.Text          = "Searching..";
            if (!String.IsNullOrEmpty(this.searchInput_textBox.Text))
            {
                this.preUpdateLists(this.searchResults_listView);
                await this.updateSearchMediaActionsAsync();

                MultiSearchResult multiSearch = await MultiSearchResult.searchAsync(this.searchInput_textBox.Text, 1);

                List <ListViewItem> items = new List <ListViewItem>();
                for (int i = 0; i < ApplicationInfomation.NUMBER_OF_ITEMS_PER_PAGE; i++)
                {
                    MediaSearchResult media = multiSearch.movie_results[i];
                    if (media == null)
                    {
                        media = multiSearch.tv_results[i];
                    }
                    if (media != null)
                    {
                        string   mediaTypeString = media is MovieSearchResult ? "Movie" : media is TvSearchResult ? "Tv" : "Null";
                        string[] subItems        = new string[]
                        {
                            media.name,
                            media.overview,
                            media.release_date,
                            media.vote_average.ToString(),
                            mediaTypeString
                        };
                        items.Add(new ListViewItem(subItems)
                        {
                            Tag = media
                        });
                    }
                }
                this.postUpdateLists(this.searchResults_listView, items.ToArray());
            }
            this.searchInput_textBox.Enabled = true;
            this.search_button.Enabled       = true;
            this.search_button.Text          = "Search";
        }
        public async Task <IHttpActionResult> SearchFiles(ODataActionParameters parameters)
        {
            MediaSearchResult result = null;

            await this.ProcessEntityAsync(async() =>
            {
                var maxTop = WebApiCachingControllingData.Data().MaxTop;
                var query  = parameters.GetValueSafe <MediaSearchQuery>("Query") ?? new MediaSearchQuery {
                    PageSize = maxTop
                };

                query.PageSize = Math.Min(query.PageSize, maxTop);

                result = await Service.SearchFilesAsync(query, _defaultLoadFlags);
            });

            return(Ok(result.Select(x => Convert(x)).AsQueryable()));
        }
        private async void watchMediaItem_button_Click(object sender, EventArgs e)
        {
            // Written, 01.01.2020

            this.watchMediaItem_button.Enabled = false;
            this.watchMediaItem_button.Text    = "processing..";
            MediaSearchResult     selectedResult   = this.searchResults_listView.SelectedItems[0].Tag as MediaSearchResult;
            MediaTypeEnum         mediaType        = selectedResult is TvSearchResult ? MediaTypeEnum.tv : MediaTypeEnum.movie;
            List <IdResultObject> watchlistedMedia = new List <IdResultObject>();

            watchlistedMedia.AddRange(this.viewAccount.watchlistMovies);
            watchlistedMedia.AddRange(this.viewAccount.watchlistTvSeries);
            bool watchlisted = watchlistedMedia.Any(_fm => _fm.id == selectedResult.id);

            await this.viewAccount.user.watchlistMediaItem(mediaType, selectedResult.id, !watchlisted);

            switch (mediaType)
            {
            case MediaTypeEnum.movie:
                await this.viewAccount.retrieveWatchlistMoviesAsync();

                break;

            case MediaTypeEnum.tv:
                await this.viewAccount.retrieveWatchlistTvSeriesAsync();

                break;
            }
            this.watchMediaItem_button.Text = "updating..";
            if (mediaType == MediaTypeEnum.movie)
            {
                await this.updateHomeMoviesAsync();
            }
            else
            {
                await this.updateHomeTvSeriesAsync();
            }
            await this.updateSearchMediaActionsAsync();

            this.watchMediaItem_button.Enabled = true;
        }
        private async void viewDetails_button_Click(object sender, EventArgs e)
        {
            // Written, 31.12.2019

            MediaSearchResult mediaToView     = this.getMediaToView();
            ViewMediaDialog   viewMediaDialog = new ViewMediaDialog(mediaToView, this.viewAccount);

            viewMediaDialog.ShowDialog();

            if (this.tabControl.SelectedTab == this.search_tabPage)
            {
                await this.updateSearchMediaActionsAsync();
            }
            if (mediaToView is TvSearchResult)
            {
                await this.updateHomeTvSeriesAsync();
            }
            else if (mediaToView is MovieSearchResult)
            {
                await this.updateHomeMoviesAsync();
            }
        }
Example #12
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);
            }
        }
        static async Task Main(string[] args)
        {
            // Written, 01.12.2019

            Console.WriteLine("The Library v1.1 Review Test\nEnter Phrase and press Enter to search for movie & tv series reviews");
            string searchPhrase = Console.ReadLine();
            bool   searchOK     = true;

            MovieSearchResult[] movieSearchResults = null;
            Console.WriteLine("\n\nMovie Search Function\n-------------------------------------------");
            try
            {
                movieSearchResults = await MovieSearchResult.searchAsync(searchPhrase, 1);

                for (int i = 0; i < movieSearchResults.GetLength(0); i++)
                {
                    Console.WriteLine("{0}.) {1}", i + 1, movieSearchResults[i].name);
                }
                Console.WriteLine("Total Results: " + movieSearchResults.GetLength(0));
            }
            catch
            {
                searchOK = false;
            }
            TvSearchResult[] tvSearchResults = null;
            Console.WriteLine("\n\nTv Search Function\n----------------------------------------------");
            try
            {
                tvSearchResults = await TvSearchResult.searchAsync(searchPhrase, 1);

                for (int i = 0; i < tvSearchResults.GetLength(0); i++)
                {
                    Console.WriteLine("{0}.) {1}", i + movieSearchResults.GetLength(0) + 1, tvSearchResults[i].name);
                }
                Console.WriteLine("Total Results: " + tvSearchResults.GetLength(0));
            }
            catch
            {
                searchOK = false;
            }
            if (searchOK)
            {
                if (movieSearchResults.GetLength(0) + tvSearchResults.GetLength(0) > 0)
                {
                    Console.WriteLine("Enter movie or tv series number to retrieve details.");
                    if (Int32.TryParse(Console.ReadLine(), out int searchNum))
                    {
                        try
                        {
                            MediaSearchResult result = null;

                            if (searchNum <= movieSearchResults.GetLength(0))
                            {
                                result = movieSearchResults[searchNum - 1];
                            }
                            else
                            {
                                int tvSearchNum = searchNum - movieSearchResults.GetLength(0);
                                if (tvSearchNum <= tvSearchResults.GetLength(0))
                                {
                                    result = tvSearchResults[tvSearchNum - 1];
                                }
                                else
                                {
                                    throw new NullReferenceException("result is null.");
                                }
                            }
                            if (result is MovieSearchResult)
                            {
                                Console.WriteLine("[MOVIE] Selected, {0}\nRetrieving movie reviews for ID: {1}..", result.name, result.id);
                                await(result as MovieSearchResult).retrieveReviewsAsync();
                            }
                            else
                            {
                                if (result is TvSearchResult)
                                {
                                    Console.WriteLine("[TV] Selected, {0}\nRetrieving tv series reviews for ID: {1}..", result.name, result.id);
                                    await(result as TvSeriesResult).retrieveReviewsAsync();
                                }
                            }
                            if (result.reviews.GetLength(0) < 1)
                            {
                                Console.WriteLine("\nNo reviews recorded");
                            }
                            else
                            {
                                for (int i = 0; i < result.reviews.GetLength(0); i++)
                                {
                                    Review review = result.reviews[i];
                                    Console.WriteLine("\n{0}.) {1} by {2}\n{3}\n...See [{4}]", i + 1, review.reviewID, review.author, review.content, review.url);
                                }
                            }
                        }
                        catch (NullReferenceException)
                        {
                            Console.WriteLine("Error: NullReferenceException. Probably number out of range.");
                        }
                    }
                    else
                    {
                        Console.WriteLine("\nError: number expected");
                    }
                }
                else
                {
                    Console.WriteLine("\nNo results found");
                }
            }
            Console.WriteLine("\n\nPress R to restart or press any key to exit");
            if (Console.ReadKey().Key == ConsoleKey.R)
            {
                Console.Clear();
                await Main(null);
            }
        }
        // Written, 24.11.2019

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

            Console.WriteLine("The Library v1.1 Search Test\nEnter Phrase and press Enter to search for movies and tv series individually ");
            string searchPhrase = Console.ReadLine();
            bool   searchOK     = true;

            MovieSearchResult[] movieSearchResults = null;
            Console.WriteLine("\n\nMovie Search Function\n-------------------------------------------");
            try
            {
                movieSearchResults = await MovieSearchResult.searchAsync(searchPhrase, 1);

                for (int i = 0; i < movieSearchResults.GetLength(0); i++)
                {
                    Console.WriteLine("{0}.) {1}", i + 1, movieSearchResults[i].name);
                }
                Console.WriteLine("Total Results: " + movieSearchResults.GetLength(0));
            }
            catch
            {
                searchOK = false;
            }
            TvSearchResult[] tvSearchResults = null;
            Console.WriteLine("\n\nTv Search Function\n----------------------------------------------");
            try
            {
                tvSearchResults = await TvSearchResult.searchAsync(searchPhrase, 1);

                for (int i = 0; i < tvSearchResults.GetLength(0); i++)
                {
                    Console.WriteLine("{0}.) {1}", i + movieSearchResults.GetLength(0) + 1, tvSearchResults[i].name);
                }
                Console.WriteLine("Total Results: " + tvSearchResults.GetLength(0));
            }
            catch
            {
                searchOK = false;
            }
            if (searchOK)
            {
                if (movieSearchResults.GetLength(0) + tvSearchResults.GetLength(0) > 0)
                {
                    Console.WriteLine("Enter movie or tv series number to retrieve details.");
                    if (Int32.TryParse(Console.ReadLine(), out int searchNum))
                    {
                        try
                        {
                            MediaSearchResult result = null;

                            if (searchNum <= movieSearchResults.GetLength(0))
                            {
                                result = movieSearchResults[searchNum - 1];
                            }
                            else
                            {
                                int tvSearchNum = searchNum - movieSearchResults.GetLength(0);
                                if (tvSearchNum <= tvSearchResults.GetLength(0))
                                {
                                    result = tvSearchResults[tvSearchNum - 1];
                                }
                                else
                                {
                                    throw new NullReferenceException("result is null.");
                                }
                            }
                            if (result is TvSearchResult)
                            {
                                Console.WriteLine("[TV] Selected, {0}\nRetrieving tv series details for ID: {1}..", (result as TvSearchResult).name, result.id);
                                TvSeriesResult tvResult = await TvSeriesResult.retrieveDetailsAsync(result.id);

                                Console.WriteLine("\nDETAILS RETRIEVED:\nName: {0}\nFirst Aired: {1}\nOverview: {2}\nRating: {3}\nSeasons #: {4}\nEpisodes #: {5}\nAvg ep runtime: {6}minutes\nType: {7}\nStatus: {8}",
                                                  tvResult.name, tvResult.release_date, tvResult.overview, tvResult.vote_average, tvResult.number_of_seasons, tvResult.number_of_episodes, tvResult.episode_run_time[0], tvResult.type, tvResult.status);
                            }
                            else
                            {
                                if (result is MovieSearchResult)
                                {
                                    Console.WriteLine("[MOVIE] Selected, {0}\nRetrieving movie details for ID: {1}..", (result as MovieSearchResult).name, result.id);
                                    MovieResult movieResult = await MovieResult.retrieveDetailsAsync(result.id);

                                    Console.WriteLine("\nDETAILS RETRIEVED:\nName: {0}\nRelease Date: {1}\nOverview: {2}\nRating: {3}",
                                                      movieResult.name, movieResult.release_date, movieResult.overview, movieResult.vote_average);
                                }
                            }
                        }
                        catch (NullReferenceException)
                        {
                            Console.WriteLine("Error: NullReferenceException. Probably number out of range.");
                        }
                    }
                    else
                    {
                        Console.WriteLine("\nError: number expected");
                    }
                }
                else
                {
                    Console.WriteLine("\nNo results found");
                }
            }
            Console.WriteLine("\n\nPress R to restart or press any key to exit");
            if (Console.ReadKey().Key == ConsoleKey.R)
            {
                Console.Clear();
                await Main(null);
            }
        }
        // Written, 27.11.2019

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

            Console.WriteLine("The Library v1.1 Search People Test\nEnter Phrase and press Enter to search for people");
            string searchPhrase = Console.ReadLine();
            bool   searchOK     = true;

            PeopleSearchResult[] peopleSearchResults = null;
            Console.WriteLine("\n\nPeople Search Function\n-------------------------------------------");
            try
            {
                peopleSearchResults = await PeopleSearchResult.searchAsync(searchPhrase, 1);

                for (int i = 0; i < peopleSearchResults.GetLength(0); i++)
                {
                    Console.WriteLine("{0}.) {1}", i + 1, peopleSearchResults[i].id);
                }
                Console.WriteLine("Total Results: " + peopleSearchResults.GetLength(0));
            }
            catch
            {
                searchOK = false;
            }
            if (searchOK)
            {
                if (peopleSearchResults.GetLength(0) > 0)
                {
                    Console.WriteLine("Enter people number to retrieve details.");
                    if (Int32.TryParse(Console.ReadLine(), out int searchNum))
                    {
                        try
                        {
                            PersonResult result = null;

                            if (searchNum <= peopleSearchResults.GetLength(0))
                            {
                                result = await PersonResult.retrieveDetailsAsync(peopleSearchResults[searchNum - 1].id);

                                result.known_for = peopleSearchResults[searchNum - 1].known_for;
                            }
                            else
                            {
                                throw new NullReferenceException("result is null");
                            }
                            Console.WriteLine("Selected PersonID: {0}\nName: {1}\nAdult Content: {2}\nProfile Image Path: {3}",
                                              result.id, result.name, result.adult ? "Yes" : "No", result.profile_path);
                            if (result.known_for != null)
                            {
                                if (result.known_for.GetLength(0) > 0)
                                {
                                    Console.WriteLine("Known for ({0}):", result.known_for.GetLength(0));
                                    for (int i = 0; i < result.known_for.GetLength(0); i++)
                                    {
                                        MediaSearchResult mediaSearchResult = null;
                                        switch (result.known_for[i].mediaType)
                                        {
                                        case MediaTypeEnum.movie:
                                            mediaSearchResult = await MovieResult.retrieveDetailsAsync(result.known_for[i].id);

                                            break;

                                        case MediaTypeEnum.tv:
                                            mediaSearchResult = await TvSeriesResult.retrieveDetailsAsync(result.known_for[i].id);

                                            break;
                                        }

                                        Console.WriteLine("\t{2}.) [{1}] ID: {0}", result.known_for[i].id, result.known_for[i].mediaTypeString, i + 1);
                                        if (mediaSearchResult != null)
                                        {
                                            Console.WriteLine("\t{0} ({1})", mediaSearchResult.name, mediaSearchResult.release_date);
                                        }
                                    }
                                }
                            }
                        }
                        catch (NullReferenceException ex)
                        {
                            Console.WriteLine("Error: NullReferenceException. Probably number out of range. STACKTRACE: {0}", ex.StackTrace);
                        }
                    }
                    else
                    {
                        Console.WriteLine("\nError: number expected");
                    }
                }
                else
                {
                    Console.WriteLine("\nNo results found");
                }
            }
            Console.WriteLine("\n\nPress R to restart or press any key to exit");
            if (Console.ReadKey().Key == ConsoleKey.R)
            {
                Console.Clear();
                await Main(null);
            }
        }