Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from psaw import PushshiftAPI
- from datetime import datetime, timezone, timedelta
- from dateutil.relativedelta import relativedelta
- from halo import Halo
- import pickledb
- import praw
- date = datetime.now()
- target_sub = 'Steelbooks'
- years_back = 4
- test_mode = 1
- db = pickledb.load('data.db', True)
- client_id = 'XXXX'
- client_secret = 'XXXX'
- reddit_user = 'XXXX'
- reddit_pass = 'XXXX'
- user_agent = 'Flair a day (by /u/impshum)'
- reddit = praw.Reddit(client_id=client_id,
- client_secret=client_secret,
- user_agent=user_agent,
- username=reddit_user,
- password=reddit_pass)
- sub = reddit.subreddit(target_sub)
- def collect():
- spinner = Halo(text='Booting up...', spinner='dots')
- spinner.start()
- dt = datetime.now() - relativedelta(years=years_back)
- timestamp = int(dt.replace(tzinfo=timezone.utc).timestamp())
- api = PushshiftAPI()
- submissions = api.search_submissions(
- subreddit=target_sub, aggs='author+created_utc', after=timestamp)
- c = 0
- for post in submissions:
- created = post.created_utc
- author = post.author
- c += 1
- db.set(author, created)
- msg = f'Checking {c} posts'
- spinner.text = msg
- all = len(db.getall())
- msg = f'Checked {c} posts'
- spinner.succeed(msg)
- def set_flair():
- spinner = Halo(text='Setting flairs...', spinner='dots')
- spinner.start()
- for user in db.getall():
- if not user == '[deleted]':
- oldest = db.get(user)
- daze = datetime.now() - datetime.utcfromtimestamp(oldest)
- d = daze.days
- flair = f'Member for {d} days'
- if not test_mode:
- sub.flair.set(user, flair)
- msg = f'{user}: {flair}'
- spinner.text = msg
- all = len(db.getall())
- msg = f'Flaired {all} users'
- spinner.succeed(msg)
- if __name__ == '__main__':
- collect()
- set_flair()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement