"""
Setup Script for RedditVideoMakerBot
"""
# Imports
import os
import time
from utils . console import print_markdown
from utils . console import print_step
from utils . console import print_substep
from rich . console import Console
from utils . loader import Loader
from os . path import exists
console = Console ( )
setup_done = exists ( " .setup-done-before " )
if setup_done == True :
console . log ( " [red]Setup was already completed! Please make sure you have to run this script again. If you have to, please delete the file .setup-done-before " )
exit ( )
# These lines ensure the user:
# - knows they are in setup mode
# - knows that they are about to erase any other setup files/data.
print_step ( " Setup Assistant " )
print_markdown (
" ### You ' re in the setup wizard. Ensure you ' re supposed to be here, then type yes to continue. If you ' re not sure, type no to quit. "
)
# This Input is used to ensure the user is sure they want to continue.
ensureSetupIsRequired = input ( " Are you sure you want to continue? > " ) . casefold ( )
if ensureSetupIsRequired != " yes " :
console . print ( " [red]Exiting... " )
time . sleep ( 0.5 )
exit ( )
else :
# Again, let them know they are about to erase all other setup data.
console . print ( " [bold red] This will overwrite your current settings. Are you sure you want to continue? [bold green]yes/no " )
overwriteSettings = input ( " Are you sure you want to continue? > " ) . casefold ( )
if overwriteSettings != " yes " :
console . print ( " [red]Abort mission! Exiting... " )
time . sleep ( 0.5 )
exit ( )
else :
# Once they confirm, move on with the script.
console . print ( " [bold green]Alright! Let ' s get started! " )
time . sleep ( 1 )
console . log ( " Ensure you have the following ready to enter: " )
console . log ( " [bold green]Reddit Client ID " )
console . log ( " [bold green]Reddit Client Secret " )
console . log ( " [bold green]Reddit Username " )
console . log ( " [bold green]Reddit Password " )
console . log ( " [bold green]Reddit 2FA (yes or no) " )
console . log ( " [bold green]Opacity (range of 0-1, decimals are OK) " )
console . log ( " [bold green]Subreddit (without r/ or /r/) " )
console . log ( " [bold green]Theme (light or dark) " )
time . sleep ( 0.5 )
console . print ( " [green]If you don ' t have these, please follow the instructions in the README.md file to set them up. " )
console . print ( " [green]If you do have these, type yes to continue. If you dont, go ahead and grab those quickly and come back. " )
confirmUserHasCredentials = input ( " Are you sure you have the credentials? > " ) . casefold ( )
if confirmUserHasCredentials != " yes " :
console . print ( " [red]I don ' t understand that. " )
console . print ( " [red]Exiting... " )
exit ( )
else :
console . print ( " [bold green]Alright! Let ' s get started! " )
time . sleep ( 1 )
"""
Begin the setup process .
"""
console . log ( " Enter your credentials now. " )
cliID = input ( " Client ID > " )
cliSec = input ( " Client Secret > " )
user = input ( " Username > " )
passw = input ( " Password > " )
twofactor = input ( " 2fa Enabled? (yes/no) > " )
opacity = input ( " Opacity? (range of 0-1) > " )
subreddit = input ( " Subreddit (without r/) > " )
theme = input ( " Theme? (light or dark) > " )
console . log ( " Attempting to save your credentials... " )
loader = Loader ( " Saving Credentials... " , " Done! " ) . start ( )
# you can also put a while loop here, e.g. while VideoIsBeingMade == True: ...
time . sleep ( 0.5 )
console . log ( " Removing old .env file... " )
os . remove ( " .env " )
time . sleep ( 0.5 )
console . log ( " Creating new .env file... " )
with open ( ' .env ' , ' a ' ) as f :
f . write ( f ' REDDIT_CLIENT_ID= " { cliID } " \n ' )
time . sleep ( 0.5 )
f . write ( f ' REDDIT_CLIENT_SECRET= " { cliSec } " \n ' )
time . sleep ( 0.5 )
f . write ( f ' REDDIT_USERNAME= " { user } " \n ' )
time . sleep ( 0.5 )
f . write ( f ' REDDIT_PASSWORD= " { passw } " \n ' )
time . sleep ( 0.5 )
f . write ( f ' REDDIT_2FA= " { twofactor } " \n ' )
time . sleep ( 0.5 )
f . write ( f ' THEME= " { theme } " \n ' )
time . sleep ( 0.5 )
f . write ( f ' SUBREDDIT= " { subreddit } " \n ' )
time . sleep ( 0.5 )
f . write ( f ' OPACITY= " { opacity } " \n ' )
with open ( ' .setup-done-before ' , ' a ' ) as f :
f . write ( " This file blocks the setup assistant from running again. Delete this file to run setup again. " )
loader . stop ( )
console . log ( " [bold green]Setup Complete! Returning... " )
# Post-Setup: send message and try to run main.py again.
os . system ( " python3 main.py " )