-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathfirecrawl_response_formatter.py
More file actions
60 lines (52 loc) · 2.09 KB
/
firecrawl_response_formatter.py
File metadata and controls
60 lines (52 loc) · 2.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
def format_response(query: str, search_response):
# Handle different response structures
data_items = []
# Check if search_response is a list
if isinstance(search_response, list):
data_items = search_response
# Check if it has a 'data' attribute or key
elif hasattr(search_response, 'data'):
data_items = search_response.data
elif isinstance(search_response, dict) and 'data' in search_response:
data_items = search_response['data']
# Check for 'web' attribute (older API structure)
elif hasattr(search_response, 'web'):
data_items = search_response.web
# Check for 'results' key
elif isinstance(search_response, dict) and 'results' in search_response:
data_items = search_response['results']
else:
# Try to use the response directly
data_items = [search_response] if search_response else []
# Check if we have results
if not search_response or len(data_items) == 0:
print(f"❌ No results found for query: {query}")
return []
# Process results
formatted_results = []
for item in data_items:
# Handle both object and dict structures
if hasattr(item, '__dict__'):
# Convert object to dict for easier handling
item_dict = item.__dict__
elif isinstance(item, dict):
item_dict = item
else:
continue
# Extract content - try multiple possible field names
content = ''
for field in ['markdown', 'content', 'text', 'description', 'snippet']:
if hasattr(item, field):
content = getattr(item, field) or ''
if content:
break
elif isinstance(item_dict, dict) and field in item_dict:
content = item_dict[field] or ''
if content:
break
formatted_results.append({
"snippet": content[:500] + "..." if len(content) > 500 else content,
"content": content,
"query": query
})
return formatted_results