diff --git a/.gitignore b/.gitignore index 16ec4a8..e2cf95a 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,6 @@ Cargo.lock .vscode/ # program-created data -data/reddit_data.json \ No newline at end of file +data/reddit_data.json +data/reddit_images/* +!data/reddit_images/ \ No newline at end of file diff --git a/TODO.md b/TODO.md index 8feac39..bfc21c0 100644 --- a/TODO.md +++ b/TODO.md @@ -1,5 +1,6 @@ ### High priority: - [x] Embed creation tool +- [ ] Reddit bot that scrapes images with tag "Original Art" and posts them in Discord server ### Medium priority: - [x] JSON -> Rules list diff --git a/src/main.rs b/src/main.rs index 5803b7c..08232c6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -52,8 +52,8 @@ async fn main() { let stdout = str::from_utf8(&output.stdout).unwrap_or("Invalid UTF-8 in stdout"); let stderr = str::from_utf8(&output.stderr).unwrap_or("Invalid UTF-8 in stderr"); - println!("PYTHON OUTPUT:\n{}\n", stdout); - println!("PYTHON ERROR:\n{}", stderr); + println!("--- PYTHON OUTPUT:\n\n{}\n", stdout); + println!("--- PYTHON ERROR:\n\n{}", stderr); process::exit(1); } diff --git a/src/python/main.py b/src/python/main.py index d98a818..535eea6 100644 --- a/src/python/main.py +++ b/src/python/main.py @@ -3,6 +3,8 @@ from praw import models import praw import os import json +import emoji +import sys class Bot: @@ -22,13 +24,24 @@ class Bot: def main(): + sys.stdout.reconfigure(encoding="utf-8") + bot = Bot() read_data(bot) + check_emoji = emoji.emojize(":check_mark_button:") + cross_emoji = emoji.emojize(":cross_mark:") + posts = fetch_posts_with_flair(bot, "Original Art") for post in posts: - print(post.id, post.link_flair_text, post.title) + media = has_media(post) + + print(post.title, "\n ", post.link_flair_text, "\n ", post.url) + print( + " ", check_emoji if media[0] else cross_emoji, f"Media ({media[1]}) [{media[2]}]", + "\n" + ) def read_data(bot: Bot): @@ -52,11 +65,29 @@ def fetch_posts_with_flair(bot: Bot, flair_name: str) -> list[models.Submission] posts: list[models.Submission] = [] # ~36 OG-art posts per week, round limit to 50 or 75 - for post in bot.sr.search(f"flair:\"{flair_name}\"", sort="new", limit=10): + for post in bot.sr.new(limit=10): #.search(f"flair:\"{flair_name}\"", sort="new", limit=10): posts.append(post) return posts +def has_media(post: models.Submission) -> tuple[bool, str, int]: + media_type = None + media_count = 0 + + if hasattr(post, "post_hint"): + media_type = post.post_hint + media_count = 1 + + elif hasattr(post, "is_gallery"): + if not post.is_gallery: pass + media_type = "multiple" + if hasattr(post, "gallery_data") and post.gallery_data: + media_count = len(post.gallery_data.get("items", [])) + + + return (media_type != None, media_type, media_count) + + if __name__ == "__main__": main() \ No newline at end of file