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

Add Marketplace class for handling product analysis and data fetching

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