Shizhao created this task.
Shizhao added a project: Pywikibot.
Restricted Application added subscribers: pywikibot-bugs-list, Aklapper.

TASK DESCRIPTION
  source code:
  
    
    import pywikibot
    site = pywikibot.Site('wikipedia:zh')
    
    #Get wikidata page data
    #Q_title: wikidata Q_ID
    def GetItemdata(site,Q_title):
        repo = site.data_repository()  # this is a DataSite object
        item_data = pywikibot.ItemPage(repo, Q_title)  # This will be 
functionally the same as the other item we defined
        item_data.get()  # you need to call it to access any data.
        #print(item.iterlinks())
        #for l in item.iterlinks():
        #    print(l.title())
        return item_data
    
    ITNpagedata = GetItemdata(site,'Q4026244')
    for i in ITNpagedata.iterlinks():
        print(i)
  
  Input:
  
    <generator object ItemPage.iterlinks at 0x7f27af2955b0>
    [[wikipedia:ace:Seunaleuëk:Accueil actualité]]
    [[wikipedia:af:Sjabloon:Aktueel]]
    [[wikipedia:ak:Template:In the news]]
    ......
    [[wikipedia:yo:Èbúté:Àwọn ìṣẹ̀lẹ̀ ìwòyí/Kókó orí]]
    
    ---------------------------------------------------------------------------
    UnknownSiteError                          Traceback (most recent call last)
    Cell In[15], line 2
          1 print(ITNpagedata.iterlinks())
    ----> 2 for i in ITNpagedata.iterlinks():
          3     print(i)
    
    File 
/srv/paws/lib/python3.10/site-packages/pywikibot/page/_wikibase.py:1065, in 
ItemPage.iterlinks(self, family)
       1063 if family is not None and not isinstance(family, Family):
       1064     family = Family.load(family)
    -> 1065 for sl in self.sitelinks.values():
       1066     if family is None or family == sl.site.family:
       1067         pg = pywikibot.Page(sl)
    
    File /usr/lib/python3.10/_collections_abc.py:930, in 
ValuesView.__iter__(self)
        928 def __iter__(self):
        929     for key in self._mapping:
    --> 930         yield self._mapping[key]
    
    File 
/srv/paws/lib/python3.10/site-packages/pywikibot/page/_collections.py:368, in 
SiteLinkCollection.__getitem__(self, key)
        366     val = pywikibot.page.SiteLink(val, key)
        367 elif isinstance(val, dict):
    --> 368     val = pywikibot.page.SiteLink.fromJSON(val, self.repo)
        369 else:
        370     return val
    
    File /srv/paws/lib/python3.10/site-packages/pywikibot/page/_links.py:745, 
in SiteLink.fromJSON(cls, data, site)
        734 @classmethod
        735 def fromJSON(cls, data: dict, site=None):  # noqa: N802
        736     """
        737     Create a SiteLink object from JSON returned in the API call.
        738 
       (...)
        743     :rtype: pywikibot.page.SiteLink
        744     """
    --> 745     sl = cls(data['title'], data['site'])
        746     repo = site or sl.site.data_repository()
        747     for badge in data.get('badges', []):
    
    File /srv/paws/lib/python3.10/site-packages/pywikibot/page/_links.py:690, 
in SiteLink.__init__(self, title, site, badges)
        688 self._rawtitle = title
        689 if ':' in title:
    --> 690     site, namespace, title = SiteLink._parse_namespace(title, site)
        692 super().__init__(title, namespace, site)
        694 badges = badges or []
    
    File /srv/paws/lib/python3.10/site-packages/pywikibot/page/_links.py:714, 
in SiteLink._parse_namespace(title, site)
        712 site = site or pywikibot.Site()
        713 if not isinstance(site, pywikibot.site.BaseSite):
    --> 714     site = pywikibot.site.APISite.fromDBName(site)
        716 prefix = title[:title.index(':')].lower()  # part of text before :
        717 ns = site.namespaces.lookup_name(prefix)
    
    File /srv/paws/lib/python3.10/site-packages/pywikibot/site/_apisite.py:215, 
in APISite.fromDBName(cls, dbname, site)
        213             if m_site['code'] == 'wiki':
        214                 m_site['code'] = 'wikipedia'
    --> 215             return pywikibot.Site(lang, m_site['code'])
        216 else:  # key == 'specials'
        217     for m_site in val:
    
    File /srv/paws/lib/python3.10/site-packages/pywikibot/__init__.py:253, in 
Site(code, fam, user, interface, url)
        251 key = f'{interface.__name__}:{fam}:{code}:{user}'
        252 if key not in _sites or not isinstance(_sites[key], interface):
    --> 253     _sites[key] = interface(code=code, fam=fam, user=user)
        254     debug(f"Instantiated {interface.__name__} object 
'{_sites[key]}'")
        256     if _sites[key].code != code:
    
    File /srv/paws/lib/python3.10/site-packages/pywikibot/site/_apisite.py:118, 
in APISite.__init__(self, code, fam, user)
        111 def __init__(
        112     self,
        113     code: str,
        114     fam: Union[str, 'pywikibot.family.Family', None] = None,
        115     user: Optional[str] = None
        116 ) -> None:
        117     """Initializer."""
    --> 118     super().__init__(code, fam, user)
        119     self._globaluserinfo: Dict[Union[int, str], Any] = {}
        120     self._interwikimap = _InterwikiMap(self)
    
    File /srv/paws/lib/python3.10/site-packages/pywikibot/site/_basesite.py:89, 
in BaseSite.__init__(self, code, fam, user)
         86     else:
         87         error_msg = ("Language '{}' does not exist in family {}"
         88                      .format(self.__code, self.__family.name))
    ---> 89         raise UnknownSiteError(error_msg)
         91 self._username = normalize_username(user)
         93 self.use_hard_category_redirects = (
         94     self.code in self.family.use_hard_category_redirects)
    
    UnknownSiteError: Language 'lzh' does not exist in family wikipedia

TASK DETAIL
  https://phabricator.wikimedia.org/T346888

EMAIL PREFERENCES
  https://phabricator.wikimedia.org/settings/panel/emailpreferences/

To: Shizhao
Cc: Aklapper, Shizhao, pywikibot-bugs-list, PotsdamLamb, Jyoo1011, 
JohnsonLee01, SHEKH, Dijkstra, Khutuck, Zkhalido, Viztor, Wenyi, Tbscho, MayS, 
Mdupont, JJMC89, Dvorapa, Altostratus, Avicennasis, mys_721tx, Xqt, jayvdb, 
Masti, Alchimista
_______________________________________________
pywikibot-bugs mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to