Skip to content

Instantly share code, notes, and snippets.

@avyfain
Forked from elaineo/ff.py
Last active January 2, 2023 02:45
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save avyfain/97d801d35320033a8f7b21d06b91df01 to your computer and use it in GitHub Desktop.
Save avyfain/97d801d35320033a8f7b21d06b91df01 to your computer and use it in GitHub Desktop.
Follow Friday
import json
import os
from collections import Counter
# pip install TwitterAPI
from TwitterAPI import TwitterAPI
# Edit ff.py for your account. Go to https://apps.twitter.com/ to get API keys
# Don't forget to fill in your screen name (or someone else's).
CONSUMER_KEY = os.environ.get('TWITTER_CONSUMER_KEY')
CONSUMER_SECRET = os.environ.get('TWITTER_CONSUMER_SECRET')
ACCESS_TOKEN = os.environ.get('TWITTER_ACCESS_TOKEN')
ACCESS_TOKEN_SECRET = os.environ.get('TWITTER_ACCESS_TOKEN_SECRET')
USER = 'avyfain'
# adjust according to desired timeframe
# I have it starting from 12/31/2021
YEAR_AGO = 1477067041794400257
def main():
api = TwitterAPI(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
newest = None
counter = Counter()
while True:
if newest and int(newest) < YEAR_AGO:
break
favs_raw = api.request('favorites/list',
{'screen_name': USER,
'count': 200,
'since_id': YEAR_AGO,
'max_id': newest,
'include_entities': False})
favs = json.loads(favs_raw.response.text)
if len(favs) == 0:
break
newest = favs[-1]["id"] - 1
friends = [f["user"]["id_str"] for f in favs if not f["in_reply_to_status_id"]]
counter += Counter(friends)
top = counter.most_common(20)
top = [t[0] for t in top]
friends_raw = api.request('users/lookup', {'user_id': top})
friends = json.loads(friends_raw.response.text)
for idx, friend in enumerate(friends):
print(idx, friend["screen_name"], counter[str(friend['id'])])
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment