fix: handle TweetWithVisibilityResults and rest_id fallback in CreateTweet response
This commit is contained in:
parent
9d847cd18e
commit
d5a47d4a67
2 changed files with 21 additions and 11 deletions
|
|
@ -7,6 +7,7 @@ import (
|
|||
)
|
||||
|
||||
type tweet struct {
|
||||
RestID string `json:"rest_id"`
|
||||
Core struct {
|
||||
UserResults struct {
|
||||
Result struct {
|
||||
|
|
|
|||
29
tweet.go
29
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
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue