File size: 2,085 Bytes
c459436
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
61
62
#!/usr/bin/env python3

import os
import sys
import json
import requests


def search(query: str, count: int = 5, summary: bool = True, freshness: str = "noLimit") -> dict:
    api_key = os.environ.get("LANGSEARCH_API_KEY", "").strip()
    if not api_key:
        raise SystemExit("LANGSEARCH_API_KEY environment variable not set")
    
    url = "https://api.langsearch.com/v1/web-search"
    headers = {
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json"
    }
    payload = {
        "query": query,
        "freshness": freshness,
        "summary": summary,
        "count": min(count, 10)
    }
    
    try:
        response = requests.post(url, headers=headers, json=payload, timeout=30)
        response.raise_for_status()
        data = response.json()
        
        if data.get("code") == 200:
            results = []
            web_pages = data.get("data", {}).get("webPages", {}).get("value", [])
            for page in web_pages:
                results.append({
                    "name": page.get("name", ""),
                    "url": page.get("url", ""),
                    "snippet": page.get("snippet", ""),
                    "summary": page.get("summary", "") if summary else ""
                })
            return {"success": True, "query": query, "results": results}
        else:
            return {"success": False, "error": data.get("msg", "Unknown error")}
    
    except requests.RequestException as e:
        return {"success": False, "error": str(e)}


if __name__ == "__main__":
    if len(sys.argv) < 2:
        print("Usage: search_tool.py '<query>' [count] [summary] [freshness]")
        print("Example: search_tool.py 'Apple M4 chip' 5 true noLimit")
        sys.exit(1)
    
    query = sys.argv[1]
    count = int(sys.argv[2]) if len(sys.argv) > 2 else 5
    summary = sys.argv[3].lower() == "true" if len(sys.argv) > 3 else True
    freshness = sys.argv[4] if len(sys.argv) > 4 else "noLimit"
    
    result = search(query, count, summary, freshness)
    print(json.dumps(result, indent=2))