LinkedInpost / app.py
Jobanpreet's picture
code updated
7df88e6
import streamlit as st
import re
import openai
from paraphrase_post import get_original_url , paraphrased_post
from advance_post import google_search
from langchain_community.chat_models import ChatOpenAI
from langchain_cohere import ChatCohere
from streaming_response import StreamHandler
from blog_post import post_from_content
# from langchain_nvidia_ai_endpoints import ChatNVIDIA
#from langchain import HuggingFaceHub
# def main():
st.title("LinkedIn Post Creator")
# Initialize SessionState dictionary
session_state = st.session_state
if 'paraphrase' not in session_state:
session_state.paraphrase = ""
if 'keywords' not in session_state:
session_state.keywords = ""
if 'take_aways' not in session_state:
session_state.take_aways = ""
if 'highlights' not in session_state:
session_state.highlights = ""
if 'advancepost' not in session_state:
session_state.advancepost = ""
# url = st.sidebar.text_input("Enter URL:", placeholder="Enter URL here...")
option = st.sidebar.selectbox('Select Model:', ('GPT-4o',"Cohere"))
temperature= st.sidebar.select_slider(
'How much accurate post you want ?',
options=['Less accuracy', 9, 8, 7, 6, 5,4,3 ,2,1,'High accuracy'])
if temperature=='Less accuracy':
temperature=10
elif temperature=="High accuracy":
temperature=0
temperature=temperature/10
if option=="GPT-4o":
api_key=st.sidebar.text_input("API Key:",placeholder="Enter OpenAI API Key...")
if api_key:
model=ChatOpenAI(model="gpt-4o" , temperature=temperature , api_key=api_key , streaming=True, callbacks=[StreamHandler(st.empty())])
elif option=="Cohere":
api_key= st.sidebar.text_input("API Key:",placeholder="Enter Cohere API Key...")
if api_key:
model = ChatCohere(cohere_api_key=api_key,temperature=temperature , streaming=True, callbacks=[StreamHandler(st.empty())])
#model = ChatCohere(cohere_api_key=api_key , temperature = temperature , model = "command-r-plus")
# elif option=="Mixtral-8x7b":
# api_key=st.sidebar.text_input("API Key:",placeholder="Enter NVIDIA NIM API Key...")
# if api_key:
# model = ChatNVIDIA(model="mixtral_8x7b",api_key = api_key , temperature=temperature)
# elif option=="Llama-3":
# api_key=st.sidebar.text_input("API Key:",placeholder="Enter HuggingFace API Token...")
# if api_key:
# model=HuggingFaceHub(repo_id="mistralai/Mixtral-8x22B-Instruct-v0.1",huggingfacehub_api_token=api_key ,model_kwargs={"temperature":temperature})
if st.sidebar.toggle("Normal LinkedIn Post"):
url = st.sidebar.text_input("Enter URL:", placeholder="Enter URL here...")
if st.sidebar.button("Submit"):
if url:
if api_key:
original_url = get_original_url(url)
match = re.match(r"https?://(?:www\.)?linkedin\.com/(posts|feed|pulse)/.*", original_url) # checking domain and url page (means it should only be a post nothing else like login page or something else)
if match:
try:
session_state.paraphrase = paraphrased_post(url , model)
except (openai.AuthenticationError) as e:
st.sidebar.error("Enter your valid API key")
else:
st.sidebar.error("Put a valid LinkedIn post url only")
else:
st.sidebar.error("Please enter API Key")
else:
st.sidebar.error("Please enter url")
from paraphrase_post import generate_details
if st.sidebar.button("Show Details"):
session_state.keywords =generate_details(session_state.paraphrase , model)
#------------------------------------------------------------Advance LinkedIn post code below-----------------------------------------------------------------
if st.sidebar.toggle("Advance LinkedIn Post"):
url = st.sidebar.text_input("Enter URL", placeholder="Enter URL here...")
google_api_key=st.sidebar.text_input("Google API Key:",placeholder="Enter Google Search API Key...")
search_engine_id=st.sidebar.text_input("Search Engine ID:",placeholder="Enter Search Engine ID...")
google_api_key = "AIzaSyABoOsfUbydc1AfVf2Zjto4MFWNgjLSJmY"
search_engine_id = "243a392ba3dff442c"
if st.sidebar.button("Generate Advance Post"):
if url:
if api_key:
if option=="GPT-4o":
model=ChatOpenAI(model="gpt-4o" , temperature=temperature , api_key=api_key)
elif option=="Cohere":
model = ChatCohere(cohere_api_key=api_key,temperature=temperature)
if google_api_key:
if search_engine_id:
original_url = get_original_url(url)
match = re.match(r"https?://(?:www\.)?linkedin\.com/(posts|feed|pulse)/.*", original_url) # checking domain and url page (means it should only be a post nothing else like login page or something else)
if match:
try:
with st.spinner("Creating post ,please wait..."):
session_state.advancepost =google_search(url ,model , google_api_key,search_engine_id)
except (openai.AuthenticationError) as e:
st.sidebar.error("Enter your valid API key")
else:
st.sidebar.error("Put a valid LinkedIn post url only")
else:
st.sidebar.error("Please enter Search Engine ID")
else:
st.sidebar.error("Please enter Google API Key")
else:
st.sidebar.error("Please enter API key")
else:
st.sidebar.error("Please enter url")
advance_post=st.write(session_state.advancepost)
# from streaming_response import StreamHandler
if st.sidebar.toggle("Message"):
content=st.sidebar.text_area("Paste your content" ,height=300)
if st.sidebar.button("Generate Post"):
if content:
if api_key:
post_from_content(model ,content)
else:
st.sidebar.error("Please enter API Key")
else:
st.sidebar.error("You have not provided any content in Textbox")
# if st.button('Copy Advanced Post'):
# pyperclip.copy(advance_post)
# st.success('Text copied successfully!')
#--------------------------------------------------------------------------------------------------------------------------------------------------------------
# if __name__ == "__main__":
# main()