made post data get added to JSON
This commit is contained in:
@@ -1,13 +1,23 @@
|
|||||||
{
|
{
|
||||||
"file_created_correctly": true,
|
"file_created_correctly": true,
|
||||||
"bk_weekly_art_posts": [
|
"bk_weekly_art_posts": {
|
||||||
{
|
"EXAMPLE VALUE DO NOT INCLUDE IN FINAL": {
|
||||||
"url": "EXAMPLE VALUE DO NOT INCLUDE",
|
"post_data": {
|
||||||
|
"title": "I JUST BOUGHT THE CONTINENT OF NORTH AMERICA FOR A DOLLAR!",
|
||||||
|
"upvotes": 69420,
|
||||||
"date_unix": 1738614657,
|
"date_unix": 1738614657,
|
||||||
"added_by_human": false,
|
"media_type": null,
|
||||||
"added_by_bot": true,
|
"media_urls": []
|
||||||
"approved_by_human": true,
|
},
|
||||||
"approved_by_ris": true
|
"nominated_by_human": true,
|
||||||
|
"added": {
|
||||||
|
"by_human": false,
|
||||||
|
"by_bot": true
|
||||||
|
},
|
||||||
|
"approved": {
|
||||||
|
"by_human": true,
|
||||||
|
"by_ris": true
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
|
||||||
}
|
}
|
||||||
+86
-1
@@ -5,6 +5,10 @@ import os
|
|||||||
import json
|
import json
|
||||||
import emoji
|
import emoji
|
||||||
import sys
|
import sys
|
||||||
|
from typing import Final
|
||||||
|
|
||||||
|
|
||||||
|
BK_WEEKLY: Final[str] = "bk_weekly_art_posts"
|
||||||
|
|
||||||
|
|
||||||
class Bot:
|
class Bot:
|
||||||
@@ -23,6 +27,54 @@ class Bot:
|
|||||||
data: dict = {}
|
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():
|
def main():
|
||||||
sys.stdout.reconfigure(encoding="utf-8")
|
sys.stdout.reconfigure(encoding="utf-8")
|
||||||
|
|
||||||
@@ -48,6 +100,21 @@ def main():
|
|||||||
f"\n {media_urls}\n"
|
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):
|
def read_data(bot: Bot):
|
||||||
# Intentionally unreadable >:]
|
# Intentionally unreadable >:]
|
||||||
@@ -55,12 +122,12 @@ def read_data(bot: Bot):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
bot.data_f = open(data_path + "\\reddit_data.json", "r+")
|
bot.data_f = open(data_path + "\\reddit_data.json", "r+")
|
||||||
|
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
print("reddit_data.json not found, creating new from preset...")
|
print("reddit_data.json not found, creating new from preset...")
|
||||||
with open(data_path + "\\reddit_data.json", "w") as f:
|
with open(data_path + "\\reddit_data.json", "w") as f:
|
||||||
f.write(open(data_path + "\\reddit_data_preset.json", "r").read())
|
f.write(open(data_path + "\\reddit_data_preset.json", "r").read())
|
||||||
|
|
||||||
|
|
||||||
bot.data_f = open(data_path + "\\reddit_data.json", "r+")
|
bot.data_f = open(data_path + "\\reddit_data.json", "r+")
|
||||||
|
|
||||||
data_str = bot.data_f.read()
|
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)
|
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__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
Reference in New Issue
Block a user