from .http import session import mwclient def instanciate(site): """ Instancie un objet permettant d’accéder à l’API d’un site MediaWiki. :param site: Nom de domaine du site. :return: Instance mwclient.Site pour le site. """ return mwclient.Site(site, pool=session) def article_canonical(site, article): """ Obtient le nom canonique d’un article après avoir suivi les redirections. :param site: Instance mwclient.Site pour le site ciblé. :param article: Article ciblé dans le site. :return: Nom canonique de l’article. """ original_page = site.pages[article] if not original_page.exists: raise Exception( 'Article « {} » inexistant sur {}' .format(article, site.host) ) return original_page.resolve_redirect().name def article_redirects(site, article): """ Récupère l’ensemble des pages redirigeant vers un article. :param site: Instance mwclient.Site pour le site ciblé. :param article: Article ciblé dans le site. :return: Liste des pages redirigeant vers `article`. """ response = site.api('query', prop='redirects', titles=article) page_response = list(response['query']['pages'].values())[0] if 'missing' in page_response: raise Exception( 'Article « {} » inexistant sur {}' .format(article, site.host) ) # Si la réponse n’inclut pas la clé « redirects », c’est qu’il n’existe # aucune redirection vers la page return [ item['title'] for item in page_response['redirects'] ] if 'redirects' in page_response else []