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)); }
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)); } }