made post data get added to JSON

This commit is contained in:
2025-02-04 20:33:41 +01:00
parent ecbb3455b3
commit ecb7dafcdf
2 changed files with 105 additions and 10 deletions
+18 -8
View File
@@ -1,13 +1,23 @@
{
"file_created_correctly": true,
"bk_weekly_art_posts": [
{
"url": "EXAMPLE VALUE DO NOT INCLUDE",
"bk_weekly_art_posts": {
"EXAMPLE VALUE DO NOT INCLUDE IN FINAL": {
"post_data": {
"title": "I JUST BOUGHT THE CONTINENT OF NORTH AMERICA FOR A DOLLAR!",
"upvotes": 69420,
"date_unix": 1738614657,
"added_by_human": false,
"added_by_bot": true,
"approved_by_human": true,
"approved_by_ris": true
"media_type": null,
"media_urls": []
},
"nominated_by_human": true,
"added": {
"by_human": false,
"by_bot": true
},
"approved": {
"by_human": true,
"by_ris": true
}
}
}
]
}
+86 -1
View File
@@ -5,6 +5,10 @@ import os
import json
import emoji
import sys
from typing import Final
BK_WEEKLY: Final[str] = "bk_weekly_art_posts"
class Bot:
@@ -23,6 +27,54 @@ class Bot:
data: dict = {}
class PostData:
def __init__(
self,
url: str,
title: str,
upvotes: int,
date_unix: int,
media_type: str,
media_urls: list[str],
nominated_by_human: bool = False,
added_by_human: bool = False,
added_by_bot: bool = False,
approved_by_human: bool = False,
approved_by_ris: bool = False
):
self.url = url
self.title = title
self.upvotes = upvotes
self.date_unix = date_unix
self.media_type = media_type
self.media_urls = media_urls
self.nominated_by_human = nominated_by_human
self.added_by_human = added_by_human
self.added_by_bot = added_by_bot
self.approved_by_human = approved_by_human
self.approved_by_ris = approved_by_ris
def to_json(self):
return {
"post_data": {
"title": self.title,
"upvotes": self.upvotes,
"date_unix": self.date_unix,
"media_type": self.media_type,
"media_urls": self.media_urls
},
"nominated_by_human": self.nominated_by_human,
"added": {
"by_human": self.added_by_human,
"by_bot": self.added_by_bot
},
"approved": {
"by_human": self.approved_by_human,
"by_ris": self.approved_by_ris
}
}
def main():
sys.stdout.reconfigure(encoding="utf-8")
@@ -48,6 +100,21 @@ def main():
f"\n {media_urls}\n"
)
update_post_in_data(
bot,
PostData(
post.shortlink,
post.title,
post.score,
int(post.created_utc),
media[1],
media[3],
added_by_bot = True,
)
)
write_data(bot)
def read_data(bot: Bot):
# Intentionally unreadable >:]
@@ -55,12 +122,12 @@ def read_data(bot: Bot):
try:
bot.data_f = open(data_path + "\\reddit_data.json", "r+")
except FileNotFoundError:
print("reddit_data.json not found, creating new from preset...")
with open(data_path + "\\reddit_data.json", "w") as f:
f.write(open(data_path + "\\reddit_data_preset.json", "r").read())
bot.data_f = open(data_path + "\\reddit_data.json", "r+")
data_str = bot.data_f.read()
@@ -110,5 +177,23 @@ def has_media(post: models.Submission) -> tuple[bool, str, int, list[str]]:
return (media_type != None, media_type, media_count, media_urls)
def write_data(bot: Bot):
bot.data_f.seek(0)
json.dump(bot.data, bot.data_f, indent=2)
bot.data_f.truncate()
def update_post_in_data(bot: Bot, new_data: PostData):
if new_data.url not in bot.data:
bot.data[BK_WEEKLY][new_data.url] = new_data.to_json()
return
def remove_old_posts(bot: Bot, max_age_unix: int):
for post in bot.data[BK_WEEKLY]:
if post["date_unix"] > max_age_unix:
dict(bot.data[BK_WEEKLY]).pop(post)
if __name__ == "__main__":
main()