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(),
|
r.RetweetID, r.TweetID, r.RetweetedByID, r.RetweetedAt.Unix(),
|
||||||
)
|
)
|
||||||
if err != nil {
|
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
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -290,8 +290,15 @@ func (api_v2_tweet APIV2Tweet) ToTweetTrove() TweetTrove {
|
|||||||
|
|
||||||
retweet := Retweet{}
|
retweet := Retweet{}
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
retweet.RetweetID = TweetID(api_v2_tweet.ID)
|
retweet.RetweetID = TweetID(api_v2_tweet.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.TweetID = TweetID(api_v2_tweet.RetweetedStatusResult.Result.ID)
|
||||||
|
}
|
||||||
|
|
||||||
retweet.RetweetedByID = UserID(api_v2_tweet.APITweet.UserID)
|
retweet.RetweetedByID = UserID(api_v2_tweet.APITweet.UserID)
|
||||||
retweet.RetweetedAt, err = TimestampFromString(api_v2_tweet.APITweet.CreatedAt)
|
retweet.RetweetedAt, err = TimestampFromString(api_v2_tweet.APITweet.CreatedAt)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -659,3 +659,23 @@ func TestTweetWithWarning(t *testing.T) {
|
|||||||
assert.Len(trove.Tweets, 2)
|
assert.Len(trove.Tweets, 2)
|
||||||
assert.Len(trove.Users, 3)
|
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