28 lines
850 B
Python
28 lines
850 B
Python
|
from .category import Category
|
||
|
from .mediawiki import mediawiki_query
|
||
|
from .type import CallParams
|
||
|
|
||
|
|
||
|
def process_cats(cats: list[dict[str, str]], site: str) -> list[Category]:
|
||
|
"""Process categories."""
|
||
|
return [Category(cat["title"], site) for cat in cats]
|
||
|
|
||
|
|
||
|
def get_categories(titles: list[str], site: str) -> list[tuple[str, list[Category]]]:
|
||
|
"""Get categories for pages with given titles."""
|
||
|
params: CallParams = {
|
||
|
"prop": "categories",
|
||
|
"clshow": "!hidden",
|
||
|
"cllimit": "max",
|
||
|
}
|
||
|
from_wiki = mediawiki_query(titles, params, site)
|
||
|
title_and_cats = []
|
||
|
for i in from_wiki:
|
||
|
if "categories" not in i:
|
||
|
continue
|
||
|
cats = process_cats(i["categories"], site)
|
||
|
if not cats:
|
||
|
continue
|
||
|
title_and_cats.append((i["title"], cats))
|
||
|
return title_and_cats
|