You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
121 lines
5.6 KiB
121 lines
5.6 KiB
#!/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")
|
|
)
|
|
download_background()
|
|
chop_background_video(length)
|
|
final_video = make_final_video(number_of_comments)
|