From 9b85d81b893c2e7c98de641731a6ccd63e8965c1 Mon Sep 17 00:00:00 2001 From: Alessio Date: Sat, 14 Oct 2023 18:59:10 -0300 Subject: [PATCH] Fix new video format and new user suspended format --- pkg/scraper/api_types.go | 8 +++----- pkg/scraper/test_responses/api_v2/user_suspended.json | 2 +- pkg/scraper/tweet.go | 6 ++++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/pkg/scraper/api_types.go b/pkg/scraper/api_types.go index bb44e9c..9caaf36 100644 --- a/pkg/scraper/api_types.go +++ b/pkg/scraper/api_types.go @@ -289,14 +289,12 @@ func (u UserResponse) ConvertToAPIUser() APIUser { } // Banned users, new version - if u.Data.User.Result.UnavailableMessage.Text != "" { - if u.Data.User.Result.Reason == "Suspended" { - ret.IsBanned = true - } + if u.Data.User.Result.Reason == "Suspended" { + ret.IsBanned = true } // Deleted users - if ret.ID == 0 && ret.ScreenName == "" && u.Data.User.Result.UnavailableMessage.Text == "" { + if ret.ID == 0 && ret.ScreenName == "" && u.Data.User.Result.Reason != "Suspended" { ret.DoesntExist = true } diff --git a/pkg/scraper/test_responses/api_v2/user_suspended.json b/pkg/scraper/test_responses/api_v2/user_suspended.json index 1fd1c02..740d0f9 100644 --- a/pkg/scraper/test_responses/api_v2/user_suspended.json +++ b/pkg/scraper/test_responses/api_v2/user_suspended.json @@ -1 +1 @@ -{"data":{"user":{"result":{"__typename":"UserUnavailable","unavailable_message":{"rtl":false,"text":"Twitter suspends accounts that violate the Twitter Rules. Learn more","entities":[{"fromIndex":58,"toIndex":68,"ref":{"type":"TimelineUrl","url":"https://help.twitter.com/rules-and-policies/twitter-rules","urlType":"ExternalUrl"}}]},"reason":"Suspended"}}}} +{"data":{"user":{"result":{"__typename":"UserUnavailable","message":"User is suspended","reason":"Suspended"}}}} diff --git a/pkg/scraper/tweet.go b/pkg/scraper/tweet.go index e889859..674df6b 100644 --- a/pkg/scraper/tweet.go +++ b/pkg/scraper/tweet.go @@ -169,8 +169,10 @@ func ParseSingleTweet(apiTweet APITweet) (ret Tweet, err error) { // Process images for _, media := range apiTweet.Entities.Media { - if media.Type != "photo" { // TODO: remove this eventually - panic(fmt.Errorf("Unknown media type %q:\n %w", media.Type, EXTERNAL_API_ERROR)) + if media.Type != "photo" { + // Videos now have an entry in "Entities.Media" but they can be ignored; the useful bit is in ExtendedEntities + // So skip ones that aren't "photo" + continue } new_image := ParseAPIMedia(media) new_image.TweetID = ret.ID