Update some docstrings, rename a few methods
This commit is contained in:
parent
2b23fcbc53
commit
4a3c12b04a
@ -19,7 +19,7 @@ func main() {
|
|||||||
log.Fatal("Error getting user profile: " + err.Error())
|
log.Fatal("Error getting user profile: " + err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
tweets, retweets, users, err := scraper.GetFeedFull(user.ID, 1)
|
tweets, retweets, users, err := scraper.GetUserFeedFor(user.ID, 1)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("Error getting user feed: " + err.Error())
|
log.Fatal("Error getting user feed: " + err.Error())
|
||||||
}
|
}
|
||||||
|
@ -52,10 +52,19 @@ func (api API) GetFeedFor(user_id UserID, cursor string) (TweetResponse, error)
|
|||||||
return response, err
|
return response, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Resend the request to get more tweets if necessary
|
/**
|
||||||
func (api API) GetMoreTweets(user_id UserID, response *TweetResponse, max_tweets int) error {
|
* Resend the request to get more tweets if necessary
|
||||||
|
*
|
||||||
|
* args:
|
||||||
|
* - user_id: the user's UserID
|
||||||
|
* - response: an "out" parameter; the TweetResponse that tweets, RTs and users will be appended to
|
||||||
|
* - min_tweets: the desired minimum amount of tweets to get
|
||||||
|
*/
|
||||||
|
func (api API) GetMoreTweetsFromFeed(user_id UserID, response *TweetResponse, min_tweets int) error {
|
||||||
|
// TODO user-feed-infinite-fetch: what if you reach the end of the user's timeline? Might loop
|
||||||
|
// forever getting no new tweets
|
||||||
last_response := response
|
last_response := response
|
||||||
for last_response.GetCursor() != "" && len(response.GlobalObjects.Tweets) < max_tweets {
|
for last_response.GetCursor() != "" && len(response.GlobalObjects.Tweets) < min_tweets {
|
||||||
fresh_response, err := api.GetFeedFor(user_id, last_response.GetCursor())
|
fresh_response, err := api.GetFeedFor(user_id, last_response.GetCursor())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -125,7 +125,14 @@ func ParseSingleTweet(apiTweet APITweet) (ret Tweet, err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Return a single tweet, nothing else
|
/**
|
||||||
|
* Get a single tweet with no replies from the API.
|
||||||
|
*
|
||||||
|
* args:
|
||||||
|
* - id: the ID of the tweet to get
|
||||||
|
*
|
||||||
|
* returns: the single Tweet
|
||||||
|
*/
|
||||||
func GetTweet(id TweetID) (Tweet, error) {
|
func GetTweet(id TweetID) (Tweet, error) {
|
||||||
api := API{}
|
api := API{}
|
||||||
tweet_response, err := api.GetTweet(id, "")
|
tweet_response, err := api.GetTweet(id, "")
|
||||||
@ -143,8 +150,15 @@ func GetTweet(id TweetID) (Tweet, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Return a list of tweets, including the original and the rest of its thread,
|
/**
|
||||||
// along with a list of associated users
|
* Return a list of tweets, including the original and the rest of its thread,
|
||||||
|
* along with a list of associated users.
|
||||||
|
*
|
||||||
|
* args:
|
||||||
|
* - id: the ID of the tweet to get
|
||||||
|
*
|
||||||
|
* returns: the tweet, list of its replies and context, and users associated with those replies
|
||||||
|
*/
|
||||||
func GetTweetFull(id TweetID) (tweets []Tweet, retweets []Retweet, users []User, err error) {
|
func GetTweetFull(id TweetID) (tweets []Tweet, retweets []Retweet, users []User, err error) {
|
||||||
api := API{}
|
api := API{}
|
||||||
tweet_response, err := api.GetTweet(id, "")
|
tweet_response, err := api.GetTweet(id, "")
|
||||||
@ -162,6 +176,14 @@ func GetTweetFull(id TweetID) (tweets []Tweet, retweets []Retweet, users []User,
|
|||||||
return ParseTweetResponse(tweet_response)
|
return ParseTweetResponse(tweet_response)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse an API response object into a list of tweets, retweets and users
|
||||||
|
*
|
||||||
|
* args:
|
||||||
|
* - resp: the response from the API
|
||||||
|
*
|
||||||
|
* returns: a list of tweets, retweets and users in that response object
|
||||||
|
*/
|
||||||
func ParseTweetResponse(resp TweetResponse) (tweets []Tweet, retweets []Retweet, users []User, err error) {
|
func ParseTweetResponse(resp TweetResponse) (tweets []Tweet, retweets []Retweet, users []User, err error) {
|
||||||
var new_tweet Tweet
|
var new_tweet Tweet
|
||||||
var new_retweet Retweet
|
var new_retweet Retweet
|
||||||
|
@ -1,18 +1,26 @@
|
|||||||
package scraper
|
package scraper
|
||||||
|
|
||||||
|
|
||||||
// Return a list of tweets, including the original and the rest of its thread,
|
/**
|
||||||
// along with a list of associated users
|
* Get a list of tweets that appear on the given user's page, along with a list of associated
|
||||||
func GetFeedFull(user_id UserID, max_tweets int) (tweets []Tweet, retweets []Retweet, users []User, err error) {
|
* users for any retweets.
|
||||||
|
*
|
||||||
|
* args:
|
||||||
|
* - user_id: the ID of the user whomst feed to fetch
|
||||||
|
* - min_tweets: get at least this many tweets, if there are any
|
||||||
|
*
|
||||||
|
* returns: a slice of Tweets, Retweets, and Users
|
||||||
|
*/
|
||||||
|
func GetUserFeedFor(user_id UserID, min_tweets int) (tweets []Tweet, retweets []Retweet, users []User, err error) {
|
||||||
api := API{}
|
api := API{}
|
||||||
tweet_response, err := api.GetFeedFor(user_id, "")
|
tweet_response, err := api.GetFeedFor(user_id, "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(tweet_response.GlobalObjects.Tweets) < max_tweets &&
|
if len(tweet_response.GlobalObjects.Tweets) < min_tweets &&
|
||||||
tweet_response.GetCursor() != "" {
|
tweet_response.GetCursor() != "" {
|
||||||
err = api.GetMoreTweets(user_id, &tweet_response, max_tweets)
|
err = api.GetMoreTweetsFromFeed(user_id, &tweet_response, min_tweets)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user