Skip to content

Commit

Permalink
Merge pull request #5 from bogosj/master
Browse files Browse the repository at this point in the history
Ensure all tweets are retrieved.
  • Loading branch information
jadametz authored Nov 13, 2020
2 parents 3667927 + 1cd1a9b commit ed5e127
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 10 deletions.
1 change: 0 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ The following environment variables exist for configuration:
|`CONSUMERSECRET`|Twitter API credential|Y||
|`DAYSTOKEEP`|The number of days to keep Tweets before they're deleted|N|`30`|
|`IGNOREID`|The Tweet ID of a Tweet you'd like to be ignored (e.g. a pinned Tweet)|N||
|`TWEETCOUNT`|This is an API detail - the number of Tweets that'll be retrieved, `3200` is the max|N|`3200`|
|`INCLUDERETWEETS`|Whether RT's should be included in the search/deletion|N|`true`|
|`SCREENNAME`|Your Twitter handle|Y||

Expand Down
1 change: 0 additions & 1 deletion config/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ type Config struct {
ConsumerSecret string `required:"true"`
DaysToKeep int `default:"30"`
IgnoreID int64
TweetCount int `default:"3200"`
IncludeRetweets bool `default:"true"`
ScreenName string `required:"true"`
}
Expand Down
31 changes: 23 additions & 8 deletions twitter/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,16 +33,31 @@ func (t *Twitter) DeleteOldTweets() (deleted, ignored, skipped int, err error) {
ignored = 0
skipped = 0

tweets, _, err := t.Client.Timelines.UserTimeline(&twitter.UserTimelineParams{
Count: t.Config.TweetCount,
ScreenName: t.Config.ScreenName,
IncludeRetweets: twitter.Bool(t.Config.IncludeRetweets),
})
if err != nil {
return deleted, ignored, skipped, err
lastTweetID := int64(0)
var allTweets []twitter.Tweet
for {
params := &twitter.UserTimelineParams{
Count: 200,
ScreenName: t.Config.ScreenName,
IncludeRetweets: twitter.Bool(t.Config.IncludeRetweets),
}
if lastTweetID != 0 {
params.MaxID = lastTweetID - 1
}
tweets, _, err := t.Client.Timelines.UserTimeline(params)
if len(tweets) == 0 {
break
}
if err != nil {
return deleted, ignored, skipped, err
}
allTweets = append(allTweets, tweets...)
for _, t := range tweets {
lastTweetID = t.ID
}
}

for _, tweet := range tweets {
for _, tweet := range allTweets {
if tweet.ID == t.Config.IgnoreID {
ignored++
continue
Expand Down

0 comments on commit ed5e127

Please sign in to comment.