示例#1
0
        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;
            }
        }