Guest User

Leaderboard Generator

a guest
Aug 3rd, 2017
39
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.61 KB | None | 0 0
  1. import praw
  2. import json
  3. from pprint import pprint
  4. from praw.models import MoreComments
  5. import re
  6. import timeit
  7.  
  8. def generateRollingLeaderboard(currentRoundNum, interval):
  9.     unsortedLeaderboardLastInterval = {}
  10.     for user in leaderboard:
  11.         winCountLastInterval = 0
  12.         rounds = leaderboard[user]["rounds"]
  13.         for round in rounds:
  14.             if(int(round) >= (currentRoundNum - interval)):
  15.                 winCountLastInterval += 1
  16.         if(winCountLastInterval > 0):
  17.             unsortedLeaderboardLastInterval[user] = winCountLastInterval
  18.     sortedLeaderboardLastInterval = sorted(unsortedLeaderboardLastInterval.items(), key=lambda x: x[1], reverse=True)
  19.     outputString = ""
  20.     for user in sortedLeaderboardLastInterval:
  21.         outputString += ("%s, %d\n" % (user[0], user[1]))
  22.     with open('rollingLeaderboard.txt', 'w') as f:
  23.         f.write(outputString)
  24.     f.close();
  25.  
  26. def generateIntervalLeaderboard(startRoundNum, endRoundNum):
  27.     unsortedLeaderboard = {}
  28.     outputString = ""
  29.     for user in leaderboard:
  30.         winCount = 0
  31.         rounds = leaderboard[user]["rounds"]
  32.         for round in rounds:
  33.             if(int(round) >= startRoundNum and int(round) <= endRoundNum):
  34.                 winCount += 1
  35.         if(winCount > 0):
  36.             unsortedLeaderboard[user] = winCount
  37.     sortedLeaderboard = sorted(unsortedLeaderboard.items(), key=lambda x: x[1], reverse=True)
  38.     for user in sortedLeaderboard:
  39.         outputString += ("%s, %d\n" % (user[0], user[1]))
  40.     with open('intervalLeaderboard.txt', 'w') as f:
  41.         f.write(outputString)
  42.     f.close();
  43.  
  44. class Round(object):
  45.     def __init__(self, host, number, title, duration, startTime, endTime, winner):
  46.         self.host = host
  47.         self.number = number
  48.         self.title = title
  49.         self.duration = duration
  50.         self.startTime = startTime
  51.         self.endTime = endTime
  52.         self.winner = winner
  53.     def toJSON(self):
  54.         return json.dumps(self, default=lambda o: o.__dict__, sort_keys=True, indent=4)
  55.  
  56. roundList = []
  57. reddit = praw.Reddit(user_agent='PG Stats Generator', client_id='', client_secret='', username='', password='')
  58. PictureGame = reddit.subreddit('PictureGame')
  59. wikiPageData = PictureGame.wiki["leaderboard"].content_md.split('\n')[4:-1]
  60. leaderboard = {}
  61. for line in wikiPageData:
  62.     _, name, rawRounds, _ = line.split(" | ")
  63.     rounds = [int(re.sub(r"\D", "", rawRound)) for rawRound in \
  64.         re.findall(r"[\w\d]+", rawRounds)]
  65.  
  66.     leaderboard[name] = {
  67.         "wins": len(rounds),
  68.         "rounds": rounds
  69.     }
  70. generateRollingLeaderboard(38029, 500)
Add Comment
Please, Sign In to add comment