While playing with the Twitter API via a Go lib
I saw someone call on people to troll reply to a tweet with a
specific piece of text.
This seemed like a really easy thing to search for and block. So I
modified the little Go program from starting with ephemeral
and put in this as the function run in main()
.
It searches for the string it’s given and then if the tweet consists
solely of that text (compared by turning the string lowercase and
then stripping out everything that’s not a letter) it blocks the
user.
Blocked over 1,000 accounts just by running a single command. Nice.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| func blockUsers(api *anaconda.TwitterApi, needle string) {
re, _ := regexp.Compile("[^a-z]")
ndl := re.ReplaceAllString(strings.ToLower(needle), "")
args := url.Values{}
args.Add("result_type", "mixed")
args.Add("count", "100")
results, err := api.GetSearch(needle, args)
for true {
if err != nil {
break
}
log.Printf("metadata: %v", results.Metadata)
if results.Metadata.Count <= 0 {
break
}
for _, t := range results.Statuses {
txt := re.ReplaceAllString(strings.ToLower(t.Text), "")
if txt == ndl {
log.Printf("[%s] %s", txt, t.User.ScreenName)
_, _ = api.BlockUserId(t.User.Id, url.Values{})
}
}
time.Sleep(time.Second * 5)
results, err = results.GetNext(api)
}
}
|