/// <summary> /// Получаем контент кнопки NEXT /// </summary> /// <param name="url"></param> /// <param name="queryId"></param> /// <param name="owner"></param> /// <param name="token"></param> /// <returns></returns> async Task <InstagramLoadViewModel> IInstagramService.InstagramNextAsync(string url, string queryId, string owner, string token) { var jsonNext = await GetNextJsonAsync(queryId, owner, COUNT, token); if (string.IsNullOrWhiteSpace(jsonNext)) { return(null); } var instagramNext = _jsonService.JsonConvertDeserializeObject <InstagramNext>(jsonNext); if (instagramNext.Status != "ok") { return(new InstagramLoadViewModel { Error = $"Instagram query error: {instagramNext.Message}" }); } var media = instagramNext?.Data?.User?.EdgeOwnerToTimelineMedia; if (media == null) { return(null); } var vkItemViewModels = media.Edges?.Select(prof => new VkItemViewModel { Likes = prof?.Node?.EdgeMediaPreviewLike?.Count, Coments = prof?.Node?.EdgeMediaToComment?.Count, Text = string.Join("\n", prof?.Node?.EdgeMediaToCaption?.Edges?.Select(o => o?.Node?.Text) ?? new List <string> { string.Empty }), Photo = new List <string> { prof?.Node?.DisplayUrl }, Date = prof?.Node?.TakenAtTimestamp }) .ToList(); if (media.PageInfo?.HasNextPage == true) { token = media.PageInfo?.EndCursor; } else { token = null; } var result = new InstagramLoadViewModel { Token = token, Owner = owner, VkItemViewModels = vkItemViewModels }; return(result); }
private async void _view_BLoadContent(object sender, EventArgs e) { try { _view.ToggleBtnLoadContent = false; InstagramLoadViewModel contentLoad = null; var instagramPage = _view.InstagramPage; if (string.IsNullOrWhiteSpace(instagramPage)) { _messegeService.ShowExclamation("Укажите страницу инстаграм"); return; } if (isNext) { var queryId = _view.QueryId; if (string.IsNullOrWhiteSpace(queryId)) { _messegeService.ShowExclamation("Укажите query_id"); return; } contentLoad = await _instagramService.InstagramNextAsync(instagramPage, queryId, owner, token); } else { contentLoad = await _instagramService.InstagramLoadAsync(instagramPage); isNext = true; } if (contentLoad != null) { token = contentLoad.Token; _view.IToken = token; owner = contentLoad.Owner; _view.IOwner = owner; vkItems = contentLoad.VkItemViewModels; } } catch (Exception ex) { _messegeService.ShowError(ex.Message); } finally { _view.ToggleBtnPostToVK = true; _view.ToggleBtnLoadContent = true; _view.BtnLoadContentText = "Загрузить еще"; _view.ToggleBtnLoadContent = true; } }
/// <summary> /// Получаем контент первой страници /// </summary> /// <param name="url"></param> /// <param name="queryId"></param> /// <returns></returns> async Task <InstagramLoadViewModel> IInstagramService.InstagramLoadAsync(string url) { var json = await GetInstagramJsonAsync(url); var instagram = _jsonService.JsonConvertDeserializeObject <Models.Instagram.Instagram>(json); var profiles = instagram?.EntryData?.ProfilePage; if (profiles == null) { return(null); } var token = profiles.FirstOrDefault()?.User?.Media?.PageInfo?.EndCursor; if (string.IsNullOrWhiteSpace(token)) { return(null); } var owner = profiles.FirstOrDefault()? .User?.Media?.Nodes?.FirstOrDefault()?.Owner?.Id; if (string.IsNullOrWhiteSpace(owner)) { return(null); } var vkItemViewModels = profiles.SelectMany(prof => prof?.User?.Media?.Nodes?.Select(node => new VkItemViewModel { Likes = node?.EdgeMediaPreviewLike?.Count ?? node?.Likes.Count, Coments = node?.EdgeMediaToComment?.Count ?? node.Comments?.Count, Text = string.Join("\n", node?.EdgeMediaToCaption?.Edges?.Select(o => o?.Node?.Text) ?? new List <string> { node?.Caption }), Photo = new List <string> { node?.DisplaySrc }, Date = node?.Date ?? node?.TakenAtTimestamp })) .ToList(); var result = new InstagramLoadViewModel { Token = token, Owner = owner, VkItemViewModels = vkItemViewModels }; return(result); }