Пример #1
0
        //关键词搜索
        private async void SearchButton_Click(object sender, RoutedEventArgs e)
        {
            if (Search.Text != "")
            {
                ProgressRingInListPage.IsActive   = true;
                ProgressRingInListPage.Visibility = Visibility.Visible;
                try
                {
                    int tmp = 0;

                    for (int i = 1; i <= 5; i++)
                    {
                        //请求电影
                        String     url     = String.Format("https://api.themoviedb.org/3/search/movie?api_key=7888f0042a366f63289ff571b68b7ce0&query={0}&page={1}", Search.Text, i);
                        HttpClient client  = new HttpClient();
                        String     Jresult = await client.GetStringAsync(url);

                        DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(QueryMovieList));
                        MemoryStream   ms             = new MemoryStream(Encoding.UTF8.GetBytes(Jresult));
                        QueryMovieList queryMovieList = (QueryMovieList)serializer.ReadObject(ms);
                        //请求电视剧
                        url     = String.Format("https://api.themoviedb.org/3/search/tv?api_key=7888f0042a366f63289ff571b68b7ce0&query={0}&page={1}", Search.Text, i);
                        Jresult = await client.GetStringAsync(url);

                        serializer = new DataContractJsonSerializer(typeof(QueryTVList));
                        ms         = new MemoryStream(Encoding.UTF8.GetBytes(Jresult));
                        QueryTVList queryTVList = (QueryTVList)serializer.ReadObject(ms);

                        if (queryMovieList.total_results + queryTVList.total_results == 0)
                        {
                            await new Windows.UI.Popups.MessageDialog("Found nothing, please change the key words and try again! ").ShowAsync();
                            break;
                        }
                        else
                        {
                            if (tmp == 0)
                            {
                                viewModel.clear();
                            }
                            tmp++;
                            foreach (var result in queryMovieList.results)
                            {
                                if (result.poster_path != null)
                                {
                                    result.poster_path = "https://image.tmdb.org/t/p/w500" + result.poster_path;
                                }
                                else
                                {
                                    result.poster_path = "Assets/defaultPoster.jpg";
                                }
                                viewModel.AddMovieResult(result);
                            }
                            foreach (var result in queryTVList.results)
                            {
                                if (result.poster_path != null)
                                {
                                    result.poster_path = "https://image.tmdb.org/t/p/w500" + result.poster_path;
                                }
                                else
                                {
                                    result.poster_path = "Assets/defaultPoster.jpg";
                                }
                                viewModel.AddTVResult(result);
                            }
                        }
                    }
                }
                catch
                {
                    await new Windows.UI.Popups.MessageDialog("Opps! Something wrong happened to the connection, please check your network and try again! ").ShowAsync();
                }

                //Kill the waiting ring.
                ProgressRingInListPage.IsActive   = false;
                ProgressRingInListPage.Visibility = Visibility.Collapsed;
            }
            else
            {
                await new Windows.UI.Popups.MessageDialog("Please enter key words first! ").ShowAsync();
            }
        }
Пример #2
0
        //private  void showProgressRing() {
        //    MyProgressRing.IsActive = true;
        //    MyProgressRing.Visibility = Visibility.Visible;
        //}

        //private  void killProgressRing() {
        //    MyProgressRing.IsActive = false;
        //    MyProgressRing.Visibility = Visibility.Collapsed;
        //}

        private async void InitializeList()
        {
            try
            {
                if (!first)
                {
                    ListFrame.Navigate(typeof(ListPage), VideoTypeComboBox.SelectedIndex);
                }
                //如果选择的是电影类型
                if (VideoTypeComboBox.SelectedIndex == 0)
                {
                    //API请求,language是电影语言, page是搜索的页,用于支持翻页功能,翻一次页请求一次(API本身的限制只能这么做), Mgenre电影的类型, releaseYear电影放映日期, sortBy电影以热度还是评分排序
                    String     url     = String.Format("https://api.themoviedb.org/3/discover/movie?api_key=7888f0042a366f63289ff571b68b7ce0&include_adult=false{0}&page={1}{2}{3}{4}", language, page, Mgenre, releaseYear, sortBy);
                    HttpClient client  = new HttpClient();
                    String     Jresult = await client.GetStringAsync(url);

                    //本想把这句放在最前面,跳转更快,但是ListFrame实例化需要一点时间,放在前面会报空指针的错误,只好先请求网络给程序一点时间
                    if (first)
                    {
                        first = false;
                        ListFrame.Navigate(typeof(ListPage), 0);
                    }
                    //Where is the Show progress ring code? Not here!
                    //Written in XAML for initialization!!!

                    //序列化电影列表,通过其解析Json,Models中除了Starlist,其他类都是通过网站json2csharp.com自动生成的
                    DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(QueryMovieList));
                    MemoryStream   ms             = new MemoryStream(Encoding.UTF8.GetBytes(Jresult));
                    QueryMovieList queryMovieList = (QueryMovieList)serializer.ReadObject(ms);

                    //没有这类型的电影
                    if (queryMovieList.total_results == 0)
                    {
                        await new Windows.UI.Popups.MessageDialog("Found nothing, please change the key words and try again! ").ShowAsync();
                    }
                    else
                    {
                        viewModel.clear();
                        foreach (var result in queryMovieList.results)
                        {
                            //该电影有海报
                            if (result.poster_path != null)
                            {
                                //修改为能访问的网址
                                result.poster_path = "https://image.tmdb.org/t/p/w500" + result.poster_path;
                            }
                            //没有海报
                            else
                            {
                                //使用默认海报
                                result.poster_path = "Assets/defaultPoster.jpg";
                            }
                            //添加到ViewModel
                            viewModel.AddMovieResult(result);
                        }
                    }
                }
                else
                {
                    //同理
                    String     url     = String.Format("https://api.themoviedb.org/3/discover/tv?api_key=7888f0042a366f63289ff571b68b7ce0&include_adult=false{0}&page={1}{2}{3}", language, page, Tgenre, sortBy);
                    HttpClient client  = new HttpClient();
                    String     Jresult = await client.GetStringAsync(url);

                    if (first)
                    {
                        first = false;
                        ListFrame.Navigate(typeof(ListPage), 1);
                    }
                    DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(QueryTVList));
                    MemoryStream ms          = new MemoryStream(Encoding.UTF8.GetBytes(Jresult));
                    QueryTVList  queryTVList = (QueryTVList)serializer.ReadObject(ms);

                    if (queryTVList.total_results == 0)
                    {
                        await new Windows.UI.Popups.MessageDialog("Found nothing, please change the key words and try again! ").ShowAsync();
                    }
                    else
                    {
                        viewModel.clear();
                        foreach (var result in queryTVList.results)
                        {
                            if (result.poster_path != null)
                            {
                                result.poster_path = "https://image.tmdb.org/t/p/w500" + result.poster_path;
                            }
                            else
                            {
                                result.poster_path = "Assets/defaultPoster.jpg";
                            }
                            viewModel.AddTVResult(result);
                        }
                    }
                }
            }
            catch
            {
                await new Windows.UI.Popups.MessageDialog("Opps! Something wrong happened to the connection, please check your network and try again! ").ShowAsync();
            }
            finally
            {
                MyProgressRing.IsActive   = false;
                MyProgressRing.Visibility = Visibility.Collapsed;
            }
        }