import praw, textwrap, configparser from time import sleep from prawcore import NotFound reddit = praw.Reddit() NAME = 'QUICKE' def sub_exists(sub): exists = True try: reddit.subreddits.search_by_name(sub, exact=True) except NotFound: exists = False return exists def formatstr(s, width): return textwrap.fill(s.encode('ascii', errors='ignore').decode(), width) def bar(amount, total, width, unit=''): left = int(width/total*amount) right = width-left-1 if (left >= width): print('\r['+'='*width+'] '+str(amount)+'/'+str(total)+('' if unit == '' else ' '+unit)+' ('+str(round(amount/total*100, 1))+'%)', end='') return print('\r['+'='*left+'>'+' '*right+'] '+str(amount)+'/'+str(total)+('' if unit == '' else ' '+unit)+' ('+str(round(amount/total*100, 1))+'%)', end='') print('Subreddit Scrapper by Brendan Westley') config = configparser.ConfigParser() config.read('quicke.ini') subnames = config[NAME]['subreddits'].split(', ') numitems = int(config[NAME]['posts']) width = int(config[NAME]['width']) fn = config[NAME]['file'] f = open(fn, 'w') f.write('') f.close() for subname in subnames: subreddit = reddit.subreddit(subname) f = open(fn, 'a') i = 0 print('Retreving from', subname) f.write('\n\n'+(('r/'+subname).center(33, '#'))+'\n\n') for submission in subreddit.hot(limit=numitems): bar(i, numitems, 30, 'posts') i += 1 f.write(formatstr('{' + str(submission.score) + ' points} ' + submission.title, width)) f.write('\n\n---------------------------------\n\n') f.write(formatstr(submission.selftext, width)) f.write('\n\n=================================\n\n') f.close() print()