Fix error where retweets were not parsing properly sometimes
This commit is contained in:
parent
37525e58c0
commit
6830be3c87
@ -18,7 +18,7 @@ func (p Profile) SaveRetweet(r scraper.Retweet) error {
|
||||
r.RetweetID, r.TweetID, r.RetweetedByID, r.RetweetedAt.Unix(),
|
||||
)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Error executing SaveRetweet(%d):\n %w", r.RetweetID, err)
|
||||
return fmt.Errorf("Error executing SaveRetweet(%#v):\n %w", r, err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
@ -290,8 +290,15 @@ func (api_v2_tweet APIV2Tweet) ToTweetTrove() TweetTrove {
|
||||
|
||||
retweet := Retweet{}
|
||||
var err error
|
||||
|
||||
retweet.RetweetID = TweetID(api_v2_tweet.ID)
|
||||
retweet.TweetID = TweetID(api_v2_tweet.RetweetedStatusResult.Result.ID)
|
||||
if api_v2_tweet.RetweetedStatusResult.Result.Legacy.ID == 0 && api_v2_tweet.RetweetedStatusResult.Result.Tweet.Legacy.ID != 0 {
|
||||
// Tweet is a "TweetWithVisibilityResults" (See above comment for more).
|
||||
retweet.TweetID = TweetID(api_v2_tweet.RetweetedStatusResult.Result.Tweet.ID)
|
||||
} else {
|
||||
retweet.TweetID = TweetID(api_v2_tweet.RetweetedStatusResult.Result.ID)
|
||||
}
|
||||
|
||||
retweet.RetweetedByID = UserID(api_v2_tweet.APITweet.UserID)
|
||||
retweet.RetweetedAt, err = TimestampFromString(api_v2_tweet.APITweet.CreatedAt)
|
||||
if err != nil {
|
||||
|
@ -659,3 +659,23 @@ func TestTweetWithWarning(t *testing.T) {
|
||||
assert.Len(trove.Tweets, 2)
|
||||
assert.Len(trove.Users, 3)
|
||||
}
|
||||
|
||||
func TestRetweetWithVisibilityResults(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
require := require.New(t)
|
||||
data, err := os.ReadFile("test_responses/api_v2/retweet_with_visibility_results.json")
|
||||
require.NoError(err)
|
||||
var tweet_result APIV2Result
|
||||
err = json.Unmarshal(data, &tweet_result)
|
||||
require.NoError(err)
|
||||
|
||||
trove := tweet_result.ToTweetTrove(true)
|
||||
|
||||
assert.Len(trove.Retweets, 1)
|
||||
assert.Len(trove.Tweets, 1)
|
||||
assert.Len(trove.Users, 2)
|
||||
|
||||
rt, is_ok := trove.Retweets[1595999178593034241]
|
||||
require.True(is_ok)
|
||||
assert.Equal(rt.TweetID, TweetID(1595973736833892356))
|
||||
}
|
||||
|
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user