Beispiel #1
0
 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()