pokemans/app.py
2024-03-03 14:38:44 -05:00

49 lines
2.0 KiB
Python

import threading
import time
from datetime import datetime
from models import Submission, session_scope, submission_exists, update_submission, insert_submission
class Application:
def __init__(self, reddit_monitor, webhook_notifier):
self.reddit_monitor = reddit_monitor
self.webhook_notifier = webhook_notifier
def process_submissions(self, submissions):
with session_scope() as session:
for submission in submissions:
if submission_exists(session, submission.id):
update_submission(session, submission)
else:
submission = Submission(
id=submission.id,
title=submission.title,
name=submission.name,
url=submission.url,
score=submission.score,
num_comments=submission.num_comments,
created_utc=submission.created_utc,
selftext=submission.selftext,
permalink=submission.permalink,
upvote_ratio=submission.upvote_ratio
)
insert_submission(session, submission)
self.webhook_notifier.send_notification(submission)
def periodic_update(self):
submissions = self.reddit_monitor.update_submissions()
self.process_submissions(submissions)
def run_periodic_update(self, interval=3600):
while True:
self.periodic_update()
print(f"Existing posts Updated at {datetime.now()}")
time.sleep(interval)
def run(self):
update_frequency = 3600 # 3600
update_thread = threading.Thread(target=self.run_periodic_update, args=(update_frequency, ))
update_thread.daemon = True
update_thread.start()
submissions = self.reddit_monitor.stream_submissions()
self.process_submissions(submissions)