lehinevych/MediaWikiAPI

'page' method with strings containing 'ad' and '_' are being corrupted

Opened this issue · 2 comments

Python v3.11
MediaWikiAPI v1.2 (installed via Pip)

>>> import mediawikiapi
>>> wiki_api = mediawikiapi.MediaWikiAPI()
>>> page = wiki_api.page('Honey_badger')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/rhodges/anaconda3/envs/hero/lib/python3.11/site-packages/mediawikiapi/mediawikiapi.py", line 228, in page
    return WikipediaPage(
           ^^^^^^^^^^^^^^
  File "/home/rhodges/anaconda3/envs/hero/lib/python3.11/site-packages/mediawikiapi/wikipediapage.py", line 39, in __init__
    self.__load(redirect=redirect, preload=preload)
  File "/home/rhodges/anaconda3/envs/hero/lib/python3.11/site-packages/mediawikiapi/wikipediapage.py", line 93, in __load
    raise PageError(title=self.title)
mediawikiapi.exceptions.PageError: "honey bager" does not match any pages. Try another query!

>>> page = wiki_api.page('Ada_lovelace')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/rhodges/anaconda3/envs/hero/lib/python3.11/site-packages/mediawikiapi/mediawikiapi.py", line 228, in page
    return WikipediaPage(
           ^^^^^^^^^^^^^^
  File "/home/rhodges/anaconda3/envs/hero/lib/python3.11/site-packages/mediawikiapi/wikipediapage.py", line 39, in __init__
    self.__load(redirect=redirect, preload=preload)
  File "/home/rhodges/anaconda3/envs/hero/lib/python3.11/site-packages/mediawikiapi/wikipediapage.py", line 93, in __load
    raise PageError(title=self.title)
mediawikiapi.exceptions.PageError: "a lovelace" does not match any pages. Try another query!

Note the change in the search term reported in the error:

  • "honey bager"
  • "a lovelace"
    For some reason, adding a 'd' to or removing the '_' from the search term works:
>>> page = wiki_api.page('Adalovelace')
>>> page = wiki_api.page('Honeybadger')
>>> page = wiki_api.page('Adda_lovelace')
>>> page = wiki_api.page('Honey_baddger')

No errors, and page.summary shows as expected.

Oh, but 'Pando_(tree)' works just fine...

I am getting a similar error when looking up Google (https://en.wikipedia.org/wiki/Google)

import mediawikiapi
>>> wiki_api = mediawikiapi.MediaWikiAPI()
>>> response = wiki_api.page("Google")
---------------------------------------------------------------------------
PageError                                 Traceback (most recent call last)
Cell In[51], line 1
----> 1 response = mediawikiapi.page("Google")

File /venv/lib/python3.10/site-packages/mediawikiapi/mediawikiapi.py:228, in MediaWikiAPI.page(self, title, pageid, auto_suggest, redirect, preload)
    226 results, suggestion = self.search(title, results=1, suggestion=True)
    227 if suggestion:
--> 228     return WikipediaPage(
    229         request=request_f,
    230         title=suggestion,
    231         pageid=pageid,
    232         redirect=redirect,
    233         preload=preload,
    234     )
    235 try:
    236     title = results[0]

File /venv/lib/python3.10/site-packages/mediawikiapi/wikipediapage.py:39, in WikipediaPage.__init__(self, request, title, pageid, redirect, preload, original_title)
     36     raise ValueError("Either a title or a pageid must be specified")
     38 self.request = request
---> 39 self.__load(redirect=redirect, preload=preload)
     40 if preload:
     41     for prop in (
     42         "content",
     43         "summary",
   (...)
     48         "infobox",
     49     ):

File /venv/lib/python3.10/site-packages/mediawikiapi/wikipediapage.py:93, in WikipediaPage.__load(self, redirect, preload)
     91 if "missing" in page:
     92     if hasattr(self, "title"):
---> 93         raise PageError(title=self.title)
     94     else:
     95         raise PageError(pageid=self.pageid)

PageError: "google\" does not match any pages. Try another query!

for some reason, adding some other character somewhere in the title (e.g., "Gioogle") worked as well (although, for whatever reason, not all characters/places work: ("Gjoogle" doesn't work, but "Gkoogle" does).

Python v3.10.12
MediaWikiAPI v1.2 (installed via Pip)