Advertisement
Guest User

Untitled

a guest
Feb 4th, 2019
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.00 KB | None | 0 0
  1. from psaw import PushshiftAPI
  2. from datetime import datetime, timezone, timedelta
  3. from dateutil.relativedelta import relativedelta
  4. from halo import Halo
  5. import pickledb
  6. import praw
  7.  
  8.  
  9. date = datetime.now()
  10.  
  11. target_sub = 'Steelbooks'
  12. years_back = 4
  13. test_mode = 1
  14.  
  15. db = pickledb.load('data.db', True)
  16.  
  17.  
  18. client_id = 'XXXX'
  19. client_secret = 'XXXX'
  20. reddit_user = 'XXXX'
  21. reddit_pass = 'XXXX'
  22. user_agent = 'Flair a day (by /u/impshum)'
  23.  
  24. reddit = praw.Reddit(client_id=client_id,
  25.                      client_secret=client_secret,
  26.                      user_agent=user_agent,
  27.                      username=reddit_user,
  28.                      password=reddit_pass)
  29.  
  30. sub = reddit.subreddit(target_sub)
  31.  
  32.  
  33. def collect():
  34.     spinner = Halo(text='Booting up...', spinner='dots')
  35.     spinner.start()
  36.  
  37.     dt = datetime.now() - relativedelta(years=years_back)
  38.     timestamp = int(dt.replace(tzinfo=timezone.utc).timestamp())
  39.  
  40.     api = PushshiftAPI()
  41.     submissions = api.search_submissions(
  42.         subreddit=target_sub, aggs='author+created_utc', after=timestamp)
  43.  
  44.     c = 0
  45.     for post in submissions:
  46.         created = post.created_utc
  47.         author = post.author
  48.         c += 1
  49.         db.set(author, created)
  50.         msg = f'Checking {c} posts'
  51.         spinner.text = msg
  52.  
  53.     all = len(db.getall())
  54.     msg = f'Checked {c} posts'
  55.     spinner.succeed(msg)
  56.  
  57.  
  58. def set_flair():
  59.     spinner = Halo(text='Setting flairs...', spinner='dots')
  60.     spinner.start()
  61.     for user in db.getall():
  62.         if not user == '[deleted]':
  63.             oldest = db.get(user)
  64.             daze = datetime.now() - datetime.utcfromtimestamp(oldest)
  65.             d = daze.days
  66.             flair = f'Member for {d} days'
  67.             if not test_mode:
  68.                 sub.flair.set(user, flair)
  69.             msg = f'{user}: {flair}'
  70.             spinner.text = msg
  71.  
  72.     all = len(db.getall())
  73.     msg = f'Flaired {all} users'
  74.     spinner.succeed(msg)
  75.  
  76.  
  77. if __name__ == '__main__':
  78.     collect()
  79.     set_flair()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement