fix nsfw gettweet

This commit is contained in:
Valentine 2024-04-25 23:23:29 +03:00
parent 6a0f92e314
commit 57f32b03f7

View file

@ -4,9 +4,8 @@ import (
"strconv" "strconv"
) )
type result struct { type tweet struct {
Typename string `json:"__typename"` Core struct {
Core struct {
UserResults struct { UserResults struct {
Result struct { Result struct {
IsBlueVerified bool `json:"is_blue_verified"` IsBlueVerified bool `json:"is_blue_verified"`
@ -30,11 +29,26 @@ type result struct {
Legacy legacyTweet `json:"legacy"` Legacy legacyTweet `json:"legacy"`
} }
type result struct {
Typename string `json:"__typename"`
tweet
Tweet tweet `json:"tweet"`
}
func (result *result) parse() *Tweet { func (result *result) parse() *Tweet {
if result.NoteTweet.NoteTweetResults.Result.Text != "" { if result.NoteTweet.NoteTweetResults.Result.Text != "" {
result.Legacy.FullText = 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 { if tw == nil {
return nil return nil
} }
@ -222,7 +236,7 @@ func (conversation *threadedConversation) parse() []*Tweet {
var tweets []*Tweet var tweets []*Tweet
for _, instruction := range conversation.Data.ThreadedConversationWithInjectionsV2.Instructions { for _, instruction := range conversation.Data.ThreadedConversationWithInjectionsV2.Instructions {
for _, entry := range instruction.Entries { 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 tweet := entry.Content.ItemContent.TweetResults.Result.parse(); tweet != nil {
if entry.Content.ItemContent.TweetDisplayType == "SelfThread" { if entry.Content.ItemContent.TweetDisplayType == "SelfThread" {
tweet.IsSelfThread = true tweet.IsSelfThread = true
@ -231,7 +245,7 @@ func (conversation *threadedConversation) parse() []*Tweet {
} }
} }
for _, item := range entry.Content.Items { 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 tweet := item.Item.ItemContent.TweetResults.Result.parse(); tweet != nil {
if item.Item.ItemContent.TweetDisplayType == "SelfThread" { if item.Item.ItemContent.TweetDisplayType == "SelfThread" {
tweet.IsSelfThread = true tweet.IsSelfThread = true