-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmonitor_manager.py
64 lines (46 loc) · 2.03 KB
/
monitor_manager.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
from datetime import datetime
import os
from pathlib import Path
from typing import Dict
from praw.models import ListingGenerator
from praw.reddit import Submission
from reddit import reddit
from config import config
from vote_monitor import MonitoredSubmission
Path('monitored').mkdir(parents=True, exist_ok=True)
Path('monitored_archive').mkdir(parents=True, exist_ok=True)
monitored_submissions: Dict[str, MonitoredSubmission] = dict()
def is_datetime_recent(utc_candidate: datetime):
utc_now = datetime.utcnow()
return (utc_now - utc_candidate).days < config['submission_monitoring_duration_d']
def add_new_monitored_submissions(subreddit: str):
new: ListingGenerator = reddit.subreddit(subreddit).new(limit=20)
for item in new:
if item.id not in monitored_submissions:
monitored_submissions[item.id] = MonitoredSubmission(item.id)
def reload_serialized_submissions():
for filename in os.listdir('monitored'):
id, extension = os.path.splitext(filename)
if extension != '.json':
continue
submission = reddit.submission(id)
created_utc = datetime.utcfromtimestamp(submission.created_utc)
if is_datetime_recent(created_utc):
monitored_submissions[id] = MonitoredSubmission(id)
else:
archive_submission(id)
def archive_submission(id):
os.rename('monitored/' + id + '.csv', 'monitored_archive/' + id + '.csv')
os.rename('monitored/' + id + '.json', 'monitored_archive/' + id + '.json')
def archive_old_submissions():
global monitored_submissions
if len(monitored_submissions) <= config['minimum_monitored_submissions']:
return
recent_monitored_submissions = {}
for id, submission in monitored_submissions.items():
created_utc = datetime.utcfromtimestamp(submission.submission.created_utc)
if is_datetime_recent(created_utc):
recent_monitored_submissions[id] = submission
else:
archive_submission(id)
monitored_submissions = recent_monitored_submissions