private async Task <List <Youtube> > GetVideosDetailsAsync(List <string> videoIds) { var videoIdsString = ""; foreach (var s in videoIds) { videoIdsString += s + ","; } var client = new HttpClient(); var json = await client.GetStringAsync(string.Format(apiUrlForVideosDetails, videoIdsString)); var youtubeItems = new List <Youtube>(); try { JObject response = JsonConvert.DeserializeObject <dynamic>(json); var items = response.Value <JArray>("items"); foreach (var item in items) { var snippet = item.Value <JObject>("snippet"); var statistics = item.Value <JObject>("statistics"); var youtubeItem = new Youtube { Title = snippet.Value <string>("title"), Description = snippet.Value <string>("description"), ChannelTitle = snippet.Value <string>("channelTitle"), PublishedAt = snippet.Value <DateTime>("publishedAt"), VideoId = item?.Value <string>("id"), DefaultThumbnailUrl = snippet?.Value <JObject>("thumbnails")?.Value <JObject>("default")?.Value <string>("url"), MediumThumbnailUrl = snippet?.Value <JObject>("thumbnails")?.Value <JObject>("medium")?.Value <string>("url"), HighThumbnailUrl = snippet?.Value <JObject>("thumbnails")?.Value <JObject>("high")?.Value <string>("url"), StandardThumbnailUrl = snippet?.Value <JObject>("thumbnails")?.Value <JObject>("standard")?.Value <string>("url"), MaxResThumbnailUrl = snippet?.Value <JObject>("thumbnails")?.Value <JObject>("maxres")?.Value <string>("url"), ViewCount = statistics?.Value <int>("viewCount"), LikeCount = statistics?.Value <int>("likeCount"), DislikeCount = statistics?.Value <int>("dislikeCount"), FavoriteCount = statistics?.Value <int>("favoriteCount"), CommentCount = statistics?.Value <int>("commentCount"), //Tags = (from tag in snippet?.Value<JArray>("tags") select tag.ToString())?.ToList() }; YoutubeItems.Add(youtubeItem); } foreach (var videos in YoutubeItems) { Videos.Add(videos); } LatestVideo = Videos.First(); } catch (Exception ex) { await App.Current.MainPage.DisplayAlert("", ex.Message, "Cancel"); } return(YoutubeItems); }
private async Task LoadData() { if (IsLoading) { return; } IsLoading = true; YoutubeItems.Clear(); var httpClient = new HttpClient(); var json = await httpClient.GetStringAsync(apiUrlForPlaylist); try { JObject jsonResponse = JsonConvert.DeserializeObject <dynamic>(json); var items = jsonResponse.Value <JArray>("items"); foreach (var item in items) { var snippet = item.Value <JObject>("snippet"); var youtubeItem = new YoutubeItem { Title = snippet.Value <string>("title"), Description = snippet.Value <string>("description"), ChannelTitle = snippet.Value <string>("channelTitle"), PublishedAt = snippet.Value <DateTime>("publishedAt"), VideoId = snippet?.Value <JObject>("resourceId")?.Value <string>("videoId"), DefaultThumbnailUrl = snippet?.Value <JObject>("thumbnails")?.Value <JObject>("default")?.Value <string>("url"), MediumThumbnailUrl = snippet?.Value <JObject>("thumbnails")?.Value <JObject>("medium")?.Value <string>("url"), HighThumbnailUrl = snippet?.Value <JObject>("thumbnails")?.Value <JObject>("high")?.Value <string>("url"), StandardThumbnailUrl = snippet?.Value <JObject>("thumbnails")?.Value <JObject>("standard")?.Value <string>("url"), MaxResThumbnailUrl = snippet?.Value <JObject>("thumbnails")?.Value <JObject>("maxres")?.Value <string>("url"), }; YoutubeItems.Add(youtubeItem); } } catch { // todo: handle an exception } finally { IsLoading = false; } }