Page MenuHomePhabricator

Make Page.interwiki() use api instead of parsing the text
Open, LowPublicFeature

Description

In page.py in the Page object we have the following function:
https://git.wikimedia.org/blob/pywikibot%2Fcore.git/aba68924c8221f111fa28ebda34ea11c19f7d57f/pywikibot%2Fpage.py#L1113

def interwiki(self, expand=True):
    """Iterate interwiki links in the page text, excluding language links.

    @param expand: if True (default), include interwiki links found in
        templates transcluded onto this page; if False, only iterate
        interwiki links found in this page's own wikitext
    @type expand: bool

    @return: a generator that yields Link objects
    """
    # This function does not exist in the API, so it has to be
    # implemented by screen-scraping

The MediaWiki api now has the function "iwlinks" (https://www.mediawiki.org/wiki/API:Iwlinks) that seems to do what we need. See for example https://commons.wikimedia.org/w/api.php?action=query&prop=iwlinks&titles=Creator:Antonio_Ponce&format=json

The interwiki() function should be reimplemented using the api.


Version: core-(2.0)
Severity: enhancement

Details

Reference
bz70492

Event Timeline

bzimport raised the priority of this task from to Needs Triage.Nov 22 2014, 3:54 AM
bzimport set Reference to bz70492.
bzimport added a subscriber: Unknown Object (????).

Added the bug (23524) in which this was added. Shipped as part of MediaWiki 1.17

One problem is the API doesnt support 'expand=False' behaviour. The API always includes all interlinks. in your example

{
    "prefix": "w",
    "*": "Wikipedia:Transclusion"
},

A recent attempt to use both the API and textlib in the same Page method resulted in a stalemated patch with +2/-2: https://gerrit.wikimedia.org/r/#/c/148619/

Aklapper triaged this task as Low priority.Feb 4 2022, 10:51 AM
Aklapper changed the subtype of this task from "Task" to "Feature Request".