Problem getting sentences from Wikipedia when redirect needed

41 Views Asked by At

Could use a little push. I'm trying to use the 'wikipedia' module to pull information for various topics to use with my custom voice assistant. I'm running into issues when Wikipedia has a redirect I think. See examples:

import wikipedia
result = wikipedia.summary("Thomas Cruise", sentences = 2)
print(result)

Output:

Thomas Cruise Mapother IV (born July 3, 1962) is an American actor. Regarded as a Hollywood icon, he has received various accolades, including an Honorary Palme d'Or and three Golden Globe Awards, in addition to nominations for four Academy Awards.

But when I change to the more popular name of 'Tom Cruise' I get this:

import wikipedia
result = wikipedia.summary("Tom Cruise", sentences = 2)
print(result)

Output:

Homelab:/config/tmp# python3 wiki.py
Traceback (most recent call last):
  File "/config/tmp/wiki.py", line 2, in <module>
    result = wikipedia.summary("Tom Cruise", sentences = 2)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/wikipedia/util.py", line 28, in __call__
    ret = self._cache[key] = self.fn(*args, **kwargs)
                             ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/wikipedia/wikipedia.py", line 231, in summary
    page_info = page(title, auto_suggest=auto_suggest, redirect=redirect)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/wikipedia/wikipedia.py", line 276, in page
    return WikipediaPage(title, redirect=redirect, preload=preload)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/wikipedia/wikipedia.py", line 299, in __init__
    self.__load(redirect=redirect, preload=preload)
  File "/usr/local/lib/python3.12/site-packages/wikipedia/wikipedia.py", line 345, in __load
    raise PageError(self.title)
wikipedia.exceptions.PageError: Page id "tom raise" does not match any pages. Try another id!

Unfortunately my Python skills are not great and I can't really figure out why this is not working. I know if I search 'Tom Cruise' on the main wikipedia page it will redict to the correct page and that page is even called "https://en.wikipedia.org/wiki/Tom_Cruise"

Any help is most appreciated.

1

There are 1 best solutions below

0
dinki On

Thanks for @fjsevilla for the fix:

import wikipedia
result = wikipedia.summary("Tom Cruise", sentences = 2, auto_suggest=False)
print(result)

auto_suggest=False needed