From 57f32b03f7821204611ac1ee0e87fc7ba43e57c2 Mon Sep 17 00:00:00 2001 From: Valentine Date: Thu, 25 Apr 2024 23:23:29 +0300 Subject: [PATCH] fix nsfw gettweet --- timeline_v2.go | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/timeline_v2.go b/timeline_v2.go index 85388ba..7cd5c90 100644 --- a/timeline_v2.go +++ b/timeline_v2.go @@ -4,9 +4,8 @@ import ( "strconv" ) -type result struct { - Typename string `json:"__typename"` - Core struct { +type tweet struct { + Core struct { UserResults struct { Result struct { IsBlueVerified bool `json:"is_blue_verified"` @@ -30,11 +29,26 @@ type result struct { Legacy legacyTweet `json:"legacy"` } +type result struct { + Typename string `json:"__typename"` + tweet + Tweet tweet `json:"tweet"` +} + func (result *result) parse() *Tweet { if result.NoteTweet.NoteTweetResults.Result.Text != "" { result.Legacy.FullText = result.NoteTweet.NoteTweetResults.Result.Text } - tw := parseLegacyTweet(&result.Core.UserResults.Result.Legacy, &result.Legacy) + var tweet *legacyTweet + var user *legacyUser + if result.Typename == "TweetWithVisibilityResults" { + tweet = &result.Tweet.Legacy + user = &result.Tweet.Core.UserResults.Result.Legacy + } else { + tweet = &result.Legacy + user = &result.Core.UserResults.Result.Legacy + } + tw := parseLegacyTweet(user, tweet) if tw == nil { return nil } @@ -222,7 +236,7 @@ func (conversation *threadedConversation) parse() []*Tweet { var tweets []*Tweet for _, instruction := range conversation.Data.ThreadedConversationWithInjectionsV2.Instructions { for _, entry := range instruction.Entries { - if entry.Content.ItemContent.TweetResults.Result.Typename == "Tweet" { + if entry.Content.ItemContent.TweetResults.Result.Typename == "Tweet" || entry.Content.ItemContent.TweetResults.Result.Typename == "TweetWithVisibilityResults" { if tweet := entry.Content.ItemContent.TweetResults.Result.parse(); tweet != nil { if entry.Content.ItemContent.TweetDisplayType == "SelfThread" { tweet.IsSelfThread = true @@ -231,7 +245,7 @@ func (conversation *threadedConversation) parse() []*Tweet { } } for _, item := range entry.Content.Items { - if item.Item.ItemContent.TweetResults.Result.Typename == "Tweet" { + if item.Item.ItemContent.TweetResults.Result.Typename == "Tweet" || item.Item.ItemContent.TweetResults.Result.Typename == "TweetWithVisibilityResults" { if tweet := item.Item.ItemContent.TweetResults.Result.parse(); tweet != nil { if item.Item.ItemContent.TweetDisplayType == "SelfThread" { tweet.IsSelfThread = true