Documentation
¶
Index ¶
- Constants
- func GetRandomUserAgent() string
- func GetUserAgent() string
- type Description
- type Entities
- type GIF
- type Legacy
- type Mention
- type Photo
- type Place
- type Profile
- type ProfileResult
- type Response
- type Scraper
- func (s *Scraper) ClearCookies()
- func (s *Scraper) FetchFollowers(username string, maxUsersNbr int, cursor string) ([]Legacy, string, error)
- 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) 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) SetUserAgent(userAgent string) *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 Tweet
- type TweetResult
- type Url
- type UrlInfo
- type Video
Constants ¶
const DefaultClientTimeout = 10 * time.Second
default http client timeout
Variables ¶
This section is empty.
Functions ¶
func GetRandomUserAgent ¶
func GetRandomUserAgent() string
func GetUserAgent ¶
func GetUserAgent() string
Types ¶
type Description ¶
type Description struct {
Urls []UrlInfo `json:"urls"`
}
type Entities ¶
type Entities struct {
Description Description `json:"description"`
Url Url `json:"url"`
}
type Legacy ¶
type Legacy struct {
CanDM bool `json:"can_dm"`
CanMediaTag bool `json:"can_media_tag"`
CreatedAt string `json:"created_at"`
DefaultProfile bool `json:"default_profile"`
DefaultProfileImage bool `json:"default_profile_image"`
Description string `json:"description"`
Entities Entities `json:"entities"`
FastFollowersCount int `json:"fast_followers_count"`
FavouritesCount int `json:"favourites_count"`
FollowersCount int `json:"followers_count"`
FriendsCount int `json:"friends_count"`
HasCustomTimelines bool `json:"has_custom_timelines"`
IsTranslator bool `json:"is_translator"`
ListedCount int `json:"listed_count"`
Location string `json:"location"`
MediaCount int `json:"media_count"`
Name string `json:"name"`
NormalFollowersCount int `json:"normal_followers_count"`
PinnedTweetIdsStr []string `json:"pinned_tweet_ids_str"`
PossiblySensitive bool `json:"possibly_sensitive"`
ProfileBannerUrl string `json:"profile_banner_url"`
ProfileImageUrlHttps string `json:"profile_image_url_https"`
ScreenName string `json:"screen_name"`
StatusesCount int `json:"statuses_count"`
TranslatorType string `json:"translator_type"`
Url string `json:"url"`
Verified bool `json:"verified"`
WantRetweets bool `json:"want_retweets"`
WithheldInCountries []string `json:"withheld_in_countries"`
}
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 Response ¶
type Response struct {
Data struct {
User struct {
Result struct {
Timeline struct {
Timeline struct {
Instructions []struct {
Entries []struct {
Content struct {
ItemContent struct {
UserResults struct {
Result struct {
Legacy Legacy `json:"legacy"`
} `json:"result"`
} `json:"user_results"`
} `json:"itemContent"`
} `json:"content"`
} `json:"entries"`
} `json:"instructions"`
} `json:"timeline"`
} `json:"timeline"`
} `json:"result"`
} `json:"user"`
} `json:"data"`
}
type Scraper ¶
type Scraper struct {
// contains filtered or unexported fields
}
Scraper object
func (*Scraper) ClearCookies ¶
func (s *Scraper) ClearCookies()
func (*Scraper) FetchFollowers ¶
func (s *Scraper) FetchFollowers(username string, maxUsersNbr int, cursor string) ([]Legacy, string, error)
FetchFollowers gets the list of followers for a given user, via the Twitter frontend GraphQL API.
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) 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) SetUserAgent ¶
SetUserAgent sets the user agent for the scraper
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 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.