Files
FABLE/main.py

72 lines
2.6 KiB
Python

import os
import asyncio
import logging
import yaml
from classes.channel import Channel
from utils.config import loadingmessage, bcolors
from utils.misc import clear_screen, printm, getenv
from utils.openaicaller import openai
logging.basicConfig(level=logging.INFO)
async def main():
printm("Loading...")
await asyncio.sleep(1)
clear_screen()
printm(loadingmessage)
await asyncio.sleep(4)
clear_screen()
await asyncio.sleep(1)
printm("Welcome in FABLE, the Film and Artistic Bot for Lively Entertainment!")
await asyncio.sleep(1)
printm(f"This program will generate for you complete {bcolors.FAIL}{bcolors.BOLD}YouTube{bcolors.ENDC} videos, as well as uploading them to YouTube.")
if not os.path.exists('env.yaml'):
printm("It looks like you don't have an OpenAI API key yet. Please paste it here:")
openai_api_key = input("Paste the key here: ")
openai.set_api_key(openai_api_key)
printm("Please also paste your unsplash access key here:")
unsplash_access_key = input("Paste the key here: ")
env_file = {
"openai_api_key": openai_api_key,
"unsplash_access_key": unsplash_access_key
}
with open('env.yaml', 'w') as f:
yaml.dump(env_file, f)
f.close()
else:
openai_api_key = getenv('openai_api_key')
openai.set_api_key(openai_api_key)
channels = os.listdir('channels')
if len(channels) == 0:
printm("It looks like you don't have any channels yet. Let's create one!")
channel = Channel()
await channel.create()
else:
printm("Here are your channels:")
for i, channel in enumerate(channels):
printm(f"{i+1}. {channel}")
printm(f"{len(channels)+1}. Create a new channel")
index = input("Which channel do you want to use : ")
if index == str(len(channels)+1):
channel = Channel()
await channel.create()
else:
channel_name = channels[int(index)-1]
channel = Channel()
await channel.load(channel_name)
printm("Now, let's create a video!")
printm("Here are all the ideas you have:")
for i, idea in enumerate(channel.ideas):
printm(f"{i+1}. {idea['title']}")
index = input("Which idea do you want to create a video for : ")
idea = channel.ideas[int(index)-1]
video = await channel.generate_video(idea)
printm("Done!")
printm("Here is the video:")
printm(video.url)
if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
loop.close()