From 1d86a8762cb241f82bb565a33b58dbee6ebee767 Mon Sep 17 00:00:00 2001 From: Drugsosos <44712637+Drugsosos@users.noreply.github.com> Date: Tue, 26 Jul 2022 12:00:42 +0300 Subject: [PATCH] fixes after self review --- utils/.config.template.toml | 395 ++++++++++++++++++------------------ utils/settings.py | 18 +- 2 files changed, 209 insertions(+), 204 deletions(-) diff --git a/utils/.config.template.toml b/utils/.config.template.toml index 45a481b..03ff47c 100644 --- a/utils/.config.template.toml +++ b/utils/.config.template.toml @@ -1,203 +1,198 @@ [reddit] - -[reddit.creds] -[reddit.creds.client_id] -optional = false -nmin = 12 -nmax = 30 -explanation = "the ID of your Reddit app of SCRIPT type" -example = "fFAGRNJru1FTz70BzhT3Zg" -regex = "^[-a-zA-Z0-9._~+/]+=*$" -input_error = "The client ID can only contain printable characters." -oob_error = "The ID should be over 12 and under 30 characters, double check your input." - -[reddit.creds.client_secret] -optional = false -nmin = 20 -nmax = 40 -explanation = "the SECRET of your Reddit app of SCRIPT var_type" -example = "fFAGRNJru1FTz70BzhT3Zg" -regex = "^[-a-zA-Z0-9._~+/]+=*$" -input_error = "The client ID can only contain printable characters." -oob_error = "The secret should be over 20 and under 40 characters, double check your input." - -[reddit.creds.username] -optional = false -nmin = 3 -nmax = 20 -explanation = "the username of your reddit account" -example = "JasonLovesDoggo" -regex = "^[-_0-9a-zA-Z]+$" -oob_error = "A username HAS to be between 3 and 20 characters" - -[reddit.creds.password] -optional = false -nmin = 8 -explanation = "the password of your reddit account" -example = "fFAGRNJru1FTz70BzhT3Zg" -oob_error = "Password too short" - -[reddit.creds.2fa] -optional = true -var_type = "bool" -options = [true, false] -default = false -explanation = "Whether you have Reddit 2FA enabled, Valid options are True and False" -example = true - - -[reddit.thread] -[reddit.thread.random] -optional = true -options = [true, false] -default = false -var_type = "bool" -explanation = "If set to no, it will ask you a thread link to extract the thread, if yes it will randomize it. Default: 'False'" -example = "True" - -[reddit.thread.subreddit] -optional = false -regex = "[_0-9a-zA-Z]+$" -nmin = 3 -explanation = "what subreddit to pull posts from, the name of the sub, not the URL" -example = "AskReddit" -oob_error = "A subreddit name HAS to be between 3 and 20 characters" - -[reddit.thread.post_id] -optional = true -default = "" -regex = "^((?!://|://)[+a-zA-Z0-9])*$" -explanation = "Used if you want to use a specific post." -example = "urdtfx" - -[reddit.thread.max_comment_length] -default = 500 -optional = false -nmin = 10 -nmax = 10000 -var_type = "int" -explanation = "max number of characters a comment can have. default is 500" -example = 500 -oob_error = "the max comment length should be between 10 and 10000" - -[reddit.thread.post_lang] -default = "" -optional = true -explanation = "The language you would like to translate to." -example = "es-cr" - -[reddit.thread.min_comments] -default = 20 -optional = false -nmin = 15 -var_type = "int" -explanation = "The minimum number of comments a post should have to be included. default is 20" -example = 29 -oob_error = "the minimum number of comments should be between 15 and 999999" + [reddit.creds] + [reddit.creds.client_id] + optional = false + nmin = 12 + nmax = 30 + explanation = "the ID of your Reddit app of SCRIPT type" + example = "fFAGRNJru1FTz70BzhT3Zg" + regex = "^[-a-zA-Z0-9._~+/]+=*$" + input_error = "The client ID can only contain printable characters." + oob_error = "The ID should be over 12 and under 30 characters, double check your input." + + [reddit.creds.client_secret] + optional = false + nmin = 20 + nmax = 40 + explanation = "the SECRET of your Reddit app of SCRIPT var_type" + example = "fFAGRNJru1FTz70BzhT3Zg" + regex = "^[-a-zA-Z0-9._~+/]+=*$" + input_error = "The client ID can only contain printable characters." + oob_error = "The secret should be over 20 and under 40 characters, double check your input." + + [reddit.creds.username] + optional = false + nmin = 3 + nmax = 20 + explanation = "the username of your reddit account" + example = "JasonLovesDoggo" + regex = "^[-_0-9a-zA-Z]+$" + oob_error = "A username HAS to be between 3 and 20 characters" + + [reddit.creds.password] + optional = false + nmin = 8 + explanation = "the password of your reddit account" + example = "fFAGRNJru1FTz70BzhT3Zg" + oob_error = "Password too short" + + [reddit.creds.2fa] + optional = true + var_type = "bool" + options = [true, false] + default = false + explanation = "Whether you have Reddit 2FA enabled, Valid options are True and False" + example = true + + [reddit.thread] + [reddit.thread.random] + optional = true + options = [true, false] + default = false + var_type = "bool" + explanation = "If set to no, it will ask you a thread link to extract the thread, if yes it will randomize it. Default: 'False'" + example = "True" + + [reddit.thread.subreddit] + optional = false + regex = "[_0-9a-zA-Z]+$" + nmin = 3 + explanation = "what subreddit to pull posts from, the name of the sub, not the URL" + example = "AskReddit" + oob_error = "A subreddit name HAS to be between 3 and 20 characters" + + [reddit.thread.post_id] + optional = true + default = "" + regex = "^((?!://|://)[+a-zA-Z0-9])*$" + explanation = "Used if you want to use a specific post." + example = "urdtfx" + + [reddit.thread.max_comment_length] + default = 500 + optional = false + nmin = 10 + nmax = 10000 + var_type = "int" + explanation = "max number of characters a comment can have. default is 500" + example = 500 + oob_error = "the max comment length should be between 10 and 10000" + + [reddit.thread.post_lang] + default = "" + optional = true + explanation = "The language you would like to translate to." + example = "es-cr" + + [reddit.thread.min_comments] + default = 20 + optional = false + nmin = 15 + var_type = "int" + explanation = "The minimum number of comments a post should have to be included. default is 20" + example = 29 + oob_error = "the minimum number of comments should be between 15 and 999999" [settings] -[settings.allow_nsfw] -optional = false -var_type = "bool" -default = false -example = false -options = [true, false] -explanation = "Whether to allow NSFW content, True or False" - -[settings.theme] -optional = false -default = "dark" -example = "light" -options = ["dark", "light"] -explanation = "sets the Reddit theme, either LIGHT or DARK" - -[settings.times_to_run] -optional = false -default = 1 -example = 2 -explanation = "used if you want to run multiple times. set to an int e.g. 4 or 29 or 1" -var_type = "int" -nmin = 1 -oob_error = "It's very hard to run something less than once." - -[settings.opacity] -optional = false -default = 0.9 -example = 0.8 -explanation = "Sets the opacity of the comments when overlayed over the background" -var_type = "float" -nmin = 0 -nmax = 1 -oob_error = "The opacity HAS to be between 0 and 1" -input_error = "The opacity HAS to be a decimal number between 0 and 1" - -[settings.transition] -optional = true -default = 0.2 -example = 0.2 -explanation = "Sets the transition time (in seconds) between the comments. Set to 0 if you want to disable it." -var_type = "float" -nmin = 0 -nmax = 2 -oob_error = "The transition HAS to be between 0 and 2" -input_error = "The opacity HAS to be a decimal number between 0 and 2" - -[settings.storymode] -optional = true -var_type = "bool" -default = false -example = false -options = [true, false] -explanation = "not yet implemented" - - -[settings.background] -[settings.background.background_choice] -optional = true -default = "minecraft" -example = "minecraft" -options = ["minecraft", "gta", "rocket-league", "motor-gta", "csgo-surf", "cluster-truck", ""] -explanation = "Sets the background for the video" - -#[settings.background.background_audio] -#optional = true -#var_type = "bool" -#default = false -#example = false -#options = [true, false] -#explaination="Sets a audio to play in the background (put a background.mp3 file in the assets/backgrounds directory for it to be used.)" -# -#[settings.background.background_audio_volume] -#optional = true -#var_type = "float" -#default = 0.3 -#example = 0.1 -#explanation="Sets the volume of the background audio. only used if the background_audio is also set to true" - - - -[settings.tts] -[settings.tts.choice] -optional = false -default = "" -options = ["streamlabspolly", "tiktok", "googletranslate", "awspolly", ""] -example = "streamlabspolly" -explanation = "The backend used for TTS generation. This can be left blank and you will be prompted to choose at runtime." - -[settings.tts.aws_polly_voice] -optional = false -default = "Matthew" -example = "Matthew" -explanation = "The voice used for AWS Polly" - -[settings.tts.streamlabs_polly_voice] -optional = false -default = "Matthew" -example = "Matthew" -explanation = "The voice used for Streamlabs Polly" - -[settings.tts.tiktok_voice] -optional = false -default = "en_us_006" -example = "en_us_006" -explanation = "The voice used for TikTok TTS" + [settings.allow_nsfw] + optional = false + var_type = "bool" + default = false + example = false + options = [true, false] + explanation = "Whether to allow NSFW content, True or False" + + [settings.theme] + optional = false + default = "dark" + example = "light" + options = ["dark", "light"] + explanation = "sets the Reddit theme, either LIGHT or DARK" + + [settings.times_to_run] + optional = false + default = 1 + example = 2 + explanation = "used if you want to run multiple times. set to an int e.g. 4 or 29 or 1" + var_type = "int" + nmin = 1 + oob_error = "It's very hard to run something less than once." + + [settings.opacity] + optional = false + default = 0.9 + example = 0.8 + explanation = "Sets the opacity of the comments when overlayed over the background" + var_type = "float" + nmin = 0 + nmax = 1 + oob_error = "The opacity HAS to be between 0 and 1" + input_error = "The opacity HAS to be a decimal number between 0 and 1" + + [settings.transition] + optional = true + default = 0.2 + example = 0.2 + explanation = "Sets the transition time (in seconds) between the comments. Set to 0 if you want to disable it." + var_type = "float" + nmin = 0 + nmax = 2 + oob_error = "The transition HAS to be between 0 and 2" + input_error = "The opacity HAS to be a decimal number between 0 and 2" + + [settings.storymode] + optional = true + var_type = "bool" + default = false + example = false + options = [true, false] + explanation = "not yet implemented" + + [settings.background] + [settings.background.background_choice] + optional = true + default = "minecraft" + example = "minecraft" + options = ["minecraft", "gta", "rocket-league", "motor-gta", "csgo-surf", "cluster-truck", ""] + explanation = "Sets the background for the video" + + #[settings.background.background_audio] + #optional = true + #var_type = "bool" + #default = false + #example = false + #options = [true, false] + #explaination="Sets a audio to play in the background (put a background.mp3 file in the assets/backgrounds directory for it to be used.)" + # + #[settings.background.background_audio_volume] + #optional = true + #var_type = "float" + #default = 0.3 + #example = 0.1 + #explanation="Sets the volume of the background audio. only used if the background_audio is also set to true" + + [settings.tts] + [settings.tts.choice] + optional = false + default = "" + options = ["streamlabspolly", "tiktok", "googletranslate", "awspolly", ""] + example = "streamlabspolly" + explanation = "The backend used for TTS generation. This can be left blank and you will be prompted to choose at runtime." + + [settings.tts.aws_polly_voice] + optional = false + default = "Matthew" + example = "Matthew" + explanation = "The voice used for AWS Polly" + + [settings.tts.streamlabs_polly_voice] + optional = false + default = "Matthew" + example = "Matthew" + explanation = "The voice used for Streamlabs Polly" + + [settings.tts.tiktok_voice] + optional = false + default = "en_us_006" + example = "en_us_006" + explanation = "The voice used for TikTok TTS" diff --git a/utils/settings.py b/utils/settings.py index f983c75..406f15b 100755 --- a/utils/settings.py +++ b/utils/settings.py @@ -154,7 +154,7 @@ def check_vars( checks: dict, ) -> None: """ - Checks if value is in nested dict and correct by path of keys + Checks if there is the value in the dict and it's correct Args: path: List with path @@ -204,9 +204,9 @@ def check_config_wrapper( return False console.print("Unable to read config, and not allowed to overwrite it. Giving up.") return False - # except Exception as error: - # console.print(f"[red bold]Encountered error when trying to to load {kwargs['template_name']}: {error}") - # return False + except Exception as error: + console.print(f"[red bold]Encountered error when trying to to load {kwargs['template_name']}: {error}") + return False return wrapper @@ -248,6 +248,16 @@ def check_config( config = toml.load(config_name) template = toml.load(template_name) + console.print( + """\ +[blue bold]############################### +# # +# Checking TOML configuration # +# # +############################### +If you see any prompts, that means that you have unset/incorrectly set variables, please input the correct values.\ +""" + ) crawl(template, check_vars) with open(config_name, "w") as f: toml.dump(config, f)