From 08ccaa5f830e6fbf2071bb26afdc92601e86aea3 Mon Sep 17 00:00:00 2001 From: James Gerity Date: Thu, 29 Dec 2022 14:52:49 -0500 Subject: [PATCH] wikipedia: Split description retrieval and say() function --- sopel/modules/wikipedia.py | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/sopel/modules/wikipedia.py b/sopel/modules/wikipedia.py index be8192807..b908acbf1 100644 --- a/sopel/modules/wikipedia.py +++ b/sopel/modules/wikipedia.py @@ -273,6 +273,16 @@ def mw_section(server, query, section): def say_commons_image(bot, trigger, image): + desc = mw_commons_image_description(image) + + if desc: + bot.say(desc, truncation=" […]") + + +def mw_commons_image_description(image): + """ + Retrieves the Wikimedia Commons description for the given image + """ params = "&".join([ "action=query", "prop=imageinfo", @@ -293,21 +303,21 @@ def say_commons_image(bot, trigger, image): pages = query_data["pages"] if pageids == [-1] or len(pageids) > 1: - bot.say("no lol") - return False + # We either got no results, or multiple results, time to bail out + return None else: page = pages[pageids[0]] raw_desc = page["imageinfo"][0]["extmetadata"]["ImageDescription"]["value"] parser = WikiParser(image) - parser.feed(description) + parser.feed(raw_desc) desc = parser.get_result() desc = ' '.join(desc.split()) # collapse multiple whitespace chars - bot.say(desc, truncation=" […]") + return desc except LookupError: - return False + return None # Matches a wikipedia page (excluding spaces and #, but not /File: links), with a separate optional field for the section