File size: 4,905 Bytes
e9b42f3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
import streamlit as st 
import re
import openai
from paraphrase_post import get_original_url , paraphrased_post
from advance_post import google_search , advanced_post
from langchain.chat_models import ChatOpenAI
from langchain_groq import ChatGroq
# from langchain.llms 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-4',))
    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-4":
        api_key=st.sidebar.text_input("API Key:",placeholder="Enter OpenAI API Key...")
        if api_key:
            model=ChatOpenAI(model="gpt-4-turbo-preview" , temperature=temperature , api_key=api_key)

            
    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, session_state.keywords, session_state.take_aways, session_state.highlights = 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")



    paraphrase_text=st.text_area("Generated LinkedIn post",value=session_state.paraphrase, height=400)
    # import pyperclip
    # if st.button('Copy'):
    #     pyperclip.copy(paraphrase_text)
    #     st.success('Text copied successfully!')
                
    if st.sidebar.toggle("Show Details") and session_state.keywords:
        st.write("Keywords:")
        for i, statement in enumerate(session_state.keywords, start=1):
            st.write(f"{i}. {statement}")
    
        st.write("Take Aways:")
        for i, statement in enumerate(session_state.take_aways, start=1):
            st.write(f"{i}. {statement}")

        st.write("Highlights:")
        for i, statement in enumerate(session_state.highlights, start=1):
            st.write(f"{i}. {statement}")

#------------------------------------------------------------Advance LinkedIn post code below-----------------------------------------------------------------
   
    if st.sidebar.toggle("Advance LinkedIn Post"):
        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 = "AIzaSyDh-lkJh2Zef0t6UVqSu_w3njpucx40mDc"
        search_engine_id = "44bbd32a2b2fc4418"
        if st.sidebar.button("Generate Advance Post"):
            if google_api_key:
                if search_engine_id:
                    all_links =google_search(session_state.paraphrase ,model , google_api_key,search_engine_id)
                    session_state.advancepost , docs=advanced_post(all_links ,model ,session_state.paraphrase)
                    if len(docs)==0:
                        st.sidebar.error("Please Check your both credentials carefully")
       
                else:
                    st.sidebar.error("Please enter Search Engine ID")
            else:
                st.sidebar.error("Please enter Google API Key")
        advance_post=st.text_area("Advance LinkedIn post",value=session_state.advancepost, height=400) 
            
    
        # if st.button('Copy Advanced Post'):
        #     pyperclip.copy(advance_post)
        #     st.success('Text copied successfully!')
#--------------------------------------------------------------------------------------------------------------------------------------------------------------

if __name__ == "__main__":
    main()