-
Notifications
You must be signed in to change notification settings - Fork 1
/
unfollow_bot.py
100 lines (88 loc) · 2.91 KB
/
unfollow_bot.py
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
"""Unfollow some accounts that not following back :)
"""
__author__ = 'ismailsunni'
__project_name = 'TweetJaran'
__filename = 'unfollow_bot.py'
__date__ = '1/16/14'
__copyright__ = 'imajimatika@gmail.com'
__doc__ = ''
from util import setup_api, is_followed_by
import time
import constants
from tweepy import Cursor, TweepError
from datetime import datetime
# constants
consumer_key = constants.consumer_key
consumer_secret = constants.consumer_secret
access_key = constants.access_key
access_secret = constants.access_secret
def need_unfollow(api, user):
"""Check if a user need to be unfollowed
"""
statuses_count = user.statuses_count
followers_count = user.followers_count
friends_count = user.friends_count
is_followed = is_followed_by(api, target_screen_name=user.screen_name)
if not is_followed:
return True
def unfollow(api, user):
"""
Unfollow a user
"""
api.destroy_friendship(user.screen_name)
def main():
unfollow_counter = 0
keep_follow_counter = 0
api = setup_api(consumer_key, consumer_secret, access_key, access_secret)
friends = []
try:
# friends = Cursor(api.friends).items()
i = 0
for page in Cursor(api.friends).pages():
print 'page: ', i
print len(page)
i += 1
# while len(page) > 0:
# friend = page.pop()
# if need_unfollow(api, friend):
# print friend.name, ' has been unfollowed'
# unfollow(api, friend)
# unfollow_counter += 1
# else:
# print 'keep following ', friend.name
# keep_follow_counter += 1
friends.extend(page)
time.sleep(60)
print len(friends), i - 1
print len(friends)
except TweepError, e:
print e
d = api.rate_limit_status()
print d
for i,j in d['resources']['friends'].iteritems():
print i, j
print(datetime.fromtimestamp(int(j['reset'])).strftime('%Y-%m-%d %H:%M:%S'))
finally:
print len(friends)
print 'success to unfollow ', unfollow_counter, ' bad accounts'
print 'keep following ', keep_follow_counter, ' good accounts'
print 'total: ', unfollow_counter + keep_follow_counter
def main_unfollow_all():
api = setup_api(consumer_key, consumer_secret, access_key, access_secret)
i = 0
try:
for page in Cursor(api.friends).pages():
print 'page:', i
i += 1
for friend in page:
try:
unfollow(api, friend)
print 'Unfollow', friend.screen_name
except TweepError, e:
print 'Cannot unfollow', friend.screen_name, e
time.sleep(60)
except TweepError, e:
print e
if __name__ == '__main__':
# main()
main_unfollow_all()