import praw from models import Submission, session_scope from datetime import datetime, timedelta class RedditMonitor: def __init__(self, client_id, client_secret, user_agent, username, password, subreddit_name): self.reddit = praw.Reddit( client_id=client_id, client_secret=client_secret, user_agent=user_agent, username=username, password=password ) self.subreddit = self.reddit.subreddit(subreddit_name) def stream_submissions(self): for submission in self.subreddit.stream.submissions(): yield submission def update_submissions(self): with session_scope() as session: one_week_ago = datetime.utcnow() - timedelta(weeks=1) submissions_to_update = session.query(Submission).filter(Submission.created_utc >= one_week_ago.timestamp()).all() for db_submission in submissions_to_update: praw_submission = self.reddit.submission(id=db_submission.id) yield praw_submission