diff --git a/timeline_v2.go b/timeline_v2.go index 324b0b5..d6cb7b8 100644 --- a/timeline_v2.go +++ b/timeline_v2.go @@ -7,7 +7,8 @@ import ( ) type tweet struct { - Core struct { + RestID string `json:"rest_id"` + Core struct { UserResults struct { Result struct { IsBlueVerified bool `json:"is_blue_verified"` diff --git a/tweet.go b/tweet.go index cc3d73a..2704021 100644 --- a/tweet.go +++ b/tweet.go @@ -20,29 +20,38 @@ type newTweet struct { Data struct { CreateTweet struct { TweetResults struct { - Result tweet `json:"result"` + Result result `json:"result"` } `json:"tweet_results"` } `json:"create_tweet"` } `json:"data"` } func (newTweet *newTweet) parse() *Tweet { - var tweet = &newTweet.Data.CreateTweet.TweetResults.Result + r := &newTweet.Data.CreateTweet.TweetResults.Result - if tweet.NoteTweet.NoteTweetResults.Result.Text != "" { - tweet.Legacy.FullText = tweet.NoteTweet.NoteTweetResults.Result.Text + t := &r.tweet + if r.Typename == "TweetWithVisibilityResults" { + t = &r.Tweet } - var legacy *legacyTweet = &tweet.Legacy - var user *legacyUser = &tweet.Core.UserResults.Result.Legacy + + if t.RestID != "" && t.Legacy.IDStr == "" { + t.Legacy.IDStr = t.RestID + } + + if t.NoteTweet.NoteTweetResults.Result.Text != "" { + t.Legacy.FullText = t.NoteTweet.NoteTweetResults.Result.Text + } + var legacy *legacyTweet = &t.Legacy + var user *legacyUser = &t.Core.UserResults.Result.Legacy tw := parseLegacyTweet(user, legacy) if tw == nil { return nil } - if tw.Views == 0 && tweet.Views.Count != "" { - tw.Views, _ = strconv.Atoi(tweet.Views.Count) + if tw.Views == 0 && t.Views.Count != "" { + tw.Views, _ = strconv.Atoi(t.Views.Count) } - if tweet.QuotedStatusResult.Result != nil { - tw.QuotedStatus = tweet.QuotedStatusResult.Result.parse() + if t.QuotedStatusResult.Result != nil { + tw.QuotedStatus = t.QuotedStatusResult.Result.parse() } return tw }