1414
1515from requests import get
1616
17- from sopel import plugin
17+ from sopel import __version__ as sopel_version , plugin
1818from sopel .config import types
1919
2020
2121LOGGER = logging .getLogger (__name__ )
2222
2323REDIRECT = re .compile (r'^REDIRECT (.*)' )
2424PLUGIN_OUTPUT_PREFIX = '[wikipedia] '
25+ PLUGIN_USER_AGENT = 'sopel-wikipedia/{version} (https://sopel.chat/)' .format (
26+ version = sopel_version )
27+ WIKI_REQUEST_HEADERS = {
28+ 'User-Agent' : PLUGIN_USER_AGENT ,
29+ }
2530
2631
2732class WikiParser (HTMLParser ):
@@ -169,7 +174,7 @@ def mw_search(server, query, num):
169174 '&list=search&srlimit=%d&srprop=timestamp&srwhat=text'
170175 '&srsearch=' ) % (server , num )
171176 search_url += query
172- query = get (search_url ).json ()
177+ query = get (search_url , headers = WIKI_REQUEST_HEADERS ).json ()
173178 if 'query' in query :
174179 query = query ['query' ]['search' ]
175180 return [r ['title' ] for r in query ]
@@ -213,7 +218,7 @@ def mw_snippet(server, query):
213218 '&action=query&prop=extracts&exintro&explaintext'
214219 '&exchars=500&redirects&titles=' )
215220 snippet_url += query
216- snippet = get (snippet_url ).json ()
221+ snippet = get (snippet_url , headers = WIKI_REQUEST_HEADERS ).json ()
217222 snippet = snippet ['query' ]['pages' ]
218223
219224 # For some reason, the API gives the page *number* as the key, so we just
@@ -244,7 +249,7 @@ def mw_section(server, query, section):
244249 sections_url = ('https://{0}/w/api.php?format=json&redirects'
245250 '&action=parse&prop=sections&page={1}'
246251 .format (server , query ))
247- sections = get (sections_url ).json ()
252+ sections = get (sections_url , headers = WIKI_REQUEST_HEADERS ).json ()
248253
249254 fetch_title = section_number = None
250255
@@ -265,7 +270,7 @@ def mw_section(server, query, section):
265270 '&action=parse&page={1}&prop=text'
266271 '§ion={2}' ).format (server , quote (fetch_title ), section_number )
267272
268- data = get (snippet_url ).json ()
273+ data = get (snippet_url , headers = WIKI_REQUEST_HEADERS ).json ()
269274
270275 parser = WikiParser (section .replace ('_' , ' ' ))
271276 parser .feed (data ['parse' ]['text' ]['*' ])
@@ -296,7 +301,7 @@ def mw_image_description(server, image):
296301 ])
297302 url = "https://{server}/w/api.php?{params}" .format (server = server , params = params )
298303
299- response = get (url )
304+ response = get (url , headers = WIKI_REQUEST_HEADERS )
300305 json = response .json ()
301306
302307 try :
0 commit comments