Add parser for a TweetResponse
This commit is contained in:
parent
5290a0b549
commit
90e5fdb8b1
@ -73,3 +73,33 @@ func ParseSingleTweet(apiTweet APITweet) (ret Tweet, err error) {
|
|||||||
ret.HasVideo = false // TODO
|
ret.HasVideo = false // TODO
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
func ParseTweetResponse(resp TweetResponse) (tweets []Tweet, retweets []Retweet, users []User, err error) {
|
||||||
|
var new_tweet Tweet
|
||||||
|
var new_retweet Retweet
|
||||||
|
for _, single_tweet := range resp.GlobalObjects.Tweets {
|
||||||
|
if single_tweet.RetweetedStatusIDStr == "" {
|
||||||
|
new_tweet, err = ParseSingleTweet(single_tweet)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
tweets = append(tweets, new_tweet)
|
||||||
|
} else {
|
||||||
|
new_retweet, err = ParseSingleRetweet(single_tweet)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
retweets = append(retweets, new_retweet)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var new_user User
|
||||||
|
for _, user := range resp.GlobalObjects.Users {
|
||||||
|
new_user, err = ParseSingleUser(user)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
users = append(users, new_user)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
@ -136,3 +136,31 @@ func TestParseSingleTweet2(t *testing.T) {
|
|||||||
t.Errorf("Expected %q, got %q", expected_text, quoted_tweet.Text)
|
t.Errorf("Expected %q, got %q", expected_text, quoted_tweet.Text)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
func TestParseTweetResponse(t *testing.T) {
|
||||||
|
data, err := ioutil.ReadFile("test_responses/michael_malice_feed.json")
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
var tweet_resp scraper.TweetResponse
|
||||||
|
err = json.Unmarshal(data, &tweet_resp)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf(err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
tweets, retweets, users, err := scraper.ParseTweetResponse(tweet_resp)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf(err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(tweets) != 29 - 3 {
|
||||||
|
t.Errorf("Expected %d tweets, got %d", 29-3, len(tweets))
|
||||||
|
}
|
||||||
|
if len(retweets) != 3 {
|
||||||
|
t.Errorf("Expected %d tweets, got %d", 3, len(retweets))
|
||||||
|
}
|
||||||
|
if len(users) != 9 {
|
||||||
|
t.Errorf("Expected %d tweets, got %d", 9, len(users))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user