joshuadunlop commited on
Commit
ae562f8
·
verified ·
1 Parent(s): 92b517f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +46 -17
app.py CHANGED
@@ -162,32 +162,45 @@ if reset:
162
  st.session_state.clear()
163
 
164
  # Generate and reset button logic
165
- generate_button = st.sidebar.button("Generate All")
 
 
166
 
167
  # Main app layout
168
  row_count = st.session_state.get("row_count", 1)
 
 
 
 
169
  for i in range(row_count):
170
- col1, col2 = st.columns(2)
171
  target_url_key = f"target_url_{i}"
172
-
173
  with col1:
174
  st.text_input(f"Enter the target URL {i + 1}", key=target_url_key)
175
-
176
- df_key = f"df_{i}"
177
- df = st.session_state.get(df_key)
178
  with col2:
179
- if df is not None:
180
- csv = convert_df_to_csv(df)
181
- st.download_button(
182
- label=f"Download data as CSV for URL {i + 1}",
183
- data=csv,
184
- file_name=f'backlinks_{i + 1}.csv',
185
- mime='text/csv',
186
- )
187
- elif df is None and generate_button:
188
- st.error(f"Failed to generate CSV for URL {i + 1}: No data returned from the API or data processing error.")
 
 
 
 
 
 
 
 
 
189
 
190
- if generate_button:
191
  jobs = Queue()
192
  results = Queue()
193
  workers = [BacklinkWorker(jobs, results, api_login, api_key) for _ in range(num_concurrent_calls)]
@@ -210,6 +223,22 @@ if generate_button:
210
  url_id, df = results.get()
211
  st.session_state[f"df_{url_id}"] = df
212
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
213
  # Display and download logic for each row
214
  for i in range(row_count):
215
  df_key = f"df_{i}"
 
162
  st.session_state.clear()
163
 
164
  # Generate and reset button logic
165
+ generate_pressed = st.sidebar.button("Generate All")
166
+ if generate_pressed:
167
+ st.session_state['generate_pressed'] = True
168
 
169
  # Main app layout
170
  row_count = st.session_state.get("row_count", 1)
171
+
172
+ # Define placeholders for each row in the second column
173
+ download_placeholders = [st.empty() for _ in range(row_count)]
174
+
175
  for i in range(row_count):
176
+ col1, _ = st.columns(2)
177
  target_url_key = f"target_url_{i}"
178
+
179
  with col1:
180
  st.text_input(f"Enter the target URL {i + 1}", key=target_url_key)
181
+
 
 
182
  with col2:
183
+ # Use placeholders for download buttons
184
+ download_placeholder = st.empty()
185
+
186
+ # Conditionally display download buttons or error messages
187
+ if 'generate_pressed' in st.session_state:
188
+ df_key = f"df_{i}"
189
+ df = st.session_state.get(df_key)
190
+
191
+ if df is not None:
192
+ csv = convert_df_to_csv(df)
193
+ download_placeholder.download_button(
194
+ label=f"Download data as CSV for URL {i + 1}",
195
+ data=csv,
196
+ file_name=f'backlinks_{i + 1}.csv',
197
+ mime='text/csv',
198
+ )
199
+ else:
200
+ # This will only show an error if the generation process has been initiated
201
+ download_placeholder.error(f"Failed to generate CSV for URL {i + 1}: No data returned from the API or data processing error.")
202
 
203
+ if 'generate_pressed' in st.session_state and st.session_state['generate_pressed']:
204
  jobs = Queue()
205
  results = Queue()
206
  workers = [BacklinkWorker(jobs, results, api_login, api_key) for _ in range(num_concurrent_calls)]
 
223
  url_id, df = results.get()
224
  st.session_state[f"df_{url_id}"] = df
225
 
226
+ # Update placeholders with download buttons or error messages
227
+ for i, placeholder in enumerate(download_placeholders):
228
+ df_key = f"df_{i}"
229
+ df = st.session_state.get(df_key)
230
+
231
+ if df is not None:
232
+ csv = convert_df_to_csv(df)
233
+ placeholder.download_button(
234
+ label=f"Download data as CSV for URL {i + 1}",
235
+ data=csv,
236
+ file_name=f'backlinks_{i + 1}.csv',
237
+ mime='text/csv',
238
+ )
239
+ else:
240
+ placeholder.error(f"Failed to generate CSV for URL {i + 1}: No data returned from the API or data processing error.")
241
+
242
  # Display and download logic for each row
243
  for i in range(row_count):
244
  df_key = f"df_{i}"