diff --git a/data/reddit_data_preset.json b/data/reddit_data_preset.json index 6233ec7..34cb950 100644 --- a/data/reddit_data_preset.json +++ b/data/reddit_data_preset.json @@ -18,6 +18,9 @@ "by_human": true, "by_ris": true } + }, + "EXAMPLE VALUE DELETED": { + "removed": true } } } \ No newline at end of file diff --git a/src/python/data.py b/src/python/data.py index de21a9c..ef273dc 100644 --- a/src/python/data.py +++ b/src/python/data.py @@ -3,6 +3,7 @@ import json from typing import Final import bot as botPy +from macros import * BK_WEEKLY: Final[str] = "bk_weekly_art_posts" @@ -84,9 +85,17 @@ def write_data(bot: botPy.Bot): def update_post_in_data(bot: botPy.Bot, new_data: PostData): - if new_data.url not in bot.data: + if new_data.url not in bot.data[BK_WEEKLY]: bot.data[BK_WEEKLY][new_data.url] = new_data.to_json() + py_print(f"Added post \"{new_data.url}\"") return + + elif "removed" in bot.data[BK_WEEKLY][new_data.url]: + py_print(f"Failed to add post \"{new_data.url}\": Removed flag is True.") + return + + else: + py_print(f"Failed to add post \"{new_data.url}\": Already exists.") def remove_old_posts(bot: botPy.Bot, max_age_unix: int): diff --git a/src/python/macros.py b/src/python/macros.py new file mode 100644 index 0000000..53bc530 --- /dev/null +++ b/src/python/macros.py @@ -0,0 +1,2 @@ +def py_print(*args: str): + print("Py -", " ".join(args)) \ No newline at end of file diff --git a/src/python/main.py b/src/python/main.py index c0d2b87..5365c1f 100644 --- a/src/python/main.py +++ b/src/python/main.py @@ -1,16 +1,9 @@ -def py_print(*args: str): - print("Py -", " ".join(args)) - -py_print("Importing external modules...") - -import emoji import sys -py_print("Importing internal modules") - import bot as botPy import data -import reddit +import posts +from macros import * def main(): @@ -20,39 +13,7 @@ def main(): py_print("Reading data...") data.read_data(bot) - check_emoji = emoji.emojize(":check_mark_button:") - cross_emoji = emoji.emojize(":cross_mark:") - - py_print("Fetching posts...") - posts = reddit.fetch_posts_with_flair(bot, "Original Art") - - py_print("Evaluating posts...\n") - for post in posts: - media = reddit.has_media(post) - media_urls = "\n ".join(media[3]) - - print( - f"\n{post.title}", - f"\n {post.shortlink}" - f"\n {check_emoji if media[0] else cross_emoji} Media ({media[1]}) [{media[2]}]", - f"\n {media_urls}\n" - ) - - data.update_post_in_data( - bot, - data.PostData( - post.shortlink, - post.title, - post.score, - int(post.created_utc), - media[1], - media[3], - added_by_bot = True, - ) - ) - - data.write_data(bot) + posts.add_new_posts(bot) -py_print("Running main()...") main() \ No newline at end of file diff --git a/src/python/posts.py b/src/python/posts.py new file mode 100644 index 0000000..7bf406a --- /dev/null +++ b/src/python/posts.py @@ -0,0 +1,41 @@ +import emoji +import reddit +import data +import bot as botPy +from macros import * + +def add_new_posts(bot: botPy.Bot, debug_print: bool = False): + check_emoji = emoji.emojize(":check_mark_button:") + cross_emoji = emoji.emojize(":cross_mark:") + + py_print("Fetching posts...") + posts = reddit.fetch_posts_with_flair(bot, "Original Art") + + py_print("Evaluating posts...\n") + for post in posts: + media = reddit.has_media(post) + media_urls = "\n ".join(media[3]) + + if debug_print: print( + f"\n{post.title}", + f"\n {post.shortlink}" + f"\n {check_emoji if media[0] else cross_emoji} Media ({media[1]}) [{media[2]}]", + f"\n {media_urls}\n" + ) + + data.update_post_in_data( + bot, + data.PostData( + post.shortlink, + post.title, + post.score, + int(post.created_utc), + media[1], + media[3], + added_by_bot = True, + ) + ) + + py_print(f"Sucessfully fetched {len(posts)} posts") + + data.write_data(bot) \ No newline at end of file diff --git a/src/python/reddit.py b/src/python/reddit.py index 18bc0d1..42dce30 100644 --- a/src/python/reddit.py +++ b/src/python/reddit.py @@ -1,5 +1,4 @@ from praw import models -import praw import bot as botPy