made bot scan subreddits and evaluate data
This commit is contained in:
+3
-1
@@ -6,4 +6,6 @@ Cargo.lock
|
|||||||
.vscode/
|
.vscode/
|
||||||
|
|
||||||
# program-created data
|
# program-created data
|
||||||
data/reddit_data.json
|
data/reddit_data.json
|
||||||
|
data/reddit_images/*
|
||||||
|
!data/reddit_images/
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
### High priority:
|
### High priority:
|
||||||
- [x] Embed creation tool
|
- [x] Embed creation tool
|
||||||
|
- [ ] Reddit bot that scrapes images with tag "Original Art" and posts them in Discord server
|
||||||
|
|
||||||
### Medium priority:
|
### Medium priority:
|
||||||
- [x] JSON -> Rules list
|
- [x] JSON -> Rules list
|
||||||
|
|||||||
+2
-2
@@ -52,8 +52,8 @@ async fn main() {
|
|||||||
let stdout = str::from_utf8(&output.stdout).unwrap_or("Invalid UTF-8 in stdout");
|
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");
|
let stderr = str::from_utf8(&output.stderr).unwrap_or("Invalid UTF-8 in stderr");
|
||||||
|
|
||||||
println!("PYTHON OUTPUT:\n{}\n", stdout);
|
println!("--- PYTHON OUTPUT:\n\n{}\n", stdout);
|
||||||
println!("PYTHON ERROR:\n{}", stderr);
|
println!("--- PYTHON ERROR:\n\n{}", stderr);
|
||||||
|
|
||||||
process::exit(1);
|
process::exit(1);
|
||||||
}
|
}
|
||||||
|
|||||||
+33
-2
@@ -3,6 +3,8 @@ from praw import models
|
|||||||
import praw
|
import praw
|
||||||
import os
|
import os
|
||||||
import json
|
import json
|
||||||
|
import emoji
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
class Bot:
|
class Bot:
|
||||||
@@ -22,13 +24,24 @@ class Bot:
|
|||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
sys.stdout.reconfigure(encoding="utf-8")
|
||||||
|
|
||||||
bot = Bot()
|
bot = Bot()
|
||||||
read_data(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")
|
posts = fetch_posts_with_flair(bot, "Original Art")
|
||||||
|
|
||||||
for post in posts:
|
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):
|
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] = []
|
posts: list[models.Submission] = []
|
||||||
|
|
||||||
# ~36 OG-art posts per week, round limit to 50 or 75
|
# ~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)
|
posts.append(post)
|
||||||
|
|
||||||
return posts
|
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__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
Reference in New Issue
Block a user