Romeo David commited on
Commit
490cf96
·
2 Parent(s): 5316b36e2a65de

Merge branch 'main' of https://huggingface.co/spaces/roniorque/df_ai_int into pr/1

Browse files
classes/Linkedin.py CHANGED
@@ -38,6 +38,8 @@ class Linkedin:
38
  except Exception:
39
  pass
40
  '''
 
 
41
 
42
  def request_model(self, payload_txt):
43
  response = requests.post(self.model_url, json=payload_txt)
@@ -187,6 +189,7 @@ class Linkedin:
187
  }
188
  '''
189
  collect_telemetry(debug_info)
 
190
 
191
  #with st.expander("Debug information", icon="⚙"):
192
  # st.write(debug_info)
 
38
  except Exception:
39
  pass
40
  '''
41
+ if 'linkedin_upload' not in st.session_state:
42
+ st.session_state['linkedin_upload'] = ''
43
 
44
  def request_model(self, payload_txt):
45
  response = requests.post(self.model_url, json=payload_txt)
 
189
  }
190
  '''
191
  collect_telemetry(debug_info)
192
+ st.session_state['linkedin_upload'] = 'uploaded'
193
 
194
  #with st.expander("Debug information", icon="⚙"):
195
  # st.write(debug_info)
classes/Seo.py CHANGED
@@ -162,7 +162,6 @@ class Seo:
162
 
163
  session = st.session_state.analyze
164
  if ((self.uploaded_file or self.others or self.uploaded_file_seo) or (self.page_index or self.bounce_rate)) and session == 'clicked':
165
- combined_text = ""
166
  seo_keywords = ""
167
  traffic_channels = ""
168
  traffic_aqcuisition = ""
@@ -199,7 +198,7 @@ class Seo:
199
  except AttributeError:
200
  pass
201
  except KeyError:
202
- pass
203
 
204
  try:
205
  df_seo = st.session_state['df_seo']
@@ -229,7 +228,7 @@ class Seo:
229
  except KeyError:
230
  pass
231
  except TypeError:
232
- pass
233
 
234
  # OUTPUT FOR SEO ANALYST
235
  payload_txt_seo_keywords = {"question": seo_keywords}
 
162
 
163
  session = st.session_state.analyze
164
  if ((self.uploaded_file or self.others or self.uploaded_file_seo) or (self.page_index or self.bounce_rate)) and session == 'clicked':
 
165
  seo_keywords = ""
166
  traffic_channels = ""
167
  traffic_aqcuisition = ""
 
198
  except AttributeError:
199
  pass
200
  except KeyError:
201
+ st.info("Incorrect SEMRush format. Please upload a valid SEMRush file.")
202
 
203
  try:
204
  df_seo = st.session_state['df_seo']
 
228
  except KeyError:
229
  pass
230
  except TypeError:
231
+ st.info("Incorrect GA4 format. Please upload a valid GA4 file.")
232
 
233
  # OUTPUT FOR SEO ANALYST
234
  payload_txt_seo_keywords = {"question": seo_keywords}
classes/Social_Media_FB.py CHANGED
@@ -39,6 +39,8 @@ class Facebook:
39
  except Exception:
40
  pass
41
  '''
 
 
42
 
43
  def request_model(self, payload_txt):
44
  response = requests.post(self.model_url, json=payload_txt)
@@ -142,7 +144,7 @@ class Facebook:
142
  def process(self):
143
  start_time = time.time()
144
  session = st.session_state.analyze
145
- if ((self.fb_organic_post and self.fb_organic_post.name) or (self.fb_ads_campaign and self.fb_ads_campaign.name) or self.facebooks or self.facebook_rr) and session == 'clicked':
146
  try:
147
  combined_text = ""
148
  with st.spinner('Social Media Analyst...', show_time=True):
@@ -201,7 +203,10 @@ class Facebook:
201
  'result': result,
202
  }
203
  '''
 
 
204
  collect_telemetry(debug_info)
 
205
 
206
  #with st.expander("Debug information", icon="⚙"):
207
  # st.write(debug_info)
 
39
  except Exception:
40
  pass
41
  '''
42
+ if 'fb_upload' not in st.session_state:
43
+ st.session_state['fb_upload'] = ''
44
 
45
  def request_model(self, payload_txt):
46
  response = requests.post(self.model_url, json=payload_txt)
 
144
  def process(self):
145
  start_time = time.time()
146
  session = st.session_state.analyze
147
+ if ((self.fb_organic_post and self.fb_organic_post.name) or (self.fb_ads_campaign and self.fb_ads_campaign.name) or (self.facebooks) or (self.facebook_rr)) and session == 'clicked':
148
  try:
149
  combined_text = ""
150
  with st.spinner('Social Media Analyst...', show_time=True):
 
203
  'result': result,
204
  }
205
  '''
206
+
207
+ st.session_state['fb_upload'] = 'uploaded'
208
  collect_telemetry(debug_info)
209
+ combined_text = ""
210
 
211
  #with st.expander("Debug information", icon="⚙"):
212
  # st.write(debug_info)
classes/Social_Media_IG.py CHANGED
@@ -38,6 +38,8 @@ class Instagram:
38
  except Exception:
39
  pass
40
  '''
 
 
41
 
42
  def request_model(self, payload_txt):
43
  response = requests.post(self.model_url, json=payload_txt)
@@ -135,6 +137,8 @@ class Instagram:
135
  }
136
  '''
137
  collect_telemetry(debug_info)
 
 
138
 
139
 
140
  except AttributeError:
 
38
  except Exception:
39
  pass
40
  '''
41
+ if 'ig_upload' not in st.session_state:
42
+ st.session_state['ig_upload'] = ''
43
 
44
  def request_model(self, payload_txt):
45
  response = requests.post(self.model_url, json=payload_txt)
 
137
  }
138
  '''
139
  collect_telemetry(debug_info)
140
+ st.session_state['ig_upload'] = 'uploaded'
141
+
142
 
143
 
144
  except AttributeError:
classes/Tiktok.py CHANGED
@@ -38,6 +38,8 @@ class Tiktok:
38
  except Exception:
39
  pass
40
  '''
 
 
41
 
42
  def request_model(self, payload_txt):
43
  response = requests.post(self.model_url, json=payload_txt)
@@ -101,6 +103,7 @@ class Tiktok:
101
  except Exception:
102
  pass
103
  return file_name
 
104
  def process(self):
105
  session = st.session_state.analyze
106
  if (self.tiktok_f or self.tiktok_er or self.tiktok_pf) and session == 'clicked':
@@ -134,6 +137,7 @@ class Tiktok:
134
  }
135
  '''
136
  collect_telemetry(debug_info)
 
137
 
138
  #with st.expander("Debug information", icon="⚙"):
139
  # st.write(debug_info)
 
38
  except Exception:
39
  pass
40
  '''
41
+ if 'tiktok_upload' not in st.session_state:
42
+ st.session_state['tiktok_upload'] = ''
43
 
44
  def request_model(self, payload_txt):
45
  response = requests.post(self.model_url, json=payload_txt)
 
103
  except Exception:
104
  pass
105
  return file_name
106
+
107
  def process(self):
108
  session = st.session_state.analyze
109
  if (self.tiktok_f or self.tiktok_er or self.tiktok_pf) and session == 'clicked':
 
137
  }
138
  '''
139
  collect_telemetry(debug_info)
140
+ st.session_state['tiktok_upload'] = 'uploaded'
141
 
142
  #with st.expander("Debug information", icon="⚙"):
143
  # st.write(debug_info)
classes/Twitter.py CHANGED
@@ -38,6 +38,8 @@ class Twitter:
38
  except Exception:
39
  pass
40
  '''
 
 
41
 
42
  def request_model(self, payload_txt):
43
  response = requests.post(self.model_url, json=payload_txt)
@@ -149,7 +151,7 @@ class Twitter:
149
  }
150
  '''
151
  collect_telemetry(debug_info)
152
-
153
  st.session_state['analyzing'] = False
154
  except AttributeError:
155
  st.info("Please upload CSV or PDF files first.")
 
38
  except Exception:
39
  pass
40
  '''
41
+ if 'twitter_upload' not in st.session_state:
42
+ st.session_state['twitter_upload'] = ''
43
 
44
  def request_model(self, payload_txt):
45
  response = requests.post(self.model_url, json=payload_txt)
 
151
  }
152
  '''
153
  collect_telemetry(debug_info)
154
+ st.session_state['twitter_upload'] = 'uploaded'
155
  st.session_state['analyzing'] = False
156
  except AttributeError:
157
  st.info("Please upload CSV or PDF files first.")
classes/Youtube.py CHANGED
@@ -38,6 +38,8 @@ class YouTube:
38
  except Exception:
39
  pass
40
  '''
 
 
41
 
42
  def request_model(self, payload_txt):
43
  response = requests.post(self.model_url, json=payload_txt)
@@ -104,7 +106,7 @@ class YouTube:
104
 
105
  def process(self):
106
  session = st.session_state.analyze
107
- if (self.youtube or self.youtube_er or self.youtube_pf) and session == 'clicked':
108
  try:
109
  combined_text = ""
110
  with st.spinner('Youtube...', show_time=True):
@@ -138,6 +140,7 @@ class YouTube:
138
  }
139
  '''
140
  collect_telemetry(debug_info)
 
141
 
142
  #with st.expander("Debug information", icon="⚙"):
143
  # st.write(debug_info)
 
38
  except Exception:
39
  pass
40
  '''
41
+ if 'youtube_upload' not in st.session_state:
42
+ st.session_state['youtube_upload'] = ''
43
 
44
  def request_model(self, payload_txt):
45
  response = requests.post(self.model_url, json=payload_txt)
 
106
 
107
  def process(self):
108
  session = st.session_state.analyze
109
+ if ((self.youtube or self.youtube_er or self.youtube_pf) and session) == 'clicked':
110
  try:
111
  combined_text = ""
112
  with st.spinner('Youtube...', show_time=True):
 
140
  }
141
  '''
142
  collect_telemetry(debug_info)
143
+ st.session_state['youtube_upload'] = 'uploaded'
144
 
145
  #with st.expander("Debug information", icon="⚙"):
146
  # st.write(debug_info)
classes/response_off.py CHANGED
@@ -32,6 +32,7 @@ class SeoOffPageAnalyst:
32
 
33
  # AGENT NAME
34
  #st.header(self.analyst_name)
 
35
  def request_model(self, payload_txt, headers):
36
  response = requests.post(self.model_url, json=payload_txt, headers=headers)
37
  response.raise_for_status()
 
32
 
33
  # AGENT NAME
34
  #st.header(self.analyst_name)
35
+
36
  def request_model(self, payload_txt, headers):
37
  response = requests.post(self.model_url, json=payload_txt, headers=headers)
38
  response.raise_for_status()
classes/response_on_page.py CHANGED
@@ -60,7 +60,13 @@ class SeoOn:
60
  myclient = MongoClient(mongodb_uri)
61
  mydb = myclient.get_database()
62
  mycol = mydb["df_data"]
63
- x = mycol.find_one({"data_field": data_field})
 
 
 
 
 
 
64
  x = x["result"]
65
  return x
66
 
@@ -68,55 +74,19 @@ class SeoOn:
68
  with st.spinner('SEO On Page...', show_time=True):
69
  st.write('')
70
  # OUTPUT FOR SEO ANALYST
71
- headers = {"Content-Type": "application/json", "x-api-key": f"{os.getenv('x-api-key')}"}
72
- payload = ""
73
- try:
74
- payload += self.fetch_data("First Meaningful Paint")
75
- except Exception as e:
76
- pass
77
- try:
78
- payload += self.fetch_data("Crawl File")
79
- except Exception as e:
80
- pass
81
-
82
- try:
83
- session_first_meaningful_paint = st.session_state['first_meaningful_paint']
84
- session_crawl_file = st.session_state['crawl_file']
85
- if session_first_meaningful_paint or session_crawl_file == 'uploaded':
86
- payload_txt = {"input_value": payload, "output_type": "text", "input_type": "chat"}
87
  payload_txt_model = self.request_model(payload_txt, headers)
88
  debug_info = {'data_field' : 'On Page Analyst', 'result': payload_txt_model}
89
  upload_response(debug_info)
90
 
91
  st.session_state['first_meaningful_paint'] = ''
92
  st.session_state['crawl_file'] = ''
 
93
  except Exception as e:
94
  pass
95
 
96
- #end_time = time.time()
97
- #time_lapsed = end_time - start_time
98
-
99
- #debug_info = {'data_field' : 'GT Metrix', 'result': result}
100
-
101
-
102
- '''
103
- debug_info = {#'analyst': self.analyst_name,
104
- 'url_uuid': self.model_url.split("-")[-1],
105
- 'time_lapsed' : time_lapsed,
106
- 'crawl_file': [file.name for file in self.uploaded_files] if self.uploaded_files else ['Not available'],
107
- 'gt_metrix': [file.name for file in self.gtmetrix] if self.gtmetrix else ['Not available'],
108
- 'payload': payload_txt,
109
- 'result': result}
110
-
111
- if self.gtmetrix:
112
- collect_telemetry(debug_info)
113
- '''
114
-
115
-
116
- #with st.expander("Debug information", icon="⚙"):
117
- # st.write(debug_info)
118
-
119
-
120
  st.session_state['analyzing'] = False
121
  try:
122
  self.file_dict.popitem()
@@ -124,13 +94,25 @@ class SeoOn:
124
  pass
125
 
126
  def row1(self):
127
-
128
- #st.write("") # FOR THE HIDE BUTTON
129
- #st.write("") # FOR THE HIDE BUTTON
130
- #st.write("AI Analyst Output: ")
131
  st.session_state['analyzing'] = False
132
- #st.write("") # FOR THE HIDE BUTTON
133
- self.process()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
134
 
135
 
136
  if __name__ == "__main__":
 
60
  myclient = MongoClient(mongodb_uri)
61
  mydb = myclient.get_database()
62
  mycol = mydb["df_data"]
63
+
64
+ # Sort by timestamp field in descending order
65
+ x = mycol.find_one(
66
+ {"data_field": data_field},
67
+ sort=[("timestamp", -1)]
68
+ )
69
+
70
  x = x["result"]
71
  return x
72
 
 
74
  with st.spinner('SEO On Page...', show_time=True):
75
  st.write('')
76
  # OUTPUT FOR SEO ANALYST
77
+ headers = {"Content-Type": "application/json", "x-api-key": f"{os.getenv('x-api-key')}"}
78
+ try:
79
+ payload_txt = {"input_value": self.payload, "output_type": "text", "input_type": "chat"}
 
 
 
 
 
 
 
 
 
 
 
 
 
80
  payload_txt_model = self.request_model(payload_txt, headers)
81
  debug_info = {'data_field' : 'On Page Analyst', 'result': payload_txt_model}
82
  upload_response(debug_info)
83
 
84
  st.session_state['first_meaningful_paint'] = ''
85
  st.session_state['crawl_file'] = ''
86
+ count = 0
87
  except Exception as e:
88
  pass
89
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
90
  st.session_state['analyzing'] = False
91
  try:
92
  self.file_dict.popitem()
 
94
  pass
95
 
96
  def row1(self):
 
 
 
 
97
  st.session_state['analyzing'] = False
98
+ self.payload = ""
99
+ count = 0
100
+ try:
101
+ session_first_meaningful_paint = st.session_state['first_meaningful_paint']
102
+ if session_first_meaningful_paint == 'uploaded':
103
+ count += 1
104
+ self.payload += self.fetch_data("First Meaningful Paint")
105
+ except Exception as e:
106
+ pass
107
+ try:
108
+ session_crawl_file = st.session_state['crawl_file']
109
+ if session_crawl_file == 'uploaded':
110
+ count += 1
111
+ self.payload += self.fetch_data("Crawl File")
112
+ except Exception as e:
113
+ pass
114
+ if count >= 1:
115
+ self.process()
116
 
117
 
118
  if __name__ == "__main__":
classes/response_seo.py CHANGED
@@ -48,6 +48,7 @@ class Seo:
48
  response = requests.post(self.model_url, json=payload_txt, headers=headers)
49
  response.raise_for_status()
50
  output = response.json()
 
51
  text = output["outputs"][0]["outputs"][0]["results"]["text"]["data"]["text"]
52
  text = json.loads(text)
53
  #st.write(text)
@@ -67,7 +68,13 @@ class Seo:
67
  myclient = MongoClient(mongodb_uri)
68
  mydb = myclient.get_database()
69
  mycol = mydb["df_data"]
70
- x = mycol.find_one({"data_field": data_field})
 
 
 
 
 
 
71
  x = x["result"]
72
  return x
73
 
@@ -143,47 +150,9 @@ class Seo:
143
  def process (self):
144
  with st.spinner('Seo Analyst...', show_time=True):
145
  st.write('')
146
- headers = {"Content-Type": "application/json", "x-api-key": f"{os.getenv('x-api-key')}"}
147
- payload = ""
148
- count = 0
149
- try:
150
- session_traffic_aqcuisition = st.session_state['df_seo']
151
- payload += self.fetch_data("SEO Keywords")
152
- count += 1
153
- except Exception as e:
154
- pass
155
- try:
156
- session_traffic_channels = st.session_state['df_traffic']
157
- payload += self.fetch_data("Traffic Channels")
158
- count += 1
159
- except Exception as e:
160
- pass
161
- try:
162
- session_others = st.session_state['others']
163
- payload += self.fetch_data("Traffic Acquisition")
164
- count += 1
165
- except Exception as e:
166
- pass
167
- try:
168
- session_page_index = st.session_state['pages_index']
169
- payload += self.fetch_data("Pages Indexed")
170
- count += 1
171
- except Exception as e:
172
- pass
173
- try:
174
- session_bounce_rate = st.session_state['bounce_rate']
175
- payload += self.fetch_data("Bounce Rate")
176
- count += 1
177
- except Exception as e:
178
- pass
179
- try:
180
- payload += self.fetch_backlinks("Backlinks")
181
- count += 1
182
- except Exception as e:
183
- pass
184
  try:
185
- if count >= 1:
186
- payload_txt = {"input_value": payload, "output_type": "text", "input_type": "chat"}
187
  payload_txt_model = self.request_model(payload_txt, headers)
188
  debug_info = {'data_field' : 'SEO Analyst', 'result': payload_txt_model}
189
  upload_response(debug_info)
@@ -202,8 +171,57 @@ class Seo:
202
  st.session_state['analyzing'] = False
203
  #st.write("") # FOR THE HIDE BUTTON
204
  #analyze_button = st.button("Analyze", disabled=initialize_analyze_session())
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
205
 
206
- self.process()
207
 
208
  if __name__ == "__main__":
209
  st.set_page_config(layout="wide")
 
48
  response = requests.post(self.model_url, json=payload_txt, headers=headers)
49
  response.raise_for_status()
50
  output = response.json()
51
+ #st.write(output)
52
  text = output["outputs"][0]["outputs"][0]["results"]["text"]["data"]["text"]
53
  text = json.loads(text)
54
  #st.write(text)
 
68
  myclient = MongoClient(mongodb_uri)
69
  mydb = myclient.get_database()
70
  mycol = mydb["df_data"]
71
+
72
+ # Sort by timestamp field in descending order
73
+ x = mycol.find_one(
74
+ {"data_field": data_field},
75
+ sort=[("timestamp", -1)]
76
+ )
77
+
78
  x = x["result"]
79
  return x
80
 
 
150
  def process (self):
151
  with st.spinner('Seo Analyst...', show_time=True):
152
  st.write('')
153
+ headers = {"Content-Type": "application/json", "x-api-key": f"{os.getenv('x-api-key')}"}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
154
  try:
155
+ payload_txt = {"input_value": self.payload, "output_type": "text", "input_type": "chat"}
 
156
  payload_txt_model = self.request_model(payload_txt, headers)
157
  debug_info = {'data_field' : 'SEO Analyst', 'result': payload_txt_model}
158
  upload_response(debug_info)
 
171
  st.session_state['analyzing'] = False
172
  #st.write("") # FOR THE HIDE BUTTON
173
  #analyze_button = st.button("Analyze", disabled=initialize_analyze_session())
174
+ self.payload = ""
175
+ count = 0
176
+ try:
177
+ session_traffic_aqcuisition = st.session_state['df_seo']
178
+ if session_traffic_aqcuisition == 'uploaded':
179
+ count += 1
180
+ self.payload += self.fetch_data("SEO Keywords")
181
+
182
+ except Exception as e:
183
+ pass
184
+ try:
185
+ session_traffic_channels = st.session_state['df_traffic']
186
+ if session_traffic_channels == 'uploaded':
187
+ count += 1
188
+ self.payload += self.fetch_data("Traffic Channels")
189
+ except Exception as e:
190
+ pass
191
+ try:
192
+ session_others = st.session_state['others']
193
+ if session_others == 'uploaded':
194
+ count += 1
195
+ self.payload += self.fetch_data("Traffic Acquisition")
196
+
197
+ except Exception as e:
198
+ pass
199
+ try:
200
+ session_page_index = st.session_state['pages_index']
201
+ if session_page_index == 'uploaded':
202
+ count += 1
203
+ self.payload += self.fetch_data("Pages Indexed")
204
+ except Exception as e:
205
+ pass
206
+ try:
207
+ session_bounce_rate = st.session_state['bounce_rate']
208
+ if session_bounce_rate == 'uploaded':
209
+ print("run")
210
+ count += 1
211
+ self.payload += self.fetch_data("Bounce Rate")
212
+ except Exception as e:
213
+ pass
214
+ try:
215
+ session_backlinks = st.session_state["off_page_file_uploaded"]
216
+ if session_backlinks == 'uploaded':
217
+ count += 1
218
+ self.payload += self.fetch_backlinks("Backlinks")
219
+ except Exception as e:
220
+ pass
221
+
222
+ if count >= 1:
223
+ self.process()
224
 
 
225
 
226
  if __name__ == "__main__":
227
  st.set_page_config(layout="wide")
classes/response_social_media.py ADDED
@@ -0,0 +1,154 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import requests
3
+ from dotenv import load_dotenv
4
+ import os
5
+ import pandas as pd
6
+ import time
7
+ import chardet
8
+ from helper.telemetry import collect_telemetry
9
+ from helper.upload_File import uploadFile
10
+ from helper.button_behaviour import hide_button
11
+ from helper.initialize_analyze_session import initialize_analyze_session
12
+ from pymongo import MongoClient
13
+ import json
14
+ from helper.data_field import data_field
15
+ from helper.upload_response import upload_response
16
+
17
+ class SocialMedia:
18
+ def __init__(self, model_url):
19
+ self.file_dict = {}
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
+ '''
36
+ url = os.getenv('Link')
37
+ st.write('Evaluation Form: [Link](%s)' % url)
38
+
39
+ # RETURN BUTTON
40
+ try:
41
+ if st.button("Return", type='primary'):
42
+ st.switch_page("./pages/home.py")
43
+ except Exception:
44
+ pass
45
+ '''
46
+ if 'fb_upload' not in st.session_state:
47
+ st.session_state['fb_upload'] = ''
48
+
49
+ def request_model(self, payload_txt, headers):
50
+ response = requests.post(self.model_url, json=payload_txt, headers=headers)
51
+ response.raise_for_status()
52
+ output = response.json()
53
+ #st.write(output)
54
+ text = output["outputs"][0]["outputs"][0]["results"]["text"]["data"]["text"]
55
+ text = json.loads(text)
56
+ #st.write(text)
57
+ return text
58
+
59
+ def terminate_session(self, session):
60
+ try:
61
+ del st.session_state[session]
62
+ except KeyError:
63
+ pass
64
+
65
+ def fetch_data(self, data_field):
66
+ mongodb_uri = os.getenv("MONGODB_URI")
67
+ myclient = MongoClient(mongodb_uri)
68
+ mydb = myclient.get_database()
69
+ mycol = mydb["df_data"]
70
+
71
+ # Sort by timestamp field in descending order
72
+ x = mycol.find_one(
73
+ {"data_field": data_field},
74
+ sort=[("timestamp", -1)]
75
+ )
76
+
77
+ x = x["result"]
78
+ return x
79
+
80
+ def process(self):
81
+ with st.spinner('Social Media Analyst...', show_time=True):
82
+ st.write('')
83
+
84
+ headers = {"Content-Type": "application/json", "x-api-key": f"{os.getenv('x-api-key')}"}
85
+ try:
86
+ payload_txt = {"input_value": self.payload, "output_type": "text", "input_type": "chat"}
87
+ payload_txt_model = self.request_model(payload_txt, headers)
88
+ debug_info = {'data_field' : 'Social Media Analyst', 'result': payload_txt_model}
89
+ upload_response(debug_info)
90
+
91
+ st.session_state['fb_upload'] = ''
92
+ st.session_state['ig_upload'] = ''
93
+ st.session_state['twitter_upload'] = ''
94
+ st.session_state['youtube_upload'] = ''
95
+ st.session_state['linkedin_upload'] = ''
96
+ st.session_state['tiktok_upload'] = ''
97
+ count = 0
98
+
99
+ except Exception as e:
100
+ pass
101
+
102
+ def row1(self):
103
+ self.payload = ""
104
+ count = 0
105
+ try:
106
+ session_fb = st.session_state['fb_upload']
107
+ if session_fb == 'uploaded':
108
+ count += 1
109
+ self.payload += self.fetch_data("Facebook")
110
+ except Exception as e:
111
+ pass
112
+ try:
113
+ session_ig = st.session_state['ig_upload']
114
+ if session_ig == 'uploaded':
115
+ count += 1
116
+ self.payload += self.fetch_data("Instagram")
117
+ except Exception as e:
118
+ pass
119
+ try:
120
+ session_twitter = st.session_state['twitter_upload']
121
+ if session_twitter == 'uploaded':
122
+ count += 1
123
+ self.payload += self.fetch_data("Twitter")
124
+ except Exception as e:
125
+ pass
126
+ try:
127
+ session_yt = st.session_state['youtube_upload']
128
+ if session_yt == 'uploaded':
129
+ count += 1
130
+ self.payload += self.fetch_data("YouTube")
131
+ except Exception as e:
132
+ pass
133
+ try:
134
+ session_linkedin = st.session_state['linkedin_upload']
135
+ if session_linkedin == 'uploaded':
136
+ count += 1
137
+ self.payload += self.fetch_data("Linkedin")
138
+ except Exception as e:
139
+ pass
140
+ try:
141
+ session_tiktok = st.session_state['tiktok_upload']
142
+ if session_tiktok == 'uploaded':
143
+ count += 1
144
+ self.payload += self.fetch_data("Tiktok")
145
+ except Exception as e:
146
+ pass
147
+ if count >= 1:
148
+ self.process()
149
+
150
+
151
+ if __name__ == "__main__":
152
+ st.set_page_config(layout="wide")
153
+
154
+ upload = uploadFile()
classes/response_website_and_tools.py CHANGED
@@ -59,118 +59,23 @@ class WebsiteAndTools:
59
  myclient = MongoClient(mongodb_uri)
60
  mydb = myclient.get_database()
61
  mycol = mydb["df_data"]
62
- x = mycol.find_one({"data_field": data_field})
 
 
 
 
 
 
63
  x = x["result"]
64
  return x
65
 
66
  def process(self):
67
  with st.spinner('Website and Tools...', show_time=True):
68
- st.write('')
69
- '''
70
- # OUTPUT FOR WEBSITE RESPONSIVENESS
71
- payload_txt_website_responsiveness = {"result": website_responsiveness}
72
- result_website_responsiveness = self.request_model(payload_txt_website_responsiveness)
73
-
74
- # OUTPUT FOR CONTENT MANAGEMENT SYSTEM
75
- payload_txt_content_management_system = {"question": content_management_system}
76
- #result_content_management_system = self.request_model(content_management_system)
77
-
78
- # OUTPUT FOR SSL CERTIFICATE
79
- payload_txt_SSL_certificate = {"question": SSL_certificate}
80
- #result_SSL_certificate = self.request_model(SSL_certificate)
81
-
82
- # OUTPUT FOR WEB ANALYTICS
83
- payload_txt_web_analytics = {"question": web_analytics}
84
- #result_web_analytics = self.request_model(web_analytics)
85
-
86
- # OUTPUT FOR CLIENT RELATIONS MANAGEMENT SYSTEM
87
- payload_txt_client_relations_management_system = {"question": client_relations_management_system}
88
- #result_client_relations_management_system = self.request_model(client_relations_management_system)
89
-
90
- # OUTPUT FOR LEAD GENERATION MECHANISM
91
- payload_txt_lead_generation_mechanism = {"question": lead_generation_mechanism}
92
- #result_lead_generation_mechanism = self.request_model(lead_generation_mechanism)
93
- '''
94
- # OUTPUT FOR SEO ANALYST
95
-
96
- #print(x)
97
  headers = {"Content-Type": "application/json", "x-api-key": f"{os.getenv('x-api-key')}"}
 
98
  try:
99
- payload = ""
100
- session_website_responsiveness = st.session_state['website_responsiveness']
101
- if session_website_responsiveness == 'uploaded':
102
- payload += self.fetch_data("Website Responsiveness")
103
- except Exception as e:
104
- pass
105
- try:
106
- session_content_management_system = st.session_state['content_management_system']
107
- if session_content_management_system == 'uploaded':
108
- payload += self.fetch_data("Content Management System")
109
- except Exception as e:
110
- pass
111
- try:
112
- session_SSL_certificate = st.session_state['SSL_certificate']
113
- if session_SSL_certificate == 'uploaded':
114
- payload += self.fetch_data("SSL Certificate")
115
-
116
- except Exception as e:
117
- pass
118
- try:
119
- session_mobile_responsiveness = st.session_state['mobile_responsiveness']
120
- if session_mobile_responsiveness == 'uploaded':
121
- payload += self.fetch_data("Mobile Responsiveness")
122
- except Exception as e:
123
- pass
124
- try:
125
- session_desktop_loading_speed = st.session_state['desktop_loading_speed']
126
- if session_desktop_loading_speed == 'uploaded':
127
- payload += self.fetch_data("Desktop Loading Speed")
128
- except Exception as e:
129
- pass
130
- try:
131
- session_mobile_loading_speed = st.session_state['mobile_loading_speed']
132
- if session_mobile_loading_speed == 'uploaded':
133
- payload += self.fetch_data("Mobile Loading Speed")
134
- except Exception as e:
135
- pass
136
- try:
137
- session_first_meaningful_paint = st.session_state['first_meaningful_paint']
138
- if session_first_meaningful_paint == 'uploaded':
139
- payload += self.fetch_data("First Meaningful Paint")
140
- except Exception as e:
141
- pass
142
- try:
143
- session_web_analytics = st.session_state['web_analytics']
144
- if session_web_analytics == 'uploaded':
145
- payload += self.fetch_data("Web Analytics")
146
- except Exception as e:
147
- pass
148
- try:
149
- session_client_relations_management_system = st.session_state['client_relations_management_system']
150
- if session_client_relations_management_system == 'uploaded':
151
- payload += self.fetch_data("Client Relations Management System")
152
- except Exception as e:
153
- pass
154
- try:
155
- session_lead_generation_mechanism = st.session_state['lead_generation_mechanism']
156
- if session_lead_generation_mechanism == 'uploaded':
157
- payload += self.fetch_data("Lead Generation Mechanism")
158
- except Exception as e:
159
- pass
160
-
161
- try:
162
- session_website_responsiveness = st.session_state['website_responsiveness']
163
- session_client_relations_management_system = st.session_state['client_relations_management_system']
164
- session_lead_generation_mechanism = st.session_state['lead_generation_mechanism']
165
- session_web_analytics = st.session_state['web_analytics']
166
- session_mobile_responsiveness = st.session_state['mobile_responsiveness']
167
- session_desktop_loading_speed = st.session_state['desktop_loading_speed']
168
- session_mobile_loading_speed = st.session_state['mobile_loading_speed']
169
- session_SSL_certificate = st.session_state['SSL_certificate']
170
- session_content_management_system = st.session_state['content_management_system']
171
-
172
- if session_website_responsiveness or session_client_relations_management_system or session_lead_generation_mechanism or session_web_analytics or session_mobile_responsiveness or session_desktop_loading_speed or session_mobile_loading_speed or session_content_management_system or session_SSL_certificate == 'uploaded':
173
- payload_txt = {"input_value": payload, "output_type": "text", "input_type": "chat"}
174
  payload_txt_model = self.request_model(payload_txt, headers)
175
  debug_info = {'data_field' : 'Website and Tools Analyst', 'result': payload_txt_model}
176
  upload_response(debug_info)
@@ -184,6 +89,7 @@ class WebsiteAndTools:
184
  st.session_state['web_analytics'] = ''
185
  st.session_state['client_relations_management_system'] = ''
186
  st.session_state['lead_generation_mechanism'] = ''
 
187
  except Exception as e:
188
  pass
189
  #end_time = time.time()
@@ -217,15 +123,84 @@ class WebsiteAndTools:
217
  pass
218
 
219
  def row1(self):
220
-
221
- #st.write("") # FOR THE HIDE BUTTON
222
- #st.write("") # FOR THE HIDE BUTTON
223
- #st.write("AI Analyst Output: ")
224
  st.session_state['analyzing'] = False
225
- #st.write("") # FOR THE HIDE BUTTON
226
- self.process()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
227
 
228
-
229
  if __name__ == "__main__":
230
  st.set_page_config(layout="wide")
231
 
 
59
  myclient = MongoClient(mongodb_uri)
60
  mydb = myclient.get_database()
61
  mycol = mydb["df_data"]
62
+
63
+ # Sort by timestamp field in descending order
64
+ x = mycol.find_one(
65
+ {"data_field": data_field},
66
+ sort=[("timestamp", -1)]
67
+ )
68
+
69
  x = x["result"]
70
  return x
71
 
72
  def process(self):
73
  with st.spinner('Website and Tools...', show_time=True):
74
+ st.write('')
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
75
  headers = {"Content-Type": "application/json", "x-api-key": f"{os.getenv('x-api-key')}"}
76
+
77
  try:
78
+ payload_txt = {"input_value": self.payload, "output_type": "text", "input_type": "chat"}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79
  payload_txt_model = self.request_model(payload_txt, headers)
80
  debug_info = {'data_field' : 'Website and Tools Analyst', 'result': payload_txt_model}
81
  upload_response(debug_info)
 
89
  st.session_state['web_analytics'] = ''
90
  st.session_state['client_relations_management_system'] = ''
91
  st.session_state['lead_generation_mechanism'] = ''
92
+ count = 0
93
  except Exception as e:
94
  pass
95
  #end_time = time.time()
 
123
  pass
124
 
125
  def row1(self):
 
 
 
 
126
  st.session_state['analyzing'] = False
127
+ self.payload = ""
128
+ count = 0
129
+ try:
130
+ payload = ""
131
+ session_website_responsiveness = st.session_state['website_responsiveness']
132
+ if session_website_responsiveness == 'uploaded':
133
+ count += 1
134
+ self.payload += self.fetch_data("Website Responsiveness")
135
+ except Exception as e:
136
+ pass
137
+ try:
138
+ session_content_management_system = st.session_state['content_management_system']
139
+ if session_content_management_system == 'uploaded':
140
+ count += 1
141
+ self.payload += self.fetch_data("Content Management System")
142
+ except Exception as e:
143
+ pass
144
+ try:
145
+ session_SSL_certificate = st.session_state['SSL_certificate']
146
+ if session_SSL_certificate == 'uploaded':
147
+ count += 1
148
+ self.payload += self.fetch_data("SSL Certificate")
149
+
150
+ except Exception as e:
151
+ pass
152
+ try:
153
+ session_mobile_responsiveness = st.session_state['mobile_responsiveness']
154
+ if session_mobile_responsiveness == 'uploaded':
155
+ count += 1
156
+ self.payload += self.fetch_data("Mobile Responsiveness")
157
+ except Exception as e:
158
+ pass
159
+ try:
160
+ session_desktop_loading_speed = st.session_state['desktop_loading_speed']
161
+ if session_desktop_loading_speed == 'uploaded':
162
+ count += 1
163
+ self.payload += self.fetch_data("Desktop Loading Speed")
164
+ except Exception as e:
165
+ pass
166
+ try:
167
+ session_mobile_loading_speed = st.session_state['mobile_loading_speed']
168
+ if session_mobile_loading_speed == 'uploaded':
169
+ count += 1
170
+ self.payload += self.fetch_data("Mobile Loading Speed")
171
+ except Exception as e:
172
+ pass
173
+ try:
174
+ session_first_meaningful_paint = st.session_state['first_meaningful_paint']
175
+ if session_first_meaningful_paint == 'uploaded':
176
+ count += 1
177
+ self.payload += self.fetch_data("First Meaningful Paint")
178
+ except Exception as e:
179
+ pass
180
+ try:
181
+ session_web_analytics = st.session_state['web_analytics']
182
+ if session_web_analytics == 'uploaded':
183
+ count += 1
184
+ self.payload += self.fetch_data("Web Analytics")
185
+ except Exception as e:
186
+ pass
187
+ try:
188
+ session_client_relations_management_system = st.session_state['client_relations_management_system']
189
+ if session_client_relations_management_system == 'uploaded':
190
+ count += 1
191
+ self.payload += self.fetch_data("Client Relations Management System")
192
+ except Exception as e:
193
+ pass
194
+ try:
195
+ session_lead_generation_mechanism = st.session_state['lead_generation_mechanism']
196
+ if session_lead_generation_mechanism == 'uploaded':
197
+ count += 1
198
+ self.payload += self.fetch_data("Lead Generation Mechanism")
199
+ except Exception as e:
200
+ pass
201
+ if count >= 1:
202
+ self.process()
203
 
 
204
  if __name__ == "__main__":
205
  st.set_page_config(layout="wide")
206
 
helper/telemetry.py CHANGED
@@ -19,7 +19,7 @@ def collect_telemetry(data):
19
  return
20
 
21
  try:
22
- '''
23
  # Get the current UTC time
24
  utc_now = datetime.now(timezone.utc)
25
 
@@ -29,7 +29,7 @@ def collect_telemetry(data):
29
  # Convert the UTC time to GMT+8
30
  timestamp = utc_now.astimezone(gmt_plus_8).isoformat()
31
  data['timestamp'] = timestamp
32
- '''
33
  client = MongoClient(mongodb_uri)
34
  db = client.get_database() # Use the default database specified in the URI
35
  collection = db["df_data"] # Replace "telemetry" with your desired collection name
 
19
  return
20
 
21
  try:
22
+
23
  # Get the current UTC time
24
  utc_now = datetime.now(timezone.utc)
25
 
 
29
  # Convert the UTC time to GMT+8
30
  timestamp = utc_now.astimezone(gmt_plus_8).isoformat()
31
  data['timestamp'] = timestamp
32
+
33
  client = MongoClient(mongodb_uri)
34
  db = client.get_database() # Use the default database specified in the URI
35
  collection = db["df_data"] # Replace "telemetry" with your desired collection name
pages/analyzing_page.py CHANGED
@@ -6,18 +6,15 @@ from classes.response_off import SeoOffPageAnalyst
6
  from classes.response_on_page import SeoOn
7
  from classes.response_website_and_tools import WebsiteAndTools
8
  from classes.response_seo import Seo
 
9
 
10
  def run_analysis():
11
- # Retrieve uploaded files from session state
12
- off_page_file = st.session_state.get('off_page_file_uploaded')
13
- gt_file = st.session_state.get('GT_file_uploaded')
14
- website_and_tools = st.session_state.get('website_and_tools')
15
- seo = st.session_state.get('seo')
16
  # Placeholders for status updates
17
  off_page_status = st.empty()
18
  on_page_status = st.empty()
19
  website_and_tools_status = st.empty()
20
  seo_status = st.empty()
 
21
  # Function to run SEO Off Page Analysis
22
  def run_off_page_analysis():
23
  try:
@@ -59,23 +56,36 @@ def run_analysis():
59
  seo_status.error(f"SEO Analysis failed: {e}")
60
  return None
61
 
 
 
 
 
 
 
 
 
 
 
62
  # Create threads for concurrent execution
63
  off_page_thread = threading.Thread(target=run_off_page_analysis)
64
  on_page_thread = threading.Thread(target=run_on_page_analysis)
65
  website_and_tools_thread = threading.Thread(target=run_website_and_tools_analysis)
66
  seo_thread = threading.Thread(target=run_seo_analysis)
 
67
 
68
  # Attach Streamlit context to threads
69
  add_script_run_ctx(off_page_thread)
70
  add_script_run_ctx(on_page_thread)
71
  add_script_run_ctx(website_and_tools_thread)
72
  add_script_run_ctx(seo_thread)
 
73
 
74
  # Start threads
75
  off_page_thread.start()
76
  on_page_thread.start()
77
  website_and_tools_thread.start()
78
  seo_thread.start()
 
79
 
80
  # Wait for threads to complete
81
  off_page_thread.join()
 
6
  from classes.response_on_page import SeoOn
7
  from classes.response_website_and_tools import WebsiteAndTools
8
  from classes.response_seo import Seo
9
+ from classes.response_social_media import SocialMedia
10
 
11
  def run_analysis():
 
 
 
 
 
12
  # Placeholders for status updates
13
  off_page_status = st.empty()
14
  on_page_status = st.empty()
15
  website_and_tools_status = st.empty()
16
  seo_status = st.empty()
17
+ social_media_status = st.empty()
18
  # Function to run SEO Off Page Analysis
19
  def run_off_page_analysis():
20
  try:
 
56
  seo_status.error(f"SEO Analysis failed: {e}")
57
  return None
58
 
59
+ def run_social_media_analysis():
60
+ try:
61
+ social_media_status.info("Starting Social Media Analysis...")
62
+ result = SocialMedia(os.getenv('MODEL_Social_Media_Analyst'))
63
+ social_media_status.success("Social Media Analysis completed successfully.")
64
+ return result
65
+ except Exception as e:
66
+ social_media_status.error(f"Social Media Analysis failed: {e}")
67
+ return None
68
+
69
  # Create threads for concurrent execution
70
  off_page_thread = threading.Thread(target=run_off_page_analysis)
71
  on_page_thread = threading.Thread(target=run_on_page_analysis)
72
  website_and_tools_thread = threading.Thread(target=run_website_and_tools_analysis)
73
  seo_thread = threading.Thread(target=run_seo_analysis)
74
+ social_media_thread = threading.Thread(target=run_social_media_analysis)
75
 
76
  # Attach Streamlit context to threads
77
  add_script_run_ctx(off_page_thread)
78
  add_script_run_ctx(on_page_thread)
79
  add_script_run_ctx(website_and_tools_thread)
80
  add_script_run_ctx(seo_thread)
81
+ add_script_run_ctx(social_media_thread)
82
 
83
  # Start threads
84
  off_page_thread.start()
85
  on_page_thread.start()
86
  website_and_tools_thread.start()
87
  seo_thread.start()
88
+ social_media_thread.start()
89
 
90
  # Wait for threads to complete
91
  off_page_thread.join()