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; } } }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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()); } }
private void AddData(MovieItemDetail m) { TimeAPIService.CurrentDetail = m; ViewModel.AddData(); ChangeBG(); }
public MovieDetailViewModel() { MovieDetail = new MovieItemDetail(); Source = new ObservableCollection <PostItem>(); }