diff --git a/add_links/mediawiki_api.py b/add_links/mediawiki_api.py index fa69bde..c834021 100644 --- a/add_links/mediawiki_api.py +++ b/add_links/mediawiki_api.py @@ -4,7 +4,7 @@ import typing from pprint import pprint from typing import Any, cast -from . import wikidata_oauth +from . import mediawiki_oauth wiki_hostname = "en.wikipedia.org" wiki_api_php = f"https://{wiki_hostname}/w/api.php" @@ -29,7 +29,7 @@ def parse_page(enwiki: str) -> dict[str, Any]: def call(params: dict[str, str | int]) -> dict[str, typing.Any]: """Make GET request to mediawiki API.""" - data = wikidata_oauth.api_post_request(params) + data = mediawiki_oauth.api_post_request(params) return cast(dict[str, Any], data.json()) diff --git a/web_view.py b/web_view.py index f15d95f..0f8a1c6 100755 --- a/web_view.py +++ b/web_view.py @@ -84,24 +84,25 @@ def article_url(title: str) -> str: return flask.url_for("article_page", url_title=title.replace(" ", "_")) +def get_hit_count(q: str) -> int: + """Search Wikipedia and return hit count.""" + return typing.cast(int, run_search(q, limit=0)["searchinfo"]["totalhits"]) + + def search_count(q: str) -> int: """How often does this article title appear in Wikipedia.""" - query = run_search(article_title_to_search_query(q), limit=0) - return typing.cast(int, query["searchinfo"]["totalhits"]) - 1 + return get_hit_count(article_title_to_search_query(q)) - 1 def search_count_with_link(q: str) -> int: - """How often does this article title appear in Wikipedia.""" - query = run_search(article_title_to_search_query(q) + f' linksto:"{q}"', limit=0) - return typing.cast(int, query["searchinfo"]["totalhits"]) + """Articles in Wikipedia that include this search term and a link.""" + return get_hit_count(article_title_to_search_query(q) + f' linksto:"{q}"') def search_no_link(q: str) -> tuple[int, list[Hit]]: """Search for mentions of article title with no link included.""" query = run_search(article_title_to_search_query(q) + f' -linksto:"{q}"', "max") - totalhits = query["searchinfo"]["totalhits"] - results = query["search"] - return (totalhits, results) + return (query["searchinfo"]["totalhits"], query["search"]) @app.before_request @@ -132,7 +133,27 @@ def index() -> str | Response: def case_flip(s: str) -> str: - """Switch case of character.""" + """ + Switch the case of a single character. + + If the character is lowercase, it is converted to uppercase. If it is uppercase, + it is converted to lowercase. Non-alphabetic characters remain unchanged. + + Args: + s (str): A single character string. + + Returns: + str: The character with its case flipped, or the original character if it's + not a letter. + + Example: + >>> case_flip('a') + 'A' + >>> case_flip('A') + 'a' + >>> case_flip('1') + '1' + """ if s.islower(): return s.upper() if s.isupper():