13
13
from urllib .parse import quote , quote_plus , unquote , urlparse , urlunparse
14
14
15
15
16
- def bing_search (query , interleave_results = True ):
17
- results = _bing_api_call (query )
16
+ def bing_search (query , lat = None , lon = None , interleave_results = True ):
17
+ results = _bing_api_call (query , lat , lon )
18
18
snippets = {}
19
19
20
20
def _processFacts (elm ):
@@ -154,12 +154,18 @@ def _processFacts(elm):
154
154
return f"## A Bing search for '{ query } ' found { idx } results:\n \n " + content .strip ()
155
155
156
156
157
- def _bing_api_call (query : str ):
157
+ def _bing_api_call (query , lat = None , lon = None ):
158
158
# Prepare the request parameters
159
159
request_kwargs = {}
160
160
request_kwargs ["headers" ] = {}
161
161
request_kwargs ["headers" ]["Ocp-Apim-Subscription-Key" ] = os .environ ["BING_API_KEY" ]
162
162
163
+ # Specify the user's location
164
+ if lat is not None or lon is not None :
165
+ if lat is None or lon is None :
166
+ raise ValueError ("If lat is specified, lon must also be specified." )
167
+ request_kwargs ["headers" ]["X-Search-Location" ] = f"lat:{ lat } ;long:{ lon } ;re:22m"
168
+
163
169
request_kwargs ["params" ] = {}
164
170
request_kwargs ["params" ]["q" ] = query
165
171
request_kwargs ["params" ]["textDecorations" ] = False
@@ -184,18 +190,3 @@ def _markdown_link(anchor, href):
184
190
return f"[{ anchor } ]({ href } )"
185
191
except ValueError : # It's not clear if this ever gets thrown
186
192
return f"[{ anchor } ]({ href } )"
187
-
188
-
189
- def _bing_news_call ():
190
- request_kwargs = {}
191
- request_kwargs ["headers" ] = {}
192
- request_kwargs ["headers" ]["Ocp-Apim-Subscription-Key" ] = os .environ ["BING_API_KEY" ]
193
- request_kwargs ["stream" ] = False
194
-
195
- # Make the request
196
- response = requests .get (
197
- "https://api.bing.microsoft.com/v7.0/news/search?q=&mkt=en-us" , ** request_kwargs
198
- )
199
- response .raise_for_status ()
200
- results = response .json ()
201
- return results
0 commit comments