From 12a2dc9744c1b9c36a2fe85deb990c1e2569aab1 Mon Sep 17 00:00:00 2001 From: Alessio Date: Fri, 17 Nov 2023 20:03:59 -0800 Subject: [PATCH] Fix crashing on user's own tweet threads because of the composer button --- pkg/scraper/api_types_v2.go | 4 ++++ pkg/scraper/api_types_v2_test.go | 13 +++++++++++++ .../test_responses/api_v2/composer_entry_item.json | 1 + 3 files changed, 18 insertions(+) create mode 100644 pkg/scraper/test_responses/api_v2/composer_entry_item.json diff --git a/pkg/scraper/api_types_v2.go b/pkg/scraper/api_types_v2.go index ab4de6c..d8f6669 100644 --- a/pkg/scraper/api_types_v2.go +++ b/pkg/scraper/api_types_v2.go @@ -492,6 +492,10 @@ func (e APIV2Entry) ToTweetTrove() TweetTrove { // "Show More" replies button in a thread on Tweet Detail page continue } + if item.Item.ItemContent.ItemType == "TimelineTweetComposer" { + // Composer button + continue + } trove, err := item.Item.ItemContent.TweetResults.ToTweetTrove() if errors.Is(err, ErrorIsTombstone) { // TODO: do something with tombstones in replies to a Tweet Detail diff --git a/pkg/scraper/api_types_v2_test.go b/pkg/scraper/api_types_v2_test.go index 8716ed2..8509f14 100644 --- a/pkg/scraper/api_types_v2_test.go +++ b/pkg/scraper/api_types_v2_test.go @@ -959,3 +959,16 @@ func TestTweetWithImplicitQuotedTombstone(t *testing.T) { assert.True(t2.IsStub) assert.Equal(t2.TombstoneType, "unavailable") } + +func TestNoFailOnComposerEntry(t *testing.T) { + assert := assert.New(t) + require := require.New(t) + data, err := os.ReadFile("test_responses/api_v2/composer_entry_item.json") + require.NoError(err) + var entry_result APIV2Entry + err = json.Unmarshal(data, &entry_result) + require.NoError(err) + + trove := entry_result.ToTweetTrove() + assert.Len(trove.Tweets, 0) +} diff --git a/pkg/scraper/test_responses/api_v2/composer_entry_item.json b/pkg/scraper/test_responses/api_v2/composer_entry_item.json new file mode 100644 index 0000000..5e82422 --- /dev/null +++ b/pkg/scraper/test_responses/api_v2/composer_entry_item.json @@ -0,0 +1 @@ +{"entryId":"conversationthread-1725402903517815175","sortIndex":"7497969134259727904","content":{"entryType":"TimelineTimelineModule","__typename":"TimelineTimelineModule","items":[{"entryId":"conversationthread-34534534354535-tweetcomposer--1","item":{"itemContent":{"itemType":"TimelineTweetComposer","__typename":"TimelineTweetComposer","composerDisplayType":"SelfThread","composerButtonText":"Add another post","composerButtonUrl":{"url":"twitter://post?in_reply_to_status_id=34534534354535","urlType":"DeepLink"}}}}],"displayType":"VerticalConversation","clientEventInfo":{"details":{"conversationDetails":{"conversationSection":"HighQuality"}}}}}