Page MenuHomePhabricator

iterlinks fails on closed wikis
Closed, DuplicatePublic

Description

testing on a script based on basic.py

def run(self):
     for p in self.generator:
         if not self.treat(p):
             pywikibot.output('NO INTERWIKI')

 def treat(self,page):
     """Load the given page, do some changes, and save it."""
     results = {}
     wd = pywikibot.ItemPage.fromPage(page)
     for i in wd.iterlinks(family='wikipedia'):
         results[i.site] = i.title()
         pywikibot.output('%s:%s' % (i.site, results[i.site]))
     return(len(results.keys())>1)

iterlinks fails on hu.wikinews even as it is properly listed as closed in wikinews_family.py

$ python pwb.py masti/ms-basictestiw.py -page:Poland -lang:en
wikipedia:mai:पोल्यान्ड
wikipedia:fi:Puola
wikipedia:nap:Pulonnia
wikipedia:dsb:Pólska
wikipedia:ceb:Polonya
wikipedia:av:Польша
wikipedia:fa:لهستان
wikipedia:ug:لەھىستان
wikipedia:af:Pole
wikipedia:kv:Польша
wikipedia:kbd:Полшэ
wikipedia:vi:Ba Lan
wikipedia:frp:Pologne
wikipedia:cu:Пол҄ьска
wikipedia:nrm:Polongne
wikipedia:he:פולין
wikipedia:ilo:Polonia
wikipedia:kbp:Pɔlɔɔñɩ
wikipedia:gl:Polonia
wikipedia:pa:ਪੋਲੈਂਡ
wikipedia:pfl:Pole
wikipedia:csb:Pòlskô
wikipedia:bxr:Польшо
wikipedia:qu:Pulunya
wikipedia:lo:ປະເທດໂປໂລຍ
wikipedia:am:ፖላንድ
wikipedia:pms:Polònia
wikipedia:ksh:Pole
wikipedia:ig:Poland
wikipedia:li:Pole
wikipedia:na:Poran
wikipedia:ch:Polaki
wikipedia:su:Polandia
wikipedia:got:𐍀𐌰𐌿𐌻𐌰𐌿𐌽𐌹𐌰
wikipedia:koi:Польска
wikipedia:ps:پولنډ
wikipedia:eml:Pulógna
wikipedia:ext:Poloña
wikipedia:sh:Poljska
wikipedia:ace:Polandia
wikipedia:pl:Polska
wikipedia:krc:Польша
wikipedia:tk:Polşa
wikipedia:hu:Lengyelország
wikipedia:lad:Polonia
wikipedia:fy:Poalen
wikipedia:map-bms:Polandia
wikipedia:nov:Polonia
wikipedia:bn:পোল্যান্ড
wikipedia:km:ប្រទេសប៉ូឡូញ
wikipedia:tg:Лаҳистон
wikipedia:mg:Polonia
wikipedia:gd:A' Phòlainn
wikipedia:nl:Polen
wikipedia:cv:Польша
wikipedia:mrj:Польша
wikipedia:ckb:پۆڵەندا
wikipedia:to:Polani
wikipedia:fj:Polad
wikipedia:sl:Poljska
wikipedia:diq:Polonya
wikipedia:lv:Polija
wikipedia:sr:Пољска
wikipedia:as:প'লেণ্ড
wikipedia:hy:Լեհաստան
wikipedia:mdf:Полень мастор
wikipedia:no:Polen
wikipedia:tpi:Polan
wikipedia:crh:Lehistan
wikipedia:rmy:Polska
wikipedia:ce:Польша
wikipedia:zh-classical:波蘭
wikipedia:ang:Polaland
wikipedia:ku:Polonya
wikipedia:nso:Poland
wikipedia:ky:Польша
wikipedia:mn:Польш
wikipedia:ie:Polonia
wikipedia:roa-rup:Polonia
wikipedia:gan:波蘭
wikipedia:ne:पोल्याण्ड
wikipedia:ms:Poland
wikipedia:pih:Poeland
wikipedia:mhr:Польша
wikipedia:ady:Полшэ
wikipedia:pt:Polónia
wikipedia:dv:ޕޮލެންޑު
wikipedia:lbe:Польша
wikipedia:ik:Poland
wikipedia:pnt:Πολωνία
wikipedia:tw:Poland
wikipedia:ab:Полша
wikipedia:bi:Poland
wikipedia:io:Polonia
wikipedia:pap:Polonia
wikipedia:jv:Polen
wikipedia:ro:Polonia
wikipedia:oc:Polonha
wikipedia:fr:Pologne
wikipedia:hif:Poland
wikipedia:nah:Polonia
wikipedia:haw:Pōlani
wikipedia:simple:Poland
wikipedia:te:పోలాండ్
wikipedia:hak:Pô-làn
wikipedia:be-tarask:Польшча
wikipedia:kn:ಪೋಲೆಂಡ್
wikipedia:pag:Polonya
wikipedia:lez:Польша
wikipedia:mwl:Polónia
wikipedia:fur:Polonie
wikipedia:ak:Poland
wikipedia:yi:פוילן
wikipedia:rm:Pologna
wikipedia:ka:პოლონეთი
wikipedia:lb:Polen
wikipedia:id:Polandia
wikipedia:bcl:Polonya
wikipedia:eu:Polonia
wikipedia:os:Польшæ
wikipedia:udm:Польша
Traceback (most recent call last):
  File "pwb.py", line 263, in <module>
    if not main():
  File "pwb.py", line 256, in main
    run_python_file(filename, [filename] + args, argvu, file_package)
  File "pwb.py", line 121, in run_python_file
    main_mod.__dict__)
  File "./masti/ms-basictestiw.py", line 234, in <module>
    main()
  File "./masti/ms-basictestiw.py", line 227, in main
    bot.run()  # guess what it does
  File "./masti/ms-basictestiw.py", line 141, in run
    if not self.treat(p):
  File "./masti/ms-basictestiw.py", line 148, in treat
    for i in wd.iterlinks(family='wikipedia'):
  File "/home/mst/pw/core/pywikibot/page.py", line 4337, in iterlinks
    if family is None or family == pg.site.family:
  File "/home/mst/pw/core/pywikibot/page.py", line 227, in site
    return self._link.site
  File "/home/mst/pw/core/pywikibot/page.py", line 5587, in site
    self.parse()
  File "/home/mst/pw/core/pywikibot/page.py", line 5478, in parse
    ns = self._site.namespaces.lookup_name(prefix)
  File "/home/mst/pw/core/pywikibot/site.py", line 1018, in namespaces
    self._namespaces = NamespacesDict(self._build_namespaces())
  File "/home/mst/pw/core/pywikibot/site.py", line 2625, in _build_namespaces
    is_mw114 = MediaWikiVersion(self.version()) >= MediaWikiVersion('1.14')
  File "/home/mst/pw/core/pywikibot/site.py", line 2739, in version
    expiry=1).split(' ')[1]
  File "/home/mst/pw/core/pywikibot/site.py", line 1681, in get
    preloaded = self._get_general(key, expiry)
  File "/home/mst/pw/core/pywikibot/site.py", line 1627, in _get_general
    default_info = self._get_siteinfo(props, expiry)
  File "/home/mst/pw/core/pywikibot/site.py", line 1552, in _get_siteinfo
    data = request.submit()
  File "/home/mst/pw/core/pywikibot/data/api.py", line 2350, in submit
    self._data = super(CachedRequest, self).submit()
  File "/home/mst/pw/core/pywikibot/data/api.py", line 1897, in submit
    self.site.is_oauth_token_available()):  # work around T108182
  File "/home/mst/pw/core/pywikibot/site.py", line 2038, in is_oauth_token_available
    auth_token = get_authentication(self.base_url(''))
  File "/home/mst/pw/core/pywikibot/family.py", line 1123, in base_url
    protocol, host = self._hostname(code, protocol)
  File "/home/mst/pw/core/pywikibot/family.py", line 1107, in _hostname
    host = self.ssl_hostname(code)
  File "/home/mst/pw/core/pywikibot/family.py", line 1082, in ssl_hostname
    return self.hostname(code)
  File "/home/mst/pw/core/pywikibot/family.py", line 1078, in hostname
    return self.langs[code]
KeyError: u'hu'
<type 'exceptions.KeyError'>
CRITICAL: Closing network session.

Event Timeline

$ python pwb.py version
Pywikibot: [https] r-pywikibot-core (4fa5b0e, g8760, 2017/11/26, 04:52:51, OUTDATED)
Release version: 3.0-dev
requests version: 2.12.5

cacerts: /etc/ssl/certs/ca-certificates.crt
  certificate test: ok

Python: 2.7.12 (default, Sep 29 2017, 01:47:51)
[GCC 5.4.0]