Example #1
0
        /// <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);
        }
Example #2
0
        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;
            }
        }
Example #3
0
        /// <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);
        }