Documentation ¶
Index ¶
- Constants
- type Entry
- type EntryContent
- type FetchFailed
- type GIF
- type ItemContent
- type Mention
- type Photo
- type Place
- type Profile
- type ProfileResult
- type Scraper
- func (s *Scraper) ClearCookies()
- func (s *Scraper) FetchSearchProfiles(query string, maxProfilesNbr int, cursor string) ([]*Profile, string, error)
- func (s *Scraper) FetchSearchTweets(query string, maxTweetsNbr int, cursor string) ([]*Tweet, string, error)
- func (s *Scraper) FetchTweetIDS(userID string, maxTweetsNbr int, cursor string) ([]string, error)
- func (s *Scraper) FetchTweets(user string, maxTweetsNbr int, cursor string) ([]*Tweet, string, error)
- func (s *Scraper) FetchTweetsByUserID(userID string, maxTweetsNbr int, cursor string) ([]*Tweet, string, error)
- func (s *Scraper) FetchTweetsByUserIDLegacy(userID string, maxTweetsNbr int, cursor string) ([]*Tweet, string, error)
- func (s *Scraper) GetCookies() []*http.Cookie
- func (s *Scraper) GetGuestToken() error
- func (s *Scraper) GetProfile(username string) (Profile, error)
- func (s *Scraper) GetTrends() ([]string, error)
- func (s *Scraper) GetTweet(id string) (*Tweet, error)
- func (s *Scraper) GetTweets(ctx context.Context, user string, maxTweetsNbr int) <-chan *TweetResult
- func (s *Scraper) GetUserIDByScreenName(screenName string) (string, error)
- func (s *Scraper) IsGuestToken() bool
- func (s *Scraper) IsLoggedIn() bool
- func (s *Scraper) Login(credentials ...string) error
- func (s *Scraper) LoginOpenAccount() error
- func (s *Scraper) Logout() error
- func (s *Scraper) RequestAPI(req *http.Request, target interface{}) error
- func (s *Scraper) SearchProfiles(ctx context.Context, query string, maxProfilesNbr int) <-chan *ProfileResult
- func (s *Scraper) SearchTweets(ctx context.Context, query string, maxTweetsNbr int) <-chan *TweetResult
- func (s *Scraper) SetCookies(cookies []*http.Cookie)
- func (s *Scraper) SetProxy(proxyAddr string) error
- func (s *Scraper) SetSearchMode(mode SearchMode) *Scraper
- func (s *Scraper) WithClientTimeout(timeout time.Duration) *Scraper
- func (s *Scraper) WithDelay(seconds int64) *Scraper
- func (s *Scraper) WithReplies(b bool) *Scraper
- type SearchMode
- type ThreadedConversation
- type Tweet
- type TweetFail
- type TweetResult
- type TweetResults
- type Video
Constants ¶
const DefaultClientTimeout = 10 * time.Second
default http client timeout
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Entry ¶
type Entry struct { EntryID string `json:"entryId"` SortIndex string `json:"sortIndex"` Content EntryContent `json:"content"` }
type EntryContent ¶
type EntryContent struct { ItemType string `json:"itemType"` ItemContent ItemContent `json:"itemContent"` }
type FetchFailed ¶
type FetchFailed struct { Data struct { ThreadedConversationWithInjectionsV2 ThreadedConversation `json:"threaded_conversation_with_injections_v2"` } `json:"data"` }
type ItemContent ¶
type ItemContent struct { TweetResults TweetResults `json:"tweet_results"` TweetDisplayType string `json:"tweetDisplayType"` HasModeratedReplies bool `json:"hasModeratedReplies"` }
type Place ¶
type Place struct { ID string `json:"id"` PlaceType string `json:"place_type"` Name string `json:"name"` FullName string `json:"full_name"` CountryCode string `json:"country_code"` Country string `json:"country"` BoundingBox struct { Type string `json:"type"` Coordinates [][][]float64 `json:"coordinates"` } `json:"bounding_box"` }
type Profile ¶
type Profile struct { Avatar string Banner string Biography string Birthday string FollowersCount int FollowingCount int FriendsCount int IsPrivate bool IsVerified bool Joined *time.Time LikesCount int ListedCount int Location string Name string PinnedTweetIDs []string TweetsCount int URL string UserID string Username string Website string }
Profile of twitter user.
type Scraper ¶
type Scraper struct {
// contains filtered or unexported fields
}
Scraper object
func (*Scraper) ClearCookies ¶
func (s *Scraper) ClearCookies()
func (*Scraper) FetchSearchProfiles ¶
func (s *Scraper) FetchSearchProfiles(query string, maxProfilesNbr int, cursor string) ([]*Profile, string, error)
FetchSearchProfiles gets users for a given search query, via the Twitter frontend API
func (*Scraper) FetchSearchTweets ¶
func (s *Scraper) FetchSearchTweets(query string, maxTweetsNbr int, cursor string) ([]*Tweet, string, error)
FetchSearchTweets gets tweets for a given search query, via the Twitter frontend API
func (*Scraper) FetchTweetIDS ¶
func (*Scraper) FetchTweets ¶
func (s *Scraper) FetchTweets(user string, maxTweetsNbr int, cursor string) ([]*Tweet, string, error)
FetchTweets gets tweets for a given user, via the Twitter frontend API.
func (*Scraper) FetchTweetsByUserID ¶
func (s *Scraper) FetchTweetsByUserID(userID string, maxTweetsNbr int, cursor string) ([]*Tweet, string, error)
FetchTweetsByUserID gets tweets for a given userID, via the Twitter frontend GraphQL API.
func (*Scraper) FetchTweetsByUserIDLegacy ¶
func (s *Scraper) FetchTweetsByUserIDLegacy(userID string, maxTweetsNbr int, cursor string) ([]*Tweet, string, error)
FetchTweetsByUserIDLegacy gets tweets for a given userID, via the Twitter frontend legacy API.
func (*Scraper) GetCookies ¶
func (*Scraper) GetGuestToken ¶
GetGuestToken from Twitter API
func (*Scraper) GetProfile ¶
GetProfile return parsed user profile.
func (*Scraper) GetUserIDByScreenName ¶
GetUserIDByScreenName from API
func (*Scraper) IsGuestToken ¶
IsGuestToken check if guest token not empty
func (*Scraper) IsLoggedIn ¶
IsLoggedIn check if scraper logged in
func (*Scraper) Login ¶
Login to Twitter Use Login(username, password) for ordinary login or Login(username, password, email) for login if you have email confirmation or Login(username, password, code_for_2FA) for login if you have two-factor authentication
func (*Scraper) LoginOpenAccount ¶
LoginOpenAccount as Twitter app
func (*Scraper) RequestAPI ¶
RequestAPI get JSON from frontend API and decodes it
func (*Scraper) SearchProfiles ¶
func (s *Scraper) SearchProfiles(ctx context.Context, query string, maxProfilesNbr int) <-chan *ProfileResult
SearchProfiles returns channel with profiles for a given search query
func (*Scraper) SearchTweets ¶
func (s *Scraper) SearchTweets(ctx context.Context, query string, maxTweetsNbr int) <-chan *TweetResult
SearchTweets returns channel with tweets for a given search query
func (*Scraper) SetCookies ¶
func (*Scraper) SetProxy ¶
SetProxy set http proxy in the format `http://HOST:PORT` set socket proxy in the format `socks5://HOST:PORT`
func (*Scraper) SetSearchMode ¶
func (s *Scraper) SetSearchMode(mode SearchMode) *Scraper
SetSearchMode switcher
func (*Scraper) WithClientTimeout ¶
client timeout
func (*Scraper) WithReplies ¶
WithReplies enable/disable load timeline with tweet replies
type SearchMode ¶
type SearchMode int
SearchMode type
const ( // SearchTop - default mode SearchTop SearchMode = iota // SearchLatest - live mode SearchLatest // SearchPhotos - image mode SearchPhotos // SearchVideos - video mode SearchVideos // SearchUsers - user mode SearchUsers )
type ThreadedConversation ¶
type Tweet ¶
type Tweet struct { ConversationID string GIFs []GIF HTML string ID string InReplyToStatus *Tweet InReplyToStatusID string IsQuoted bool IsPin bool IsReply bool IsRetweet bool IsSelfThread bool Likes int Name string Mentions []Mention PermanentURL string Photos []Photo Place *Place QuotedStatus *Tweet QuotedStatusID string Replies int Retweets int RetweetedStatus *Tweet RetweetedStatusID string Text string Thread []*Tweet TimeParsed time.Time Timestamp int64 URLs []string UserID string Username string Videos []Video Views int SensitiveContent bool }
Tweet type.
func (*Tweet) FailMapping ¶
func (t *Tweet) FailMapping(fail FetchFailed)
type TweetFail ¶
type TweetFail struct { RestID string `json:"rest_id"` HasBirdwatchNotes bool `json:"has_birdwatch_notes"` Core struct { UserResults struct { Result struct { IsBlueVerified bool `json:"is_blue_verified"` Legacy legacyUser `json:"legacy"` } `json:"result"` } `json:"user_results"` } `json:"core"` LegacyTweet legacyTweet `json:"legacy"` IDStr string `json:"id_str"` }
type TweetResults ¶
type TweetResults struct { Result struct { Tweet struct { RestID string `json:"rest_id"` HasBirdwatchNotes bool `json:"has_birdwatch_notes"` IsTranslatable bool `json:"is_translatable"` Views struct { State string `json:"state"` } `json:"views"` Source string `json:"source"` AwardEligible bool `json:"award_eligible"` GrantedAwards struct{} `json:"granted_awards"` Legacy struct { BookmarkCount int `json:"bookmark_count"` Bookmarked bool `json:"bookmarked"` CreatedAt string `json:"created_at"` ConversationControl struct { Policy string `json:"policy"` ConversationOwnerResults struct { Result struct { Type string `json:"__typename"` Legacy struct { ScreenName string `json:"screen_name"` } `json:"legacy"` } `json:"result"` } `json:"conversation_owner_results"` } `json:"conversation_control"` ConversationIDStr string `json:"conversation_id_str"` DisplayTextRange []int `json:"display_text_range"` Entities struct { UserMentions []interface{} `json:"user_mentions"` Urls []interface{} `json:"urls"` Hashtags []interface{} `json:"hashtags"` Symbols []interface{} `json:"symbols"` } `json:"entities"` FavoriteCount int `json:"favorite_count"` Favorited bool `json:"favorited"` FullText string `json:"full_text"` IsQuoteStatus bool `json:"is_quote_status"` Lang string `json:"lang"` LimitedActions string `json:"limited_actions"` QuoteCount int `json:"quote_count"` ReplyCount int `json:"reply_count"` RetweetCount int `json:"retweet_count"` Retweeted bool `json:"retweeted"` UserIDStr string `json:"user_id_str"` IDStr string `json:"id_str"` } `json:"legacy"` QuickPromoteEligibility struct { Eligibility string `json:"eligibility"` } `json:"quick_promote_eligibility"` } `json:"tweet"` LimitedActionResults struct { LimitedActions []struct { Action string `json:"action"` Prompt struct { Type string `json:"__typename"` CtaType string `json:"cta_type"` Headline struct { Text string `json:"text"` Entities []interface{} `json:"entities"` } `json:"headline"` Subtext struct { Text string `json:"text"` Entities []interface{} `json:"entities"` } `json:"subtext"` } `json:"prompt"` } `json:"limited_actions"` } `json:"limitedActionResults"` } `json:"result"` }
Failed Tweet