Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from json import loads
- import urllib, urllib2
- from time import sleep
- import collections
- import sys, os
- import re
- import argparse
- import datetime
- import csv
- opener = urllib2.build_opener()
- opener.addheaders = [('User-Agent','Text Bot by /u/Atheuz')]
- urllib2.install_opener(opener)
- def get_subreddits(jsonurl, dates, subreddits):
- tofetch = jsonurl
- after = None
- pages_traversed = 0
- while True:
- sys.stdout.write("%d \r" % pages_traversed)
- sys.stdout.flush()
- parsed = loads(urllib2.urlopen(tofetch).read())
- for link in parsed['data']['children']:
- dates.append(int(link["data"]["created"]))
- subreddits.append("%s" % link["data"]["subreddit"])
- after = parsed['data']['after']
- pages_traversed += 1
- if after:
- tofetch = '%s?after=%s' % (jsonurl, after)
- sleep(2)
- else:
- break
- return dates, subreddits
- def run(comments_page):
- url = "https://www.reddit.com/api/login/"
- values = {"passwd": "", "user": ""}
- subreddits = []
- dates = []
- data = urllib.urlencode(values)
- req = urllib2.Request(url, data)
- response = urllib2.urlopen(req)
- if 'http://' not in comments_page:
- comments_page = 'http://' + comments_page
- if comments_page.rfind('/.json') != -1:
- dates, subreddits = get_subreddits(comments_page, subreddits, dates)
- elif comments_page.rfind('/') == len(comments_page) - 1:
- dates, subreddits = get_subreddits(comments_page + '.json', subreddits, dates)
- else:
- dates, subreddits = get_subreddits(comments_page + '/.json', subreddits, dates)
- username = re.search("(?<=user/)\w+", comments_page)
- if username:
- username = username.group()
- else:
- username = "unknown username"
- report = collections.Counter(subreddits)
- total_comments = sum(report.itervalues())
- report_str = ""
- report_str += " \n"
- report_str += "Report for %s:\n" % username
- report_str += "\nTotal comments: %d\n\n" % total_comments
- report_str += "Summary of comments:\n"
- for i,j in sorted(report.items(), key=lambda x: x[1], reverse=True):
- report_str += "/r/%s%03d times -- %06.2f%% of total comments.\n" % (i.ljust(35),j, (float(j)/float(total_comments))*100.0)
- print report_str
- try:
- os.mkdir("output")
- except WindowsError:
- pass
- os.chdir("output")
- with open("%s_report.txt" % username, "wb") as f:
- f.write(report_str)
- f.close()
- os.chdir("..")
- return dates
- def main():
- parser = argparse.ArgumentParser()
- parser.add_argument('comments_page', metavar='P', nargs='+', type=str, default=None,
- help='link to submissions')
- args = parser.parse_args()
- comments_page = args.comments_page
- for i in comments_page:
- d = run(i)
- print "Last comment: %s" % datetime.datetime.fromtimestamp(d[0]).strftime("%Y-%m-%d %H:%M:%S")
- print "First comment: %s" % datetime.datetime.fromtimestamp(d[-1]).strftime("%Y-%m-%d %H:%M:%S")
- if __name__ == '__main__':
- main()
Add Comment
Please, Sign In to add comment