Change main application to use new API for user feeds

This commit is contained in:
Alessio 2022-01-24 20:19:08 -08:00
parent fb421215df
commit b261f095ad
2 changed files with 28 additions and 4 deletions

View File

@ -200,15 +200,16 @@ func fetch_tweet_conversation(tweet_identifier string) {
*/
func fetch_user_feed(handle string, how_many int) {
user, err := profile.GetUserByHandle(scraper.UserHandle(handle))
if err != nil {
die(err.Error(), false, -1)
die(fmt.Sprintf("Error getting user: %s\n %s", handle, err.Error()), false, -1)
}
tweets, retweets, users, err := scraper.GetUserFeedFor(user.ID, how_many);
// tweets, retweets, users, err := scraper.GetUserFeedFor(user.ID, how_many);
trove, err := scraper.GetUserFeedGraphqlFor(user.ID, how_many)
if err != nil {
die("Error scraping feed: " + err.Error(), false, -2)
die(fmt.Sprintf("Error scraping feed: %s\n %s", handle, err.Error()), false, -2)
}
tweets, retweets, users := trove.Transform();
for _, u := range users {
fmt.Println(u.Handle)

View File

@ -1,5 +1,8 @@
package scraper
import (
"fmt"
)
/**
* Get a list of tweets that appear on the given user's page, along with a list of associated
@ -27,3 +30,23 @@ func GetUserFeedFor(user_id UserID, min_tweets int) (tweets []Tweet, retweets []
return ParseTweetResponse(tweet_response)
}
func GetUserFeedGraphqlFor(user_id UserID, min_tweets int) (trove TweetTrove, err error) {
api := API{}
api_response, err := api.GetGraphqlFeedFor(user_id, "")
if err != nil {
err = fmt.Errorf("Error calling API to fetch user feed: UserID %d\n %s", user_id, err.Error())
return
}
if len(api_response.Data.User.Result.Timeline.Timeline.Instructions[0].Entries) < min_tweets && api_response.GetCursorBottom() != "" {
err = api.GetMoreTweetsFromGraphqlFeed(user_id, &api_response, min_tweets)
if err != nil && err != END_OF_FEED {
return
}
}
return api_response.ToTweetTrove()
}