Пример #1
0
        private async void AutoSuggestBox_QuerySubmitted(AutoSuggestBox sender, AutoSuggestBoxQuerySubmittedEventArgs args)
        {
            if (args.ChosenSuggestion != null)
            {
                //从提示框中选择某一项时触发
            }
            else
            {
                //用户在输入时敲回车或者点击右边按钮确认输入时触发
                if (searchMap.ContainsKey(args.QueryText))
                {
                    LoadToOther.Visibility = Windows.UI.Xaml.Visibility.Visible;
                    MovieItemDetail data = await TimeAPIService.GetMovieDetail(searchMap[args.QueryText]);

                    LoadToOther.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
                    NavigationService.Navigate(typeof(MovieDetailViewModel).FullName, data, new SuppressNavigationTransitionInfo());
                }
                else
                {
                    searchMap = await TimeAPIService.GetMoviesTitleList(args.QueryText);

                    sender.ItemsSource = searchMap.Keys;
                }
            }
        }
Пример #2
0
        /// <summary>
        /// 解析剧照
        /// </summary>
        /// <param name="m"></param>
        /// <param name="obj"></param>
        /// <returns></returns>
        private static MovieItemDetail ParseMovieImage(MovieItemDetail m, JsonObject obj)
        {
            var list        = obj["images"].GetArray();
            int eachCount   = 0;
            int currentType = 0;

            m.Images = new List <PostItem>();
            foreach (var i in list)
            {
                var img = i.GetObject();
                // 每种剧照只获取3张
                int typeNew = (int)img["type"].GetNumber();
                if (currentType == typeNew)
                {
                    if (eachCount > 2)
                    {
                        continue;
                    }
                    eachCount++;
                }
                else
                {
                    eachCount   = 0;
                    currentType = typeNew;
                }
                m.Images.Add(new PostItem()
                {
                    ID    = img["id"].GetNumber().ToString(),
                    Title = img["imageSubtypeDes"].GetString(),
                    Image = img["image"].GetString(),
                });
            }
            return(m);
        }
Пример #3
0
        /// <summary>
        /// 解析评论
        /// </summary>
        /// <param name="m"></param>
        /// <param name="obj"></param>
        /// <returns></returns>
        private static MovieItemDetail ParseMovieComment(MovieItemDetail m, JsonObject obj)
        {
            var data = obj["data"].GetObject();

            m.Comments = new List <CommentItem>();
            var plusList = (data["plus"].GetObject())["list"].GetArray();

            foreach (var plus in plusList)
            {
                var com = plus.GetObject();
                m.Comments.Add(new CommentItem()
                {
                    Content      = com["content"].GetString(),
                    HeadImg      = com["headImg"].GetString(),
                    NickName     = com["nickname"].GetString(),
                    Rating       = com["rating"].GetNumber(),
                    LocationName = com["locationName"].GetString(),
                });
            }
            var miniList = (data["mini"].GetObject())["list"].GetArray();

            foreach (var mini in miniList)
            {
                var com = mini.GetObject();
                m.Comments.Add(new CommentItem()
                {
                    Content      = com["content"].GetString(),
                    HeadImg      = com["headImg"].GetString(),
                    NickName     = com["nickname"].GetString(),
                    Rating       = com["rating"].GetNumber(),
                    LocationName = com["locationName"].GetString(),
                });
            }
            return(m);
        }
Пример #4
0
        /// <summary>
        /// 解析演员表
        /// </summary>
        /// <param name="m"></param>
        /// <param name="obj"></param>
        /// <returns></returns>
        private static MovieItemDetail ParseMoviePeople(MovieItemDetail m, JsonObject obj)
        {
            var list = obj["types"].GetArray();

            m.ActorList    = new List <ActorItem>();
            m.DirectorList = new List <PeopleItem>();
            foreach (var t in list)
            {
                if ((t.GetObject())["typeNameEn"].GetString() == "Actor")
                {
                    foreach (var people in (t.GetObject())["persons"].GetArray())
                    {
                        var p = people.GetObject();
                        if (p["name"].GetString() == "" || p["personate"].GetString() == "")
                        {
                            continue;
                        }
                        m.ActorList.Add(new ActorItem()
                        {
                            ID        = p["id"].GetNumber().ToString(),
                            NameCn    = p["name"].GetString(),
                            NameEn    = p["nameEn"].GetString(),
                            Image     = p["image"].GetString().Replace("_1280X720X2", "_100X100"),
                            RoleName  = p["personate"].GetString(),
                            RoleImage = p.ContainsKey("roleCover") ? p["roleCover"].GetString() : "",
                            TypeName  = (t.GetObject())["typeName"].GetString(),
                        });
                    }
                }
                else if ((t.GetObject())["typeNameEn"].GetString() == "Director")
                {
                    foreach (var people in (t.GetObject())["persons"].GetArray())
                    {
                        var p = people.GetObject();
                        m.DirectorList.Add(new PeopleItem()
                        {
                            ID       = p["id"].GetNumber().ToString(),
                            NameCn   = p["name"].GetString(),
                            NameEn   = p["nameEn"].GetString(),
                            Image    = p["image"].GetString().Replace("_1280X720X2", "_100X100"),
                            TypeName = (t.GetObject())["typeName"].GetString(),
                        });
                    }
                }
            }
            return(m);
        }
Пример #5
0
        /// <summary>
        /// 解析预告片
        /// </summary>
        /// <param name="m"></param>
        /// <param name="obj"></param>
        /// <returns></returns>
        private static MovieItemDetail ParseMovieVideo(MovieItemDetail m, JsonObject obj)
        {
            var list = obj["videoList"].GetArray();

            m.Videos = new List <VideoItem>();
            foreach (var video in list)
            {
                var v = video.GetObject();
                m.Videos.Add(new VideoItem()
                {
                    Image  = v["image"].GetString(),
                    Url    = v["hightUrl"].GetString(),
                    Title  = v["title"].GetString(),
                    Length = (int)v["length"].GetNumber(),
                    Type   = (int)v["type"].GetNumber(),
                });
            }
            return(m);
        }
Пример #6
0
        /// <summary>
        /// 获取电影详情(包括详情,影评,预告片,剧照,演员表)
        /// 需使用5个API
        /// </summary>
        /// <param name="id">电影ID</param>
        /// <returns></returns>
        public static async Task <MovieItemDetail> GetMovieDetail(string id)
        {
            // 详情
            try
            {
                JsonObject detail = await Singleton <NetService> .Instance.GetJson(string.Format(APIMovieDetail, LocationGuangZhou, id));

                var movieDetail = ParseMovieDetail(detail["data"].GetObject());

                // 演员表
                JsonObject people = await Singleton <NetService> .Instance.GetJson(string.Format(APIMovieCredits, id));

                movieDetail = ParseMoviePeople(movieDetail, people);

                // 影评
                JsonObject comments = await Singleton <NetService> .Instance.GetJson(string.Format(APIMovieComment, id));

                movieDetail = ParseMovieComment(movieDetail, comments);

                // 预告片
                JsonObject videos = await Singleton <NetService> .Instance.GetJson(string.Format(APIMovieVideo, id));

                movieDetail = ParseMovieVideo(movieDetail, videos);

                // 剧照
                JsonObject images = await Singleton <NetService> .Instance.GetJson(string.Format(APIMovieImage, id));

                movieDetail = ParseMovieImage(movieDetail, images);

                CurrentDetail = movieDetail;
                if (GetedDetail == null)
                {
                    GetedDetail = new Dictionary <string, MovieItemDetail>();
                }
                GetedDetail[movieDetail.ID] = movieDetail;
                return(movieDetail);
            }
            catch (Exception)
            {
                return(new MovieItemDetail());
            }
        }
Пример #7
0
 private void AddData(MovieItemDetail m)
 {
     TimeAPIService.CurrentDetail = m;
     ViewModel.AddData();
     ChangeBG();
 }
 public MovieDetailViewModel()
 {
     MovieDetail = new MovieItemDetail();
     Source      = new ObservableCollection <PostItem>();
 }