Spaces:
Running
Running
def prompt_with_default(prompt_text, default_value=None, cast_type=str): | |
user_input = input(f"{prompt_text} ") | |
if user_input.strip() == "": | |
return default_value | |
try: | |
return cast_type(user_input) | |
except ValueError: | |
print(f"Invalid input. Using default: {default_value}") | |
return default_value | |
def get_user_inputs(): | |
# 1. Novel genre | |
genre = prompt_with_default("Novel genre (press Enter for default - teen mystery):", "teen mystery") | |
# 2. General plot | |
plot = input("General plot (Enter for auto-generated plot): ").strip() | |
if not plot: | |
plot = "Auto-Generated Plot" | |
# 3. Title | |
title = input("Title (Enter for auto-generated title): ").strip() | |
if not title: | |
title = "Auto-Generated Title" | |
# 4. Number of pages | |
num_pages = prompt_with_default("Number of pages in novel (Enter for default - 90 pages):", 90, int) | |
num_words = num_pages * 275 | |
# 5. Number of chapters | |
num_chapters = prompt_with_default("Number of chapters (Enter for default - 15):", 15, int) | |
# 6. Max AI tokens | |
while True: | |
max_tokens_input = input( | |
"\nMaximum AI tokens to use. Note that if the max tokens is not high enough, \ | |
the novel might not be completely generated. (about 50,000 - 200,000 tokens for 90): " | |
).strip() | |
try: | |
max_tokens = int(max_tokens_input) | |
if max_tokens <= 0: | |
print("Please enter a positive integer.") | |
continue | |
if max_tokens > 300000: | |
print(f"\n⚠️ You entered {max_tokens:,} tokens, which is quite high and may be expensive.") | |
confirm = input("Are you sure you want to use this value? (Yes or No): ").strip().lower() | |
if confirm != "yes": | |
print("Okay, let's try again.\n") | |
continue # Ask again | |
break # Valid and confirmed | |
except ValueError: | |
print("Please enter a valid integer.") | |
print(f"\nGenre: {genre}") | |
print(f"Plot: {plot}") | |
print(f"Title: {title}") | |
print(f"Pages: {num_pages}") | |
print(f"Chapters: {num_chapters}") | |
print(f"Max Tokens: {max_tokens}") | |
return genre, title, num_pages, num_words, num_chapters, plot, max_tokens |