joshuadunlop commited on
Commit
2c02e47
·
verified ·
1 Parent(s): f45034a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -34
app.py CHANGED
@@ -8,20 +8,13 @@ from io import StringIO
8
  import csv
9
 
10
  def get_backlinks(api_login, api_key, target_url, filters):
11
- encoded_credentials = base64.b64encode(f"{api_login}:{api_key}".encode()).decode()
12
- headers = {
13
- 'Authorization': f'Basic {encoded_credentials}'
14
- }
15
- post_data = {
16
- 0: {
17
- "target": target_url,
18
- "limit": 1000,
19
- "mode": "as_is",
20
- "filters": filters
21
- }
22
- }
23
- response = requests.post("https://api.dataforseo.com/v3/backlinks/backlinks/live", json=post_data, headers=headers)
24
- if response.status_code == 200:
25
  response_data = response.json()
26
  if 'tasks' in response_data:
27
  task_result = response_data['tasks'][0]['result']
@@ -35,9 +28,8 @@ def get_backlinks(api_login, api_key, target_url, filters):
35
  else:
36
  st.error(f"No 'tasks' key in response JSON. Full response: {response_data}")
37
  return None
38
- else:
39
- error_message = response.json().get('status_message', 'No specific error message provided')
40
- st.error(f"Error: Code: {response.status_code} Message: {error_message}")
41
  return None
42
 
43
  def convert_df_to_csv(df):
@@ -139,24 +131,8 @@ if reset:
139
  st.session_state.clear()
140
 
141
  row_count = st.session_state.get("row_count", 1)
142
- for i in range(row_count):
143
- cols = st.columns(2)
144
- target_url_key = f"target_url_{i}"
145
- target_url = cols[0].text_input(f"Enter the target URL {i + 1}", key=target_url_key)
146
- df_key = f"df_{i}"
147
- df = st.session_state.get(df_key)
148
- if df is not None:
149
- csv = convert_df_to_csv(df)
150
- cols[1].download_button(
151
- label=f"Download data as CSV for URL {i + 1}",
152
- data=csv,
153
- file_name=f'backlinks_{i + 1}.csv',
154
- mime='text/csv',
155
- )
156
- elif df is None and generate_button:
157
- cols[1].error(f"Failed to generate CSV for URL {i + 1}: No data returned from the API or data processing error.")
158
 
159
- generate_button = st.sidebar.button("Generate All")
160
 
161
  if generate_button:
162
  jobs = Queue()
@@ -180,3 +156,20 @@ if generate_button:
180
  while not results.empty():
181
  url_id, df = results.get()
182
  st.session_state[f"df_{url_id}"] = df
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  import csv
9
 
10
  def get_backlinks(api_login, api_key, target_url, filters):
11
+ try:
12
+ encoded_credentials = base64.b64encode(f"{api_login}:{api_key}".encode()).decode()
13
+ headers = {'Authorization': f'Basic {encoded_credentials}'}
14
+ post_data = {0: {"target": target_url, "limit": 1000, "mode": "as_is", "filters": filters}}
15
+ response = requests.post("https://api.dataforseo.com/v3/backlinks/backlinks/live", json=post_data, headers=headers)
16
+ response.raise_for_status() # Raise an exception for HTTP errors
17
+
 
 
 
 
 
 
 
18
  response_data = response.json()
19
  if 'tasks' in response_data:
20
  task_result = response_data['tasks'][0]['result']
 
28
  else:
29
  st.error(f"No 'tasks' key in response JSON. Full response: {response_data}")
30
  return None
31
+ except requests.RequestException as e:
32
+ st.error(f"Request error: {e}")
 
33
  return None
34
 
35
  def convert_df_to_csv(df):
 
131
  st.session_state.clear()
132
 
133
  row_count = st.session_state.get("row_count", 1)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
134
 
135
+ generate_button = st.sidebar.button("Generate All") # Define generate_button before its first use
136
 
137
  if generate_button:
138
  jobs = Queue()
 
156
  while not results.empty():
157
  url_id, df = results.get()
158
  st.session_state[f"df_{url_id}"] = df
159
+
160
+ for i in range(row_count):
161
+ cols = st.columns(2)
162
+ target_url_key = f"target_url_{i}"
163
+ target_url = cols[0].text_input(f"Enter the target URL {i + 1}", key=target_url_key)
164
+ df_key = f"df_{i}"
165
+ df = st.session_state.get(df_key)
166
+ if df is not None:
167
+ csv = convert_df_to_csv(df)
168
+ cols[1].download_button(
169
+ label=f"Download data as CSV for URL {i + 1}",
170
+ data=csv,
171
+ file_name=f'backlinks_{i + 1}.csv',
172
+ mime='text/csv',
173
+ )
174
+ elif df is None and generate_button:
175
+ cols[1].error(f"Failed to generate CSV for URL {i + 1}: No data returned from the API or data processing error.")