Spaces:
Building
Building
Update app.py
Browse files
app.py
CHANGED
@@ -49,35 +49,49 @@ def search_serphouse(query, country, page, num_result):
|
|
49 |
return f"Error: {str(e)}"
|
50 |
|
51 |
def is_recent_news(time_str):
|
|
|
52 |
if not time_str:
|
53 |
-
|
|
|
54 |
time_parts = time_str.lower().split()
|
|
|
55 |
if len(time_parts) < 2:
|
56 |
-
|
|
|
57 |
try:
|
58 |
value = int(time_parts[0])
|
59 |
unit = time_parts[1]
|
|
|
60 |
if unit in ['minute', 'minutes', 'hour', 'hours']:
|
61 |
-
|
62 |
-
|
63 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
64 |
except ValueError:
|
65 |
-
|
66 |
-
|
67 |
|
68 |
def format_results(results):
|
69 |
all_results = "## All News Results\n\n"
|
70 |
recent_results = "## Recent News Results (Within 1 Day)\n\n"
|
71 |
debug_info = "## Debug Information\n\n"
|
72 |
|
|
|
|
|
73 |
try:
|
74 |
if isinstance(results, dict) and "results" in results and "news" in results["results"]:
|
75 |
news_results = results["results"]["news"]
|
|
|
76 |
|
77 |
for result in news_results:
|
78 |
time_str = result.get("time", "Unknown time")
|
79 |
-
is_recent = is_recent_news(time_str)
|
80 |
-
debug_info += f"
|
81 |
|
82 |
all_results += f"""
|
83 |
### [{result.get('title', 'No Title')}]({result.get('url', '#')})
|
@@ -106,16 +120,18 @@ def format_results(results):
|
|
106 |
else:
|
107 |
all_results += "*No valid news results found in the API response.*\n\n"
|
108 |
recent_results += "*No valid news results found in the API response.*\n\n"
|
|
|
109 |
except Exception as e:
|
110 |
all_results += f"*Error processing results: {str(e)}*\n\n"
|
111 |
recent_results += f"*Error processing results: {str(e)}*\n\n"
|
|
|
112 |
|
113 |
return all_results, recent_results, debug_info
|
114 |
|
115 |
def serphouse_search(query, country, page, num_result):
|
116 |
results = search_serphouse(query, country, page, num_result)
|
117 |
all_results, recent_results, debug_info = format_results(results)
|
118 |
-
return
|
119 |
|
120 |
css = """
|
121 |
footer {
|
@@ -132,7 +148,7 @@ iface = gr.Interface(
|
|
132 |
gr.Slider(1, 100, 10, label="Number of Results")
|
133 |
],
|
134 |
outputs=[
|
135 |
-
gr.
|
136 |
gr.Markdown(label="Recent Results (Within 1 Day)"),
|
137 |
gr.Markdown(label="Debug Information")
|
138 |
],
|
|
|
49 |
return f"Error: {str(e)}"
|
50 |
|
51 |
def is_recent_news(time_str):
|
52 |
+
debug_info = f"Checking time: {time_str}\n"
|
53 |
if not time_str:
|
54 |
+
debug_info += "Time string is empty\n"
|
55 |
+
return False, debug_info
|
56 |
time_parts = time_str.lower().split()
|
57 |
+
debug_info += f"Time parts: {time_parts}\n"
|
58 |
if len(time_parts) < 2:
|
59 |
+
debug_info += "Time parts less than 2\n"
|
60 |
+
return False, debug_info
|
61 |
try:
|
62 |
value = int(time_parts[0])
|
63 |
unit = time_parts[1]
|
64 |
+
debug_info += f"Value: {value}, Unit: {unit}\n"
|
65 |
if unit in ['minute', 'minutes', 'hour', 'hours']:
|
66 |
+
debug_info += "Within minutes or hours\n"
|
67 |
+
return True, debug_info
|
68 |
+
elif unit in ['day', 'days']:
|
69 |
+
is_recent = value <= 1
|
70 |
+
debug_info += f"Within days, is recent: {is_recent}\n"
|
71 |
+
return is_recent, debug_info
|
72 |
+
else:
|
73 |
+
debug_info += f"Unknown unit: {unit}\n"
|
74 |
+
return False, debug_info
|
75 |
except ValueError:
|
76 |
+
debug_info += f"ValueError when parsing: {time_parts[0]}\n"
|
77 |
+
return False, debug_info
|
78 |
|
79 |
def format_results(results):
|
80 |
all_results = "## All News Results\n\n"
|
81 |
recent_results = "## Recent News Results (Within 1 Day)\n\n"
|
82 |
debug_info = "## Debug Information\n\n"
|
83 |
|
84 |
+
debug_info += f"Raw API Response:\n```json\n{json.dumps(results, indent=2)}\n```\n\n"
|
85 |
+
|
86 |
try:
|
87 |
if isinstance(results, dict) and "results" in results and "news" in results["results"]:
|
88 |
news_results = results["results"]["news"]
|
89 |
+
debug_info += f"Number of news results: {len(news_results)}\n\n"
|
90 |
|
91 |
for result in news_results:
|
92 |
time_str = result.get("time", "Unknown time")
|
93 |
+
is_recent, time_debug = is_recent_news(time_str)
|
94 |
+
debug_info += f"Article: {result.get('title', 'No Title')}\n{time_debug}\n"
|
95 |
|
96 |
all_results += f"""
|
97 |
### [{result.get('title', 'No Title')}]({result.get('url', '#')})
|
|
|
120 |
else:
|
121 |
all_results += "*No valid news results found in the API response.*\n\n"
|
122 |
recent_results += "*No valid news results found in the API response.*\n\n"
|
123 |
+
debug_info += "Invalid or unexpected API response structure\n"
|
124 |
except Exception as e:
|
125 |
all_results += f"*Error processing results: {str(e)}*\n\n"
|
126 |
recent_results += f"*Error processing results: {str(e)}*\n\n"
|
127 |
+
debug_info += f"Exception occurred: {str(e)}\n"
|
128 |
|
129 |
return all_results, recent_results, debug_info
|
130 |
|
131 |
def serphouse_search(query, country, page, num_result):
|
132 |
results = search_serphouse(query, country, page, num_result)
|
133 |
all_results, recent_results, debug_info = format_results(results)
|
134 |
+
return all_results, recent_results, debug_info
|
135 |
|
136 |
css = """
|
137 |
footer {
|
|
|
148 |
gr.Slider(1, 100, 10, label="Number of Results")
|
149 |
],
|
150 |
outputs=[
|
151 |
+
gr.Markdown(label="All Results"),
|
152 |
gr.Markdown(label="Recent Results (Within 1 Day)"),
|
153 |
gr.Markdown(label="Debug Information")
|
154 |
],
|