def updateLatestObjectIds(self, _last_comment_id, _last_submission_id): lastIds = session.query(subreddit).filter_by(website='reddit').first() if lastIds == None: row = subreddit() row.website = 'reddit' row.last_comment = _last_comment_id row.last_submission = _last_submission_id session.add(row) else: session.query(subreddit).filter_by(website='reddit')\ .update({'last_submission':_last_submission_id, 'last_comment':_last_comment_id})
def updateLatestObjectIds(self, _last_comment_id, _last_submission_id): lastIds = session.query(subreddit).filter_by(website="reddit").first() if lastIds == None: row = subreddit() row.website = "reddit" row.last_comment = _last_comment_id row.last_submission = _last_submission_id session.add(row) else: session.query(subreddit).filter_by(website="reddit").update( {"last_submission": _last_submission_id, "last_comment": _last_comment_id} )
def main(): global r global search_comment_id global search_submission_id logging.config.fileConfig(path_to_cfg) r = praw.Reddit(cfg_file["reddit"]["user_agent"]) enabled_subreddits = ["Guildwars2"] while True: try: authenticate(cfg_file["oauth2"]) except Exception: logging.error("OAuth2 could not authenticate") continue else: logging.info("OAuth2 authenticated") break while True: try: subreddit_obj = session.query(subreddit).filter_by(website="reddit").first() search_comment_id = subreddit_obj.last_comment search_submission_id = subreddit_obj.last_submission except: logging.warning("search_comment_id and search_submission_id initialized with 0") search_comment_id = 0 search_submission_id = 0 submission_queue = {} comment_queue = {} try: comment_queue = load_recent_comments(enabled_subreddits) submission_queue = load_recent_submissions(enabled_subreddits) distribute_queues(comment_queue, submission_queue) last_ids = session.query(subreddit).filter_by(website="reddit").first() if last_ids == None: row = subreddit() row.website = "reddit" row.last_submission = search_submission_id row.last_comment = search_comment_id # logging.info('last submission updated: ' + str(search_submission_id) + ' - last comment updated: ' + str(search_comment_id)) session.add(row) else: session.query(subreddit).filter_by(website="reddit").update( {"last_submission": search_submission_id, "last_comment": search_comment_id} ) # logging.info('last submission updated: ' + str(search_submission_id) + ' - last comment updated: ' + str(search_comment_id)) session.commit() except KeyboardInterrupt: raise except Exception as e: logging.error(e) session.rollback() try: to_be_commented = session.query(bot_comments).filter_by(submitted=False).all() for tbcm in to_be_commented: cm_obj = r.get_info(thing_id=tbcm.thing_id) if tbcm.thing_id[:2] == "t3": try: reply_obj = cm_obj.add_comment(tbcm.content) except (praw.errors.InvalidSubmission): session.query(bot_comments).filter_by(id=tbcm.id).update( {"submitted": True, "submitted_id": "del-1"} ) logging.info(str(tbcm.id) + " in bot_comments not submitted, parent deleted") else: session.query(bot_comments).filter_by(id=tbcm.id).update( {"submitted": True, "submitted_id": reply_obj.name} ) logging.info(str(tbcm.id) + " in bot_comments submitted") elif tbcm.thing_id[:2] == "t1": try: reply_obj = cm_obj.reply(tbcm.content) except (praw.errors.InvalidComment): session.query(bot_comments).filter_by(id=tbcm.id).update( {"submitted": True, "submitted_id": "del-1"} ) logging.info(str(tbcm.id) + " in bot_comments not submitted, parent deleted") else: session.query(bot_comments).filter_by(id=tbcm.id).update( {"submitted": True, "submitted_id": reply_obj.name} ) logging.info(str(tbcm.id) + " in bot_comments submitted") elif tbcm.thing_id[:1] == "i": new_id = session.query(bot_comments).filter_by(id=tbcm.thing_id[1:]).first().submitted_id if new_id == "del-1": session.query(bot_comments).filter_by(id=tbcm.id).update( {"submitted": True, "submitted_id": "del-1"} ) if new_id != None: session.query(bot_comments).filter_by(id=tbcm.id).update({"thing_id": new_id}) session.commit() except Exception as e: logging.error(e) session.rollback() try: to_be_submitted = session.query(bot_submissions).filter_by(submitted=False).all() for tbsm in to_be_submitted: if tbsm.type == "link": r.submit(tbsm.subreddit, tbsm.title, url=tbsm.content) elif tbsm.type == "self": r.submit(tbsm.subreddit, tbsm.title, text=tbsm.content) session.query(bot_submissions).filter_by(id=tbsm.id).update({"submitted": True}) logging.info(str(tbsm.id) + " in bot_submissions submitted") session.commit() except Exception as e: logging.error(e) session.rollback()
def main(): global r global search_comment_id global search_submission_id logging.config.fileConfig(path_to_cfg) r = praw.Reddit(cfg_file['reddit']['user_agent']) enabled_subreddits = ['Guildwars2'] while (True): try: authenticate(cfg_file['oauth2']) except Exception: logging.error('OAuth2 could not authenticate') continue else: logging.info('OAuth2 authenticated') break; while (True): try: subreddit_obj = session.query(subreddit).filter_by(website='reddit').first() search_comment_id = subreddit_obj.last_comment search_submission_id = subreddit_obj.last_submission except: logging.warning('search_comment_id and search_submission_id initialized with 0') search_comment_id = 0 search_submission_id = 0 submission_queue = {} comment_queue = {} try: comment_queue = load_recent_comments(enabled_subreddits) submission_queue = load_recent_submissions(enabled_subreddits) distribute_queues(comment_queue, submission_queue) last_ids = session.query(subreddit).filter_by(website="reddit").first() if last_ids == None: row = subreddit() row.website = 'reddit' row.last_submission = search_submission_id row.last_comment = search_comment_id #logging.info('last submission updated: ' + str(search_submission_id) + ' - last comment updated: ' + str(search_comment_id)) session.add(row) else: session.query(subreddit).filter_by(website="reddit").update({'last_submission':search_submission_id,'last_comment':search_comment_id}) #logging.info('last submission updated: ' + str(search_submission_id) + ' - last comment updated: ' + str(search_comment_id)) session.commit() except KeyboardInterrupt: raise except Exception as e: logging.error(e) session.rollback() try: to_be_commented = session.query(bot_comments).filter_by(submitted=False).all() for tbcm in to_be_commented: cm_obj = r.get_info(thing_id=tbcm.thing_id) if tbcm.thing_id[:2] == 't3': try: reply_obj = cm_obj.add_comment(tbcm.content) except (praw.errors.InvalidSubmission): session.query(bot_comments).filter_by(id=tbcm.id).update({'submitted':True,'submitted_id':"del-1"}) logging.info(str(tbcm.id) + ' in bot_comments not submitted, parent deleted') else: session.query(bot_comments).filter_by(id=tbcm.id).update({'submitted':True,'submitted_id':reply_obj.name}) logging.info(str(tbcm.id) + ' in bot_comments submitted') elif tbcm.thing_id[:2] == 't1': try: reply_obj = cm_obj.reply(tbcm.content) except (praw.errors.InvalidComment): session.query(bot_comments).filter_by(id=tbcm.id).update({'submitted':True,'submitted_id':"del-1"}) logging.info(str(tbcm.id) + ' in bot_comments not submitted, parent deleted') else: session.query(bot_comments).filter_by(id=tbcm.id).update({'submitted':True,'submitted_id':reply_obj.name}) logging.info(str(tbcm.id) + ' in bot_comments submitted') elif tbcm.thing_id[:1] == 'i': new_id = session.query(bot_comments).filter_by(id=tbcm.thing_id[1:]).first().submitted_id if new_id == "del-1": session.query(bot_comments).filter_by(id=tbcm.id).update({'submitted':True,'submitted_id':'del-1'}) if new_id != None: session.query(bot_comments).filter_by(id=tbcm.id).update({'thing_id':new_id}) session.commit() except Exception as e: logging.error(e) session.rollback() try: to_be_submitted = session.query(bot_submissions).filter_by(submitted=False).all() for tbsm in to_be_submitted: if tbsm.type == 'link': r.submit(tbsm.subreddit,tbsm.title,url=tbsm.content) elif tbsm.type == 'self': r.submit(tbsm.subreddit,tbsm.title,text=tbsm.content) session.query(bot_submissions).filter_by(id=tbsm.id).update({'submitted':True}) logging.info(str(tbsm.id) + ' in bot_submissions submitted') session.commit() except Exception as e: logging.error(e) session.rollback()