feat: add IsBlueVerified to profile responses

Add support for Twitter's blue verification status in profile responses:
- Add IsBlueVerified field to user struct in GetProfile response
- Update parseProfile and parseProfileV2 to include blue verification status
- Add ProfileImageShape and HasGraduatedAccess fields to profile responses

This change ensures the API correctly returns blue verification status for both direct profile queries and timeline responses.
This commit is contained in:
Brendan Playford 2025-01-22 11:14:03 -08:00
parent 7226460e05
commit 388445d4c2
No known key found for this signature in database
GPG key ID: 663CFC091C1BDFBD
2 changed files with 32 additions and 24 deletions

View file

@ -53,6 +53,7 @@ type user struct {
RestID string `json:"rest_id"` RestID string `json:"rest_id"`
Legacy legacyUser `json:"legacy"` Legacy legacyUser `json:"legacy"`
Message string `json:"message"` Message string `json:"message"`
IsBlueVerified bool `json:"is_blue_verified"`
} `json:"result"` } `json:"result"`
} `json:"user"` } `json:"user"`
} `json:"data"` } `json:"data"`
@ -118,7 +119,9 @@ func (s *Scraper) GetProfile(username string) (Profile, error) {
return Profile{}, fmt.Errorf("either @%s does not exist or is private", username) return Profile{}, fmt.Errorf("either @%s does not exist or is private", username)
} }
return parseProfile(jsn.Data.User.Result.Legacy), nil profile := parseProfile(jsn.Data.User.Result.Legacy)
profile.IsBlueVerified = jsn.Data.User.Result.IsBlueVerified
return profile, nil
} }
func (s *Scraper) GetProfileByID(userID string) (Profile, error) { func (s *Scraper) GetProfileByID(userID string) (Profile, error) {
@ -175,7 +178,9 @@ func (s *Scraper) GetProfileByID(userID string) (Profile, error) {
return Profile{}, fmt.Errorf("either @%s does not exist or is private", userID) return Profile{}, fmt.Errorf("either @%s does not exist or is private", userID)
} }
return parseProfile(jsn.Data.User.Result.Legacy), nil profile := parseProfile(jsn.Data.User.Result.Legacy)
profile.IsBlueVerified = jsn.Data.User.Result.IsBlueVerified
return profile, nil
} }
// GetUserIDByScreenName from API // GetUserIDByScreenName from API

View file

@ -392,6 +392,9 @@ func parseProfileV2(user userResult) Profile {
FollowingCount: u.FavouritesCount, FollowingCount: u.FavouritesCount,
FriendsCount: u.FriendsCount, FriendsCount: u.FriendsCount,
IsVerified: u.Verified, IsVerified: u.Verified,
IsBlueVerified: user.IsBlueVerified,
ProfileImageShape: user.ProfileImageShape,
HasGraduatedAccess: user.HasGraduatedAccess,
LikesCount: u.FavouritesCount, LikesCount: u.FavouritesCount,
ListedCount: u.ListedCount, ListedCount: u.ListedCount,
Location: u.Location, Location: u.Location,