From be20abb8336e9f3c50873ba38b83b871bdd8d3e6 Mon Sep 17 00:00:00 2001 From: Paillat Date: Mon, 15 May 2023 11:50:33 +0200 Subject: [PATCH] feat(ideas.py): add support for generating ideas for a specific subject feat(ideas.py): add support for appending new ideas to existing ideas.json file --- generators/ideas.py | 15 +++++++++++---- main.py | 16 +++++++++++----- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/generators/ideas.py b/generators/ideas.py index 0407d73..2d1666e 100644 --- a/generators/ideas.py +++ b/generators/ideas.py @@ -1,5 +1,6 @@ import openai import os +import json from dotenv import load_dotenv load_dotenv() @@ -10,16 +11,22 @@ with open('prompts/ideas.txt') as f: f.close() -async def generate_ideas(): - with open('ideas/ideas.json', 'r') as f: +async def generate_ideas(path): + with open(f'{path}/ideas.json', 'r') as f: ideas = f.read() + ides_json = json.loads(ideas) f.close() prmpt = prompt.replace('[existing ideas]', ideas) - print(prmpt) response = await openai.ChatCompletion.acreate( model="gpt-3.5-turbo", messages=[ {"role":"user","content":prmpt}, ], ) - return response['choices'][0]['message']['content'] \ No newline at end of file + json_in_str= response['choices'][0]['message']['content'] + json_obj = json.loads(json_in_str) + for idea in json_obj: + ides_json.append(idea) + with open(f'{path}/ideas.json', 'w') as f: + f.write(json.dumps(ides_json)) + f.close() \ No newline at end of file diff --git a/main.py b/main.py index 1584796..eeae410 100644 --- a/main.py +++ b/main.py @@ -11,11 +11,17 @@ from generators.miniature import generate_miniature logging.basicConfig(level=logging.INFO) async def main(): + with open('env/subjects.txt', 'r', encoding='utf-8') as f: + subjects = f.read().splitlines() + f.close() + for i in range(len(subjects)): + print(str(i) + ". " + subjects[i]) + subject = int(input("Which subject do you want to generate ideas for? (enter the number): ")) + subject = subjects[subject] + subjectdirpath = subject[:25].replace(" ", "_").replace(":", "") + if not os.path.exists(subjectdirpath): os.makedirs(subjectdirpath) if input("Do you want to generate new ideas? (y/n)") == "y": - ideas = await generate_ideas() - if not os.path.exists('ideas'): os.makedirs('ideas') - with open('ideas/ideas.json', 'w', encoding='utf-8') as f: - f.write(ideas) + await generate_ideas(subjectdirpath) with open('ideas/ideas.json', 'r', encoding='utf-8') as f: ideas = json.load(f) f.close() @@ -26,7 +32,7 @@ async def main(): title = idea['title'] title = title[:25] i = 0 - path = "videos/" + title + path = subjectdirpath + "/" + title path = path.replace(" ", "_").replace(":", "") if not os.path.exists(path + "/script.json"): script = await generate_script(idea['title'], idea['description'])