import json import time from typing import Dict from praw.models import Submission from utils import settings from utils.console import print_step def check_done( redditobj: Submission, ) -> Submission: # don't set this to be run anyplace that isn't subreddit.py bc of inspect stack """Checks if the chosen post has already been generated Args: redditobj (Submission): Reddit object gotten from reddit/subreddit.py Returns: Submission|None: Reddit object in args """ with open( "./video_creation/data/videos.json", "r", encoding="utf-8" ) as done_vids_raw: done_videos = json.load(done_vids_raw) for video in done_videos: if video["id"] == str(redditobj): if settings.config["reddit"]["thread"]["post_id"]: print_step( "You already have done this video but since it was declared specifically in the config file the program will continue" ) return redditobj print_step("Getting new post as the current one has already been done") return None return redditobj def save_data( subreddit: str, filename: str, reddit_title: str, reddit_id: str, credit: str ): """Saves the videos that have already been generated to a JSON file in video_creation/data/videos.json Args: filename (str): The finished video title name @param subreddit: @param filename: @param reddit_id: @param reddit_title: """ with open("./video_creation/data/videos.json", "r+", encoding="utf-8") as raw_vids: done_vids = json.load(raw_vids) if reddit_id in [video["id"] for video in done_vids]: return # video already done but was specified to continue anyway in the config file payload = { "subreddit": subreddit, "id": reddit_id, "time": str(int(time.time())), "background_credit": credit, "reddit_title": reddit_title, "filename": filename, } done_vids.append(payload) raw_vids.seek(0) json.dump(done_vids, raw_vids, ensure_ascii=False, indent=4)