#!/usr/bin/env python3 # Main from utils.console import print_markdown from rich.console import Console import time from reddit.subreddit import get_subreddit_threads from video_creation.background import download_background, chop_background_video from video_creation.voices import save_text_to_mp3 from video_creation.screenshot_downloader import download_screenshots_of_reddit_posts from video_creation.final_video import make_final_video from dotenv import load_dotenv import os console = Console() configured = True REQUIRED_VALUES = [ "REDDIT_CLIENT_ID", "REDDIT_CLIENT_SECRET", "REDDIT_USERNAME", "REDDIT_PASSWORD", "OPACITY", ] #Banner may look bad or wrong in IDE/Text Editor, but looks perfect in CMD, BASH or ZSH banner = ''' ██████╗░███████╗██████╗░██████╗░██╗████████╗  ██╗░░░██╗██╗██████╗░███████╗░█████╗░ ██╔══██╗██╔════╝██╔══██╗██╔══██╗██║╚══██╔══╝  ██║░░░██║██║██╔══██╗██╔════╝██╔══██╗ ██████╔╝█████╗░░██║░░██║██║░░██║██║░░░██║░░░  ╚██╗░██╔╝██║██║░░██║█████╗░░██║░░██║ ██╔══██╗██╔══╝░░██║░░██║██║░░██║██║░░░██║░░░  ░╚████╔╝░██║██║░░██║██╔══╝░░██║░░██║ ██║░░██║███████╗██████╔╝██████╔╝██║░░░██║░░░  ░░╚██╔╝░░██║██████╔╝███████╗╚█████╔╝ ╚═╝░░╚═╝╚══════╝╚═════╝░╚═════╝░╚═╝░░░╚═╝░░░  ░░░╚═╝░░░╚═╝╚═════╝░╚══════╝░╚════╝░ ███╗░░░███╗░█████╗░██╗░░██╗███████╗██████╗░ ████╗░████║██╔══██╗██║░██╔╝██╔════╝██╔══██╗ ██╔████╔██║███████║█████═╝░█████╗░░██████╔╝ ██║╚██╔╝██║██╔══██║██╔═██╗░██╔══╝░░██╔══██╗ ██║░╚═╝░██║██║░░██║██║░╚██╗███████╗██║░░██║ ╚═╝░░░░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚══════╝╚═╝░░╚═╝ ''' print(banner) #Banner may look bad or wrong in IDE/Text Editor, but looks perfect in CMD, BASH or ZSH time.sleep(.5) print_markdown( "### Thanks for using this tool! [Feel free to contribute to this project on GitHub!](https://lewismenelaws.com) If you have any questions, feel free to reach out to me on Twitter or submit a GitHub issue." ) """ Load .env file if exists. If it doesnt exist, print a warning and launch the setup wizard. If there is a .env file, check if the required variables are set. If not, print a warning and launch the setup wizard. """ client_id = os.getenv("REDDIT_CLIENT_ID") client_secret = os.getenv("REDDIT_CLIENT_SECRET") username = os.getenv("REDDIT_USERNAME") password = os.getenv("REDDIT_PASSWORD") reddit2fa = os.getenv("REDDIT_2FA") load_dotenv() console.log("[bold green]Checking environment variables...") time.sleep(.5) if not os.path.exists(".env"): configured = False console.log("[red] Your .env file is invalid, or was never created. Standby.") for val in REQUIRED_VALUES: # print(os.getenv(val)) if val not in os.environ or not os.getenv(val): console.log(f'[bold red]Missing Variable: "{val}"') configured = False console.log( "[red]Looks like you need to set your Reddit credentials in the .env file. Please follow the instructions in the README.md file to set them up." ) time.sleep(0.5) console.log( "[red]We can also launch the easy setup wizard. type yes to launch it, or no to quit the program." ) setup_ask = input("Launch setup wizard? > ") if setup_ask == "yes": console.log("[bold green]Here goes nothing! Launching setup wizard...") time.sleep(0.5) os.system("python3 setup.py") elif setup_ask == "no": console.print("[red]Exiting...") time.sleep(0.5) exit() else: console.print("[red]I don't understand that. Exiting...") time.sleep(0.5) exit() try: float(os.getenv("OPACITY")) except ValueError: console.log( "[red]Please ensure that OPACITY is set between 0 and 1 in your .env file" ) configured = False exit() console.log("[bold green]Enviroment Variables are set! Continuing...") if configured: reddit_object = get_subreddit_threads() length, number_of_comments = save_text_to_mp3(reddit_object) download_screenshots_of_reddit_posts( reddit_object, number_of_comments, os.getenv("THEME", "light") ) while True: vidpath = download_background(length) noerror = chop_background_video(length, vidpath) if noerror is True: break final_video = make_final_video(number_of_comments)