49 lines
1.2 KiB
Python
49 lines
1.2 KiB
Python
import os
|
|
import pathlib
|
|
import random
|
|
import re
|
|
|
|
import praw
|
|
from dotenv import load_dotenv
|
|
from jinja2 import Environment
|
|
from jinja2 import FileSystemLoader
|
|
from praw.models import Submission
|
|
from praw.models import Redditor
|
|
|
|
load_dotenv()
|
|
|
|
IMAGE_ONLY_REGEX = re.compile(r"(http(s?):)([/|.|\w|\s|-])*\.(?:jpg|png)")
|
|
|
|
|
|
def main() -> int:
|
|
reddit = praw.Reddit(
|
|
client_id=os.getenv("REDDIT_CLIENT_ID"),
|
|
client_secret=os.getenv("REDDIT_CLIENT_SECRET"),
|
|
user_agent="reddit-saved-pptx",
|
|
username=os.getenv("REDDIT_USERNAME"),
|
|
password=os.getenv("REDDIT_PASSWORD"),
|
|
)
|
|
|
|
me: Redditor = reddit.user.me()
|
|
|
|
nsfw_posts: list[Submission] = []
|
|
for post in me.saved(limit=None):
|
|
if not isinstance(post, Submission):
|
|
continue
|
|
|
|
post: Submission
|
|
if IMAGE_ONLY_REGEX.match(post.url):
|
|
nsfw_posts.append(post)
|
|
|
|
random.shuffle(nsfw_posts)
|
|
|
|
environment = Environment(loader=FileSystemLoader("templates/"))
|
|
template = environment.get_template("base.jinja2")
|
|
result = template.render(nsfw_posts=nsfw_posts)
|
|
pathlib.Path("slide-deck.md").write_text(result, encoding="utf8")
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
raise SystemExit(main())
|