コード例 #1
0
        public IResult <EdgeSavedMedia> GetSavedUserMedias(int limitPerPage = 12)
        {
            EdgeSavedMedia EdgeSavedMedia = new EdgeSavedMedia();

            EdgeSavedMedia.Edges = new List <EdgeSavedMediaEdges>();

            var _userAllSavedMedias = GetSavedUserMediasInit(_user.Username, limitPerPage);

            var ImageMedias   = _userAllSavedMedias.Data.Edges.Where(c => c.Node.Typename == MediaType.Image).ToList();
            var SidecarMedias = _userAllSavedMedias.Data.Edges.Where(c => c.Node.Typename == MediaType.Sidecar).ToList();
            var VideosMedias  = _userAllSavedMedias.Data.Edges.Where(c => c.Node.Typename == MediaType.Video).ToList();

            foreach (var image in ImageMedias)
            {
                EdgeSavedMedia.Edges.Add(new EdgeSavedMediaEdges()
                {
                    Node = image.Node
                });
            }

            foreach (var sidecar in SidecarMedias)
            {
                var shortcode = sidecar.Node.Shortcode;

                var sidecarShortcodeData = GetShortcodeSavedMedia(shortcode);

                EdgeSavedMedia.Edges.Add(new EdgeSavedMediaEdges()
                {
                    Node = sidecarShortcodeData.Data
                });
            }

            foreach (var video in VideosMedias)
            {
                var shortcode = video.Node.Shortcode;

                var videoShortcodeData = GetShortcodeSavedMedia(shortcode);

                EdgeSavedMedia.Edges.Add(new EdgeSavedMediaEdges()
                {
                    Node = videoShortcodeData.Data
                });
            }

            return(Result.Success(EdgeSavedMedia));
        }
コード例 #2
0
        private IResult <EdgeSavedMedia> GetSavedUserMediasInit(string username, int limitPerPage)
        {
            try
            {
                EdgeSavedMedia _EdgeSavedMedia = new EdgeSavedMedia();
                _EdgeSavedMedia.Edges = new List <EdgeSavedMediaEdges>();

                var user = GetUser(username).Data;
                _EdgeSavedMedia.Edges = user.EdgeSavedMedia.Edges;

                var userId    = user.Id;
                var endCursor = user.EdgeSavedMedia.PageInfo.EndCursor;

                var uri = string.Format(InstagramCustomApiConstants.USER_SAVED_MEDIAS_URL, userId, limitPerPage, endCursor);

                var variables = string.Format("{0}:{{\"id\":\"{1}\",\"first\":{2},\"after\":\"{3}\"}}", _user.UserRhxGis, userId, limitPerPage, endCursor);
                var signature = ApplicationHelper.CreateMD5(variables);

                var request = HttpHelper.GetDefaultRequest(uri);
                request.Headers["X-Instagram-GIS"] = signature;
                request.Headers["Cookie"]          = _user.UserCookie;

                var response = HttpHelper.GetDefaultResponse(request);
                var json     = response.ReadAsString();

                if (response.StatusCode != HttpStatusCode.OK)
                {
                    return(Result.UnExpectedResponse <EdgeSavedMedia>(response, json));
                }

                var    objRetorno      = JsonConvert.DeserializeObject <UserMedias>(json);
                var    medias          = objRetorno.Data.User.EdgeSavedMedia;
                string endCursorMedias = objRetorno.Data.User.EdgeSavedMedia.PageInfo.EndCursor;

                if (medias.PageInfo.HasNextPage)
                {
                    bool has_next_page = true;

                    do
                    {
                        var uriMedias = string.Format(InstagramCustomApiConstants.USER_SAVED_MEDIAS_URL, userId, limitPerPage, endCursorMedias);

                        var variablesMedias = string.Format("{0}:{{\"id\":\"{1}\",\"first\":{2},\"after\":\"{3}\"}}", _user.UserRhxGis, userId, limitPerPage, endCursorMedias);
                        var signatureMedias = ApplicationHelper.CreateMD5(variablesMedias);

                        var requestMedias = HttpHelper.GetDefaultRequest(uriMedias);
                        requestMedias.Headers["X-Instagram-GIS"] = signatureMedias;
                        requestMedias.Headers["Cookie"]          = _user.UserCookie;

                        var responseMedias = HttpHelper.GetDefaultResponse(requestMedias);
                        var jsonMedias     = responseMedias.ReadAsString();

                        if (responseMedias.StatusCode != HttpStatusCode.OK)
                        {
                            return(Result.UnExpectedResponse <EdgeSavedMedia>(responseMedias, jsonMedias));
                        }

                        var objRetornoMedias = JsonConvert.DeserializeObject <UserMedias>(jsonMedias);

                        objRetornoMedias.Data.User.EdgeSavedMedia.Edges.ForEach(c => medias.Edges.Add(c));

                        has_next_page = objRetornoMedias.Data.User.EdgeSavedMedia.PageInfo.HasNextPage;

                        endCursorMedias = objRetornoMedias.Data.User.EdgeSavedMedia.PageInfo.EndCursor;
                    } while (has_next_page);
                }

                medias.Edges.ForEach(c => _EdgeSavedMedia.Edges.Add(c));

                return(Result.Success(_EdgeSavedMedia));
            }
            catch (Exception ex)
            {
                return(Result.Fail <EdgeSavedMedia>(ex.Message));
            }
        }