add GetTweetsAndReplies and FetchTweetsAndReplies
This commit is contained in:
parent
0e07e464ba
commit
ec5d5dc117
4 changed files with 36 additions and 0 deletions
|
|
@ -1,5 +1,9 @@
|
|||
# Changelog
|
||||
|
||||
## v0.0.13
|
||||
|
||||
- Added methods `GetTweetsAndReplies`, `FetchTweetsAndReplies`, `FetchTweetsAndRepliesByUserID` thanks to @thewh1teagle
|
||||
|
||||
## v0.0.12
|
||||
|
||||
09.08.2024
|
||||
|
|
|
|||
|
|
@ -286,6 +286,8 @@ var cursor string
|
|||
tweets, cursor, err := scraper.FetchTweets("taylorswift13", 20, cursor)
|
||||
```
|
||||
|
||||
To get tweets and replies use `GetTweetsAndReplies`, `FetchTweetsAndReplies` and `FetchTweetsAndRepliesByUserID` methods.
|
||||
|
||||
### Get user medias
|
||||
|
||||
500 requests / 15 minutes
|
||||
|
|
|
|||
15
tweets.go
15
tweets.go
|
|
@ -12,6 +12,11 @@ func (s *Scraper) GetTweets(ctx context.Context, user string, maxTweetsNbr int)
|
|||
return getTweetTimeline(ctx, user, maxTweetsNbr, s.FetchTweets)
|
||||
}
|
||||
|
||||
// GetTweetsAndReplies returns channel with tweets and replies for a given user.
|
||||
func (s *Scraper) GetTweetsAndReplies(ctx context.Context, user string, maxTweetsNbr int) <-chan *TweetResult {
|
||||
return getTweetTimeline(ctx, user, maxTweetsNbr, s.FetchTweetsAndReplies)
|
||||
}
|
||||
|
||||
// FetchTweets gets tweets for a given user, via the Twitter frontend API.
|
||||
func (s *Scraper) FetchTweets(user string, maxTweetsNbr int, cursor string) ([]*Tweet, string, error) {
|
||||
userID, err := s.GetUserIDByScreenName(user)
|
||||
|
|
@ -25,6 +30,16 @@ func (s *Scraper) FetchTweets(user string, maxTweetsNbr int, cursor string) ([]*
|
|||
return s.FetchTweetsByUserID(userID, maxTweetsNbr, cursor)
|
||||
}
|
||||
|
||||
// FetchTweetsAndReplies gets tweets and replies for a given user, via the Twitter frontend API.
|
||||
func (s *Scraper) FetchTweetsAndReplies(user string, maxTweetsNbr int, cursor string) ([]*Tweet, string, error) {
|
||||
userID, err := s.GetUserIDByScreenName(user)
|
||||
if err != nil {
|
||||
return nil, "", err
|
||||
}
|
||||
|
||||
return s.FetchTweetsAndRepliesByUserID(userID, maxTweetsNbr, cursor)
|
||||
}
|
||||
|
||||
// FetchTweetsAndRepliesByUserID gets tweets and replies for a given userID, via the Twitter frontend GraphQL API.
|
||||
func (s *Scraper) FetchTweetsAndRepliesByUserID(userID string, maxReplysNbr int, cursor string) ([]*Tweet, string, error) {
|
||||
if maxReplysNbr > 200 {
|
||||
|
|
|
|||
|
|
@ -452,3 +452,18 @@ func TestGetForYouTweets(t *testing.T) {
|
|||
t.Errorf("Expected tweets count=%v, got: %v", maxTweetsNbr, count)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetTweetsAndReplies(t *testing.T) {
|
||||
if skipAuthTest {
|
||||
t.Skip("Skipping test due to environment variable")
|
||||
}
|
||||
|
||||
tweets, _, err := testScraper.FetchTweetsAndRepliesByUserID("17874544", 20, "")
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
if len(tweets) < 1 {
|
||||
t.Errorf("Got %d tweets", len(tweets))
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue