Ronio Jerico Roque commited on
Commit
a7469b6
·
1 Parent(s): 15ad021

Implement SEM/PPC analysis functionality with session state management and data fetching

Browse files
Files changed (1) hide show
  1. classes/response_sem_ppc.py +158 -0
classes/response_sem_ppc.py ADDED
@@ -0,0 +1,158 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import requests
3
+ from dotenv import load_dotenv
4
+ import os
5
+ import pandas as pd
6
+ import pandas._libs.tslibs.parsing
7
+ import time
8
+ import chardet
9
+ from helper.telemetry import collect_telemetry
10
+ from helper.upload_File import uploadFile
11
+ from helper.button_behaviour import hide_button
12
+ from helper.initialize_analyze_session import initialize_analyze_session
13
+ from pymongo import MongoClient
14
+ from helper.data_field import data_field
15
+ from helper.upload_response import upload_response
16
+ import json
17
+
18
+ class Sem_PPC:
19
+ def __init__(self, model_url):
20
+ self.model_url = model_url
21
+ #self.analyst_name = analyst_name
22
+ #self.data_src = data_src
23
+ #self.analyst_description = analyst_description
24
+ self.initialize()
25
+ self.row1()
26
+
27
+ def initialize(self):
28
+ # FOR ENV
29
+ load_dotenv()
30
+
31
+ # AGENT NAME
32
+ #st.header(self.analyst_name)
33
+
34
+ # EVALUATION FORM LINK
35
+ '''url = os.getenv('Link')
36
+ st.write('Evaluation Form: [Link](%s)' % url)
37
+
38
+ # RETURN BUTTON
39
+ try:
40
+ if st.button("Return", type='primary'):
41
+ st.switch_page("./pages/home.py")
42
+ except Exception:
43
+ pass'''
44
+
45
+ def request_model(self, payload_txt, headers):
46
+ response = requests.post(self.model_url, json=payload_txt, headers=headers)
47
+ response.raise_for_status()
48
+ output = response.json()
49
+ #st.write(output)
50
+ text = output["outputs"][0]["outputs"][0]["results"]["text"]["data"]["text"]
51
+ text = json.loads(text)
52
+ #st.write(text)
53
+ return text
54
+
55
+ def fetch_backlinks(self, data_field):
56
+ mongodb_uri = os.getenv("MONGODB_URI")
57
+ myclient = MongoClient(mongodb_uri)
58
+ mydb = myclient.get_database()
59
+ mycol = mydb["df_data"]
60
+ x = mycol.find_one({"data_field": data_field})
61
+ x = x["result"]['question']
62
+ return x
63
+
64
+ def fetch_data(self, data_field):
65
+ mongodb_uri = os.getenv("MONGODB_URI")
66
+ myclient = MongoClient(mongodb_uri)
67
+ mydb = myclient.get_database()
68
+ mycol = mydb["df_data"]
69
+
70
+ # Sort by timestamp field in descending order
71
+ x = mycol.find_one(
72
+ {"data_field": data_field},
73
+ sort=[("timestamp", -1)]
74
+ )
75
+
76
+ x = x["result"]
77
+ return x
78
+
79
+ def process (self):
80
+ with st.spinner('SEM/PPC Analyst...', show_time=True):
81
+ st.write('')
82
+ headers = {"Content-Type": "application/json", "x-api-key": f"{os.getenv('x-api-key')}"}
83
+ try:
84
+ payload_txt = {"input_value": self.payload, "output_type": "text", "input_type": "chat"}
85
+ payload_txt_model = self.request_model(payload_txt, headers)
86
+ debug_info = {'data_field' : 'SEM/PPC Analyst', 'result': payload_txt_model}
87
+ upload_response(debug_info)
88
+
89
+ st.session_state['account_set_up'] = ''
90
+ st.session_state['search_ads'] = ''
91
+ st.session_state['display_ads'] = ''
92
+ st.session_state['mobile_ads'] = ''
93
+ st.session_state['video_ads'] = ''
94
+ st.session_state['shopping_ads'] = ''
95
+ count = 0
96
+ except Exception as e:
97
+ pass
98
+ st.session_state['analyzing'] = False
99
+
100
+ def row1(self):
101
+ st.session_state['analyzing'] = False
102
+ #st.write("") # FOR THE HIDE BUTTON
103
+ #analyze_button = st.button("Analyze", disabled=initialize_analyze_session())
104
+ self.payload = ""
105
+ count = 0
106
+ try:
107
+ session_account_set_up = st.session_state['account_set_up']
108
+ if session_account_set_up == 'uploaded':
109
+ count += 1
110
+ self.payload += self.fetch_data("Account Set Up - Google Ads")
111
+
112
+ except Exception as e:
113
+ pass
114
+ try:
115
+ session_search_ads = st.session_state['search_ads']
116
+ if session_search_ads == 'uploaded':
117
+ count += 1
118
+ self.payload += self.fetch_data("Search Ads - Google Ads/SEMRush")
119
+ except Exception as e:
120
+ pass
121
+ try:
122
+ session_display_ads = st.session_state['display_ads']
123
+ if session_display_ads == 'uploaded':
124
+ count += 1
125
+ self.payload += self.fetch_data("Display Ads - Google Ads/SEMRush")
126
+
127
+ except Exception as e:
128
+ pass
129
+ try:
130
+ session_mobile_ads = st.session_state['mobile_ads']
131
+ if session_mobile_ads == 'uploaded':
132
+ count += 1
133
+ self.payload += self.fetch_data("Mobile Ads - Google Ads")
134
+ except Exception as e:
135
+ pass
136
+ try:
137
+ session_video_ads = st.session_state['video_ads']
138
+ if session_video_ads == 'uploaded':
139
+ count += 1
140
+ self.payload += self.fetch_data("Video Ads - Google Ads")
141
+ except Exception as e:
142
+ pass
143
+ try:
144
+ session_shopping_ads = st.session_state['shopping_ads']
145
+ if session_shopping_ads == 'uploaded':
146
+ count += 1
147
+ self.payload += self.fetch_data("Shopping Ads - Google Ads/SEMRush")
148
+ except Exception as e:
149
+ pass
150
+
151
+ if count >= 1:
152
+ self.process()
153
+
154
+
155
+ if __name__ == "__main__":
156
+ st.set_page_config(layout="wide")
157
+
158
+ upload = uploadFile()