twitter-scrapper/trends.go

43 lines
1.1 KiB
Go
Raw Normal View History

2020-02-12 10:45:19 +02:00
package twitterscraper
2022-03-17 12:01:58 +02:00
import "fmt"
// GetTrends return list of trends.
2020-12-12 23:33:57 +02:00
func (s *Scraper) GetTrends() ([]string, error) {
2023-05-30 17:14:38 +03:00
req, err := s.newRequest("GET", "https://api.twitter.com/2/guide.json")
2020-02-12 10:45:19 +02:00
if err != nil {
return nil, err
}
q := req.URL.Query()
q.Add("count", "20")
q.Add("candidate_source", "trends")
q.Add("include_page_configuration", "false")
q.Add("entity_tokens", "false")
req.URL.RawQuery = q.Encode()
2020-02-12 10:45:19 +02:00
var jsn timelineV1
2023-05-30 17:14:38 +03:00
curBearerToken := s.bearerToken
if curBearerToken != bearerToken2 {
s.setBearerToken(bearerToken2)
}
2020-12-12 23:33:57 +02:00
err = s.RequestAPI(req, &jsn)
2023-05-30 17:14:38 +03:00
if curBearerToken != bearerToken2 {
s.setBearerToken(curBearerToken)
}
2020-02-12 10:45:19 +02:00
if err != nil {
return nil, err
}
2022-03-17 12:01:58 +02:00
if len(jsn.Timeline.Instructions[1].AddEntries.Entries) < 2 {
return nil, fmt.Errorf("no trend entries found")
}
2020-02-12 10:45:19 +02:00
var trends []string
for _, item := range jsn.Timeline.Instructions[1].AddEntries.Entries[1].Content.TimelineModule.Items {
trends = append(trends, item.Item.ClientEventInfo.Details.GuideDetails.TransparentGuideDetails.TrendMetadata.TrendName)
}
2020-02-12 10:45:19 +02:00
return trends, nil
}