private bool IsPostRestricted(TwitterStatus status) { var _current = new PostInfo("", "", "", ""); _current.CreatedAt = status.CreatedAt; _current.Id = status.IdStr; if (status.Text == null) { _current.Text = ""; } else { _current.Text = status.Text; } _current.UserId = status.User.IdStr; if (_current.Equals(_prev)) { return true; } _prev.CreatedAt = _current.CreatedAt; _prev.Id = _current.Id; _prev.Text = _current.Text; _prev.UserId = _current.UserId; return false; }
private PostClass CreatePostsFromStatusData(TwitterStatus status) { return CreatePostsFromStatusData(status, false); }
private PostClass CreatePostsFromStatusData(TwitterStatus status, bool favTweet) { var post = new PostClass(); TwitterEntities entities; string sourceHtml; post.StatusId = status.Id; if (status.RetweetedStatus != null) { var retweeted = status.RetweetedStatus; post.CreatedAt = MyCommon.DateTimeParse(retweeted.CreatedAt); //Id post.RetweetedId = retweeted.Id; //本文 post.TextFromApi = retweeted.Text; entities = retweeted.MergedEntities; sourceHtml = retweeted.Source; //Reply先 post.InReplyToStatusId = retweeted.InReplyToStatusId; post.InReplyToUser = retweeted.InReplyToScreenName; post.InReplyToUserId = status.InReplyToUserId; if (favTweet) { post.IsFav = true; } else { //幻覚fav対策 var tc = TabInformations.GetInstance().GetTabByType(MyCommon.TabUsageType.Favorites); post.IsFav = tc.Contains(retweeted.Id); } if (retweeted.Coordinates != null) post.PostGeo = new PostClass.StatusGeo { Lng = retweeted.Coordinates.Coordinates[0], Lat = retweeted.Coordinates.Coordinates[1] }; //以下、ユーザー情報 var user = retweeted.User; if (user == null || user.ScreenName == null || status.User.ScreenName == null) return null; post.UserId = user.Id; post.ScreenName = user.ScreenName; post.Nickname = user.Name.Trim(); post.ImageUrl = user.ProfileImageUrlHttps; post.IsProtect = user.Protected; //Retweetした人 post.RetweetedBy = status.User.ScreenName; post.RetweetedByUserId = status.User.Id; post.IsMe = post.RetweetedBy.ToLower().Equals(_uname); } else { post.CreatedAt = MyCommon.DateTimeParse(status.CreatedAt); //本文 post.TextFromApi = status.Text; entities = status.MergedEntities; sourceHtml = status.Source; post.InReplyToStatusId = status.InReplyToStatusId; post.InReplyToUser = status.InReplyToScreenName; post.InReplyToUserId = status.InReplyToUserId; if (favTweet) { post.IsFav = true; } else { //幻覚fav対策 var tc = TabInformations.GetInstance().GetTabByType(MyCommon.TabUsageType.Favorites); post.IsFav = tc.Contains(post.StatusId) && TabInformations.GetInstance()[post.StatusId].IsFav; } if (status.Coordinates != null) post.PostGeo = new PostClass.StatusGeo { Lng = status.Coordinates.Coordinates[0], Lat = status.Coordinates.Coordinates[1] }; //以下、ユーザー情報 var user = status.User; if (user == null || user.ScreenName == null) return null; post.UserId = user.Id; post.ScreenName = user.ScreenName; post.Nickname = user.Name.Trim(); post.ImageUrl = user.ProfileImageUrlHttps; post.IsProtect = user.Protected; post.IsMe = post.ScreenName.ToLower().Equals(_uname); } //HTMLに整形 string textFromApi = post.TextFromApi; post.Text = CreateHtmlAnchor(textFromApi, post.ReplyToList, entities, post.Media); post.TextFromApi = textFromApi; post.TextFromApi = this.ReplaceTextFromApi(post.TextFromApi, entities); post.TextFromApi = WebUtility.HtmlDecode(post.TextFromApi); post.TextFromApi = post.TextFromApi.Replace("<3", "\u2661"); post.QuoteStatusIds = GetQuoteTweetStatusIds(entities) .Where(x => x != post.StatusId && x != post.RetweetedId) .Distinct().ToArray(); //Source整形 var source = ParseSource(sourceHtml); post.Source = source.Item1; post.SourceUri = source.Item2; post.IsReply = post.ReplyToList.Contains(_uname); post.IsExcludeReply = false; if (post.IsMe) { post.IsOwl = false; } else { if (followerId.Count > 0) post.IsOwl = !followerId.Contains(post.UserId); } post.IsDm = false; return post; }
private async Task SetRecentStatusAsync(TwitterStatus status, CancellationToken cancellationToken) { var atlist = new List<string>(); if (status != null) { var html = await this.twitter.CreateHtmlAnchorAsync(status.Text, atlist, status.MergedEntities, null); html = this.mainForm.createDetailHtml(html + " Posted at " + MyCommon.DateTimeParse(status.CreatedAt) + " via " + status.Source); if (cancellationToken.IsCancellationRequested) return; this.RecentPostBrowser.DocumentText = html; } else { this.RecentPostBrowser.DocumentText = Properties.Resources.ShowUserInfo2; } }