Spaces:
Runtime error
Runtime error
from remove_astricks import remove_ast | |
from load_model import call_palm | |
from keywords_generation import keywords_generator, keywords_generator_long_tail, filter_keywords, process_keywords | |
from idea_generation import ideas_generator, filter_ideas | |
from outline_generation import outlines_generator, filtered_outlines | |
from article_generation import full_article | |
from product_description_generation import product_description_gen | |
from workout_plan_generation import workout_plan_gen | |
from linkedin_content_creation import linkedIn_content_gen | |
import X_content_creation | |
import blog_content_creation | |
import meta_content_creation | |
import email_writer | |
import streamlit as st | |
import spacy | |
from dotenv import load_dotenv, find_dotenv | |
import os | |
load_dotenv(find_dotenv()) | |
google_api_key = os.environ['OPENAI_API_KEY'] | |
if __name__ == '__main__': | |
llm = call_palm(google_api_key) | |
tone_of_voice_list = ('Excited', 'Professional', 'Encouraging', 'Funny', 'Dramatic', 'Witty', 'Sarcastic', 'Engaging', 'Creative') | |
languages = ('En', 'Ar', 'De', 'Fr', 'It', 'Es', 'Pt', 'Ru', 'Hi', 'Ja', 'Nl', 'Zh') | |
creativity_list = ('Original', 'Balanced', 'Creative', 'Spirited', 'Visionary') | |
models = ('Google Palm 2', 'GPT-3.5', 'GPT-4') | |
with st.sidebar: | |
st.image('Logo.png') | |
choice = st.radio("Navigation", ["Articles and Blogs", "Product Description", "LinkedIn Content", "Gym Workout Plan", "Landing Page", "X Content Creation", "Meta Content", "Emails"]) | |
st.info("Generate your Content with Feather AI in Seconds..") | |
if choice == 'Product Description': | |
product_name = st.text_input('Product Name') | |
product_desc = st.text_area('Product Description') | |
tone_of_voice = st.selectbox('Tone of Voice', tone_of_voice_list) | |
model = st.selectbox('Choose the Model', models) | |
creativity = st.selectbox('Creativity Level', creativity_list) | |
language = st.selectbox('Choose a language', languages) | |
if product_name and product_desc and tone_of_voice and model and creativity and language: | |
if st.button('Generate'): | |
product_description = product_description_gen(product_name, product_desc, tone_of_voice=tone_of_voice, model_name=model, creativity=creativity, language=language) | |
st.markdown(product_description) | |
elif choice == 'LinkedIn Content': | |
linkedIn_content_generation = linkedIn_content_gen() | |
linkedIn_choices_list = ('LinkedIn Post', 'LinkedIn Ads') | |
linkedIn_choices = st.selectbox('Choose LinkedIn Template', linkedIn_choices_list) | |
if linkedIn_choices == linkedIn_choices_list[0]: | |
topic = st.text_input('Topic') | |
tone_of_voice = st.selectbox('Tone of Voice', tone_of_voice_list) | |
model = st.selectbox('Choose a model', models) | |
creativity = st.selectbox('Choose a creativity', creativity_list) | |
language = st.selectbox('Choose a language', languages) | |
if topic and tone_of_voice and model and creativity and language: | |
if st.button('Generate'): | |
linkedIn_post = linkedIn_content_generation.linkedIn_post_gen(topic, tone_of_voice, language=language, model_name=model, creativity=creativity) | |
st.markdown(linkedIn_post) | |
elif linkedIn_choices == linkedIn_choices_list[1]: | |
product_name = st.text_input('Product Name') | |
product_desc = st.text_area('Product Description') | |
target_audience = st.text_input('Target Audience') | |
target_keywords = st.text_input('Target Keywords') | |
model = st.selectbox('Choose a model', models) | |
creativity = st.selectbox('Choose a creativity', creativity_list) | |
language = st.selectbox('Choose a language', languages) | |
if product_name and product_desc and target_audience and target_keywords and model and creativity and language: | |
if st.button('Generate'): | |
linkedIn_ad = linkedIn_content_generation.linkedIn_ads_gen(product_name, product_desc, target_audience, target_keywords, language=language, model_name=model, creativity=creativity) | |
st.markdown(linkedIn_ad) | |
elif choice == "Gym Workout Plan": | |
fitness_level_list = ('Beginner', 'Intermediate', 'Advanced', 'Elite') | |
health_consd_list = ('Cutting Phase', 'Bulking Phase', 'Maintenance Phase', 'Lean Muscle Gain') | |
routine_list = ('Bro Split', 'Push Pull Leg', 'Upper and Lower', 'Full Body') | |
fitness_level = st.selectbox('Fitness Level', fitness_level_list) | |
days = st.slider('Avaliable Days Per Week',1,7,4) | |
hours = st.slider('Avaliable Hours Per Day',1,6,2) | |
health_consd = st.selectbox('Health Considerations',health_consd_list) | |
routine = st.selectbox("Preferred Routine", routine_list) | |
my_goals = st.text_input('Goals') | |
model = st.selectbox('Choose a Model', models) | |
creativity = st.selectbox('Creativity Level', creativity_list) | |
language = st.selectbox('Select a Language', languages) | |
if fitness_level and days and hours and health_consd and routine and my_goals and model and creativity and language: | |
if st.button('Generate'): | |
workout_plan = workout_plan_gen(my_goals, fitness_level, days, hours, health_consd, routine, model_name=model, creativity=creativity, language=language) | |
st.markdown(workout_plan) | |
elif choice == "Landing Page": | |
#product_name = st.text_input('Product Name') | |
#product_desc = st.text_area('Description') | |
#target_audience = st.text_input('Target Audience') | |
#goal = st.text_input('Goal') | |
st.title('Not Working') | |
#if product_name and product_desc and target_audience and goal: | |
#if st.button('Generate'): | |
#landing_page = landing_page_gen(product_name, product_desc, target_audience, goal, llm) | |
#st.markdown(landing_page) | |
elif choice == 'X Content Creation': | |
X_content = X_content_creation.X_Generator() | |
x_choices_list = ('X thread', 'X Retweet Commenting', 'X Campaign', 'X Bio Creation', 'Article Conversion to X Thread') | |
x_choices = st.selectbox('Choose X Template', x_choices_list) | |
if x_choices == x_choices_list[0]: | |
topic = st.text_input('Topic') | |
num_tweets = st.slider('Number of Thread tweet', 1,10,5) | |
tone_of_voice = st.selectbox('Tone of Voice', tone_of_voice_list) | |
model = st.selectbox('Choose a model', models) | |
creativity = st.selectbox('Choose a creativity', creativity_list) | |
language = st.selectbox('Choose a language', languages) | |
if topic and num_tweets and tone_of_voice and model and creativity and language: | |
if st.button('Generate'): | |
X_thread = X_content.x_thread_gen(topic, num_tweets, tone_of_voice, language=language, model_name=model, creativity=creativity) | |
intro = X_content.x_thread_gen_intro(topic, X_thread, tone_of_voice, language=language, model_name=model, creativity=creativity) | |
st.markdown(intro) | |
st.markdown(X_thread) | |
elif x_choices == x_choices_list[1]: | |
tweet = st.text_area('Tweet') | |
tone_of_voice = st.selectbox('Tone of voice', tone_of_voice_list) | |
model = st.selectbox('Choose a model', models) | |
creativity = st.selectbox('Choose a creativity', creativity_list) | |
language = st.selectbox('Choose a language', languages) | |
if tweet and tone_of_voice and model and creativity and language: | |
if st.button('Generate'): | |
x_retweet_comment = X_content.x_retweet_commenting_gen(tweet, tone_of_voice, language=language, model_name=model, creativity=creativity) | |
st.markdown(x_retweet_comment) | |
elif x_choices == x_choices_list[2]: | |
product_name = st.text_input('Product Name') | |
product_desc = st.text_area('Product Description') | |
goal = st.text_input('Goal') | |
model = st.selectbox('Choose a model', models) | |
creativity = st.selectbox('Choose a creativity', creativity_list) | |
language = st.selectbox('Choose a language', languages) | |
if product_name and product_desc and goal and model and creativity and language: | |
if st.button('Generate'): | |
x_camp = X_content.x_camp_gen(product_name, product_desc, goal, language=language, model_name=model, creativity=creativity) | |
st.markdown(x_camp) | |
elif x_choices == x_choices_list[3]: | |
info = st.text_area('info') | |
tone_of_voice = st.selectbox('Tone of voice', tone_of_voice_list) | |
model = st.selectbox('Choose a model', models) | |
creativity = st.selectbox('Choose a creativity', creativity_list) | |
language = st.selectbox('Choose a language', languages) | |
if info and tone_of_voice and model and creativity and language: | |
if st.button('Generate'): | |
x_bio = X_content.x_bio_gen(info, tone_of_voice, language=language, model_name=model, creativity=creativity) | |
st.markdown(x_bio) | |
elif x_choices == x_choices_list[4]: | |
article = st.text_area('Article') | |
model = st.selectbox('Choose a model', models) | |
creativity = st.selectbox('Choose a creativity', creativity_list) | |
language = st.selectbox('Choose a language', languages) | |
if article and model and creativity and language: | |
if st.button('Generate'): | |
article_to_x_thread = X_content.article_to_x_thread_gen(article, language=language, model_name=model, creativity=creativity) | |
st.markdown(article_to_x_thread) | |
elif choice == 'Articles and Blogs': | |
blog_content = blog_content_creation.blog_content_generation() | |
blog_choices_list = ('Article Writer', 'Blog Post', 'Blog Ideas', 'Blog Tags', 'Blog Ideas description') | |
blog_choices = st.selectbox('Choose Blog Template', blog_choices_list) | |
if blog_choices == blog_choices_list[0]: | |
topic = st.text_input('Topic') | |
tone_of_voice = st.selectbox('Tone of Voice', tone_of_voice_list) | |
model = st.selectbox('Choose a model', models) | |
creativity = st.selectbox('Choose a creativity', creativity_list) | |
language = st.selectbox('Choose a language', languages) | |
if topic and tone_of_voice and model and creativity and language: | |
keywords = keywords_generator(topic, num_keywords=10, language=language, model_name=model, creativity=creativity) | |
keywords_gen_long_tail = keywords_generator_long_tail(topic, num_keywords=10, language=language, model_name=model, creativity=creativity) | |
filtered_keywords = filter_keywords(keywords) | |
filtered_keywords_long_tail = filter_keywords(keywords_gen_long_tail) | |
formatted_keywords = process_keywords(filtered_keywords) | |
formatted_keywords_long_tail = process_keywords(filtered_keywords_long_tail) | |
st.markdown('### Generated Keywords:\n') | |
st.markdown(formatted_keywords) | |
formatted_keywords = remove_ast(formatted_keywords) | |
formatted_keywords_long_tail = remove_ast(formatted_keywords_long_tail) | |
idea_numbers = st.slider("How many ideas you want?",1,10,5) | |
ideas = ideas_generator(topic, formatted_keywords_long_tail, tone_of_voice=tone_of_voice, num_of_ideas=idea_numbers, language=language, model_name=model, creativity=creativity) | |
filtered_ideas = filter_ideas(ideas) | |
index = 1 | |
st.markdown("### Generated Ideas:\n") | |
for idea in filtered_ideas: | |
st.markdown(f"{index} - {idea}") | |
index+=1 | |
st.text('\n') | |
num_idea = st.text_input("Choose the idea you want by number") | |
if num_idea: | |
num_idea = int(num_idea) | |
idea = filtered_ideas[num_idea-1] | |
idea = remove_ast(idea) | |
outline = outlines_generator(idea,formatted_keywords_long_tail, language=language, model_name=model, creativity=creativity) | |
st.text('\n') | |
st.markdown("### Generated Outline:\n") | |
st.markdown(outline) | |
outline_list = filtered_outlines(outline) | |
outline_list2=[] | |
for section in outline_list: | |
cleaned_section = remove_ast(section) | |
outline_list2.append(cleaned_section) | |
if st.button('Generate'): | |
article = full_article(idea, outline_list2, tone_of_voice=tone_of_voice, language=language, model_name=model, creativity=creativity) | |
st.markdown("# Your Article:\n") | |
st.markdown(f"{idea}\n") | |
st.markdown('\n\n'.join(article)) | |
st.text('\n\n') | |
num_full_art_chars = len('\n'.join(article)) | |
nlp = spacy.load('en_core_web_sm') | |
doc = nlp('\n'.join(article)) | |
num_full_art_words = len(doc) | |
st.markdown(f"{num_full_art_chars} Characters") | |
st.markdown(f"{num_full_art_words} Words") | |
elif blog_choices == blog_choices_list[1]: | |
topic = st.text_input('Topic') | |
tone_of_voice = st.selectbox('Tone of Voice', tone_of_voice_list) | |
model = st.selectbox('Choose a model', models) | |
creativity = st.selectbox('Choose a creativity', creativity_list) | |
language = st.selectbox('Choose a language', languages) | |
if topic and tone_of_voice and model and creativity and language: | |
if st.button('Generate'): | |
blog_post = blog_content.blog_post_gen(topic, tone_of_voice=tone_of_voice, language=language, creativity=creativity, model_name=model) | |
st.markdown(blog_post) | |
elif blog_choices == blog_choices_list[2]: | |
topic = st.text_input('Topic') | |
model = st.selectbox('Choose a model', models) | |
creativity = st.selectbox('Choose a creativity', creativity_list) | |
language = st.selectbox('Choose a language', languages) | |
if topic: | |
if st.button('Generate'): | |
blog_idea = blog_content.blog_idea_gen(topic, model_name=model, creativity=creativity, language=language) | |
st.markdown(blog_idea) | |
elif blog_choices == blog_choices_list[4]: | |
topic = st.text_input('topic') | |
model = st.selectbox('Choose a model', models) | |
creativity = st.selectbox('Choose a creativity', creativity_list) | |
language = st.selectbox('Choose a language', languages) | |
if topic and model and creativity and language: | |
if st.button('Generate'): | |
blog_idea_desc = blog_content.blog_idea_desc_gen(topic, model_name=model, creativity=creativity, language=language) | |
st.markdown(blog_idea_desc) | |
elif blog_choices == blog_choices_list[3]: | |
blog = st.text_area('Blog') | |
model = st.selectbox('Choose a model', models) | |
creativity = st.selectbox('Choose a creativity', creativity_list) | |
language = st.selectbox('Choose a language', languages) | |
if blog and model and creativity and language: | |
if st.button('Generate'): | |
blog_tags = blog_content.blog_tags_gen(blog, model_name=model, creativity=creativity, language=language) | |
st.markdown(blog_tags) | |
elif choice == 'Meta Content': | |
meta_content_gen = meta_content_creation.meta_content_generation() | |
meta_choices_list = ('Facebook Post', 'Facebook Ads', 'Facebook Campaign', 'Insta Image Captioning') | |
meta_choices = st.selectbox('Choose Blog Template', meta_choices_list) | |
if meta_choices == meta_choices_list[0]: | |
topic = st.text_input("Topic") | |
tone_of_voice = st.selectbox('Tone of Voice', tone_of_voice_list) | |
model = st.selectbox('Choose a model', models) | |
creativity = st.selectbox('Choose a creativity', creativity_list) | |
language = st.selectbox('Choose a language', languages) | |
if topic and tone_of_voice and model and creativity and language: | |
if st.button('Generate'): | |
facebook_post = meta_content_gen.facebook_post_gen(tone_of_voice, topic, language=language, model_name=model, creativity=creativity) | |
st.markdown(facebook_post) | |
elif meta_choices == meta_choices_list[1]: | |
product_name = st.text_input('Product Name') | |
product_desc = st.text_area('Description') | |
targeted_audience = st.text_input('Target Audience') | |
plans_proms = st.text_input('Plan and Promotions') | |
tone_of_voice = st.selectbox('Tone of Voice', tone_of_voice_list) | |
model = st.selectbox('Choose a model', models) | |
creativity = st.selectbox('Choose a creativity', creativity_list) | |
language = st.selectbox('Choose a language', languages) | |
if product_name and product_desc and tone_of_voice and model and creativity and language: | |
if st.button('Generate'): | |
face_ad__prom = meta_content_gen.facebook_ads_gen(product_name, product_desc, tone_of_voice, targeted_audience, plans_proms, language=language, model_name=model, creativity=creativity) | |
st.markdown(face_ad__prom) | |
elif meta_choices == meta_choices_list[2]: | |
product_name = st.text_input('Product Name') | |
product_desc = st.text_area('Product Description') | |
days = st.selectbox('Days', (10,15,20,25,30)) | |
goal = st.text_input('Goal') | |
model = st.selectbox('Choose a model', models) | |
creativity = st.selectbox('Choose a creativity', creativity_list) | |
language = st.selectbox('Choose a language', languages) | |
if product_name and product_desc and goal and days and model and creativity and language: | |
if st.button('Generate'): | |
facebook_camp = meta_content_gen.facbook_camp_gen(product_name, product_desc, days, goal, language=language, model_name=model, creativity=creativity) | |
st.markdown(facebook_camp) | |
elif meta_choices == meta_choices_list[3]: | |
uploaded_file = st.file_uploader("Choose an image...", type=["jpg","jpeg","png"]) | |
if uploaded_file is not None: | |
bytes_data = uploaded_file.getvalue() | |
with open(uploaded_file.name, "wb") as file: | |
file.write(bytes_data) | |
st.image(uploaded_file, caption="Uploaded image", | |
use_column_width=True, width=500) | |
scenario = meta_content_gen.img2text(uploaded_file.name) | |
st.subheader("Image Scenario:") | |
with st.expander("scenario"): | |
st.write(scenario) | |
tone_of_voice = st.selectbox('Tone of Voice', tone_of_voice_list) | |
form = st.selectbox('Caption Form', ('Short Form', 'Medium Form', 'Long Form')) | |
model = st.selectbox('Choose a model', models) | |
creativity = st.selectbox('Choose a creativity', creativity_list) | |
language = st.selectbox('Choose a language', languages) | |
if tone_of_voice and form and model and creativity and language: | |
if st.button('Generate'): | |
st.subheader("Generated Instagram Image according to the scenario:") | |
instaCap = meta_content_gen.generate_InstaCap(scenario, tone_of_voice, form, language=language, model_name=model, creativity=creativity) | |
st.markdown(instaCap) | |
elif choice == 'Emails': | |
email_content_gen = email_writer.email_writing() | |
email_choices_list = ('Email Writer', 'Email Marketing Campaign') | |
email_choices = st.selectbox('Choose Emai Template', email_choices_list) | |
if email_choices == email_choices_list[0]: | |
recipient = st.text_input('Recipient') | |
recipient_position = st.text_input('Recipient Position') | |
sender_name = st.text_input('Sender Name') | |
position_sender = st.text_input('Sender Position') | |
description = st.text_area('Description') | |
model = st.selectbox('Choose a model', models) | |
creativity = st.selectbox('Choose a creativity', creativity_list) | |
language = st.selectbox('Choose a language', languages) | |
if recipient and recipient_position and sender_name and position_sender and description and model and creativity and language: | |
if st.button('Generate'): | |
email = email_content_gen.email_gen(recipient, recipient_position, sender_name, position_sender, description, language=language, model_name=model, creativity=creativity) | |
email_subject = email_content_gen.email_subject_gen(email) | |
st.markdown(f'Subject: {email_subject}') | |
st.markdown(email) | |
elif email_choices == email_choices_list[1]: | |
product_name = st.text_input("Product Name") | |
product_description = st.text_area("Product Description") | |
target_audience = st.text_input("Target Audience") | |
goal = st.text_input("Goal") | |
model = st.selectbox('Choose a model', models) | |
creativity = st.selectbox('Choose a creativity', creativity_list) | |
language = st.selectbox('Choose a language', languages) | |
if product_name and product_description and target_audience and goal and model and creativity and language: | |
if st.button("Generate"): | |
email_marketing_camp = email_content_gen.email_marketing_campaigns_gen(product_name, product_description, target_audience, goal, language=language, model_name=model, creativity=creativity) | |
st.markdown(email_marketing_camp) | |