jenkins-bot has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/core/+/669452 )
Change subject: [IMPR] Improvements for reflinks.py ......................................................................
[IMPR] Improvements for reflinks.py
- rename RefLink.refname to name - rename RefLink.linkComment to comment - use str.format for refTitle, refLink and refDead - shorten the loop to find the ref.tite in getPDFTitle - use textwrap to shorten the ref.title - early return if no changes were done (and suppress this message)
Change-Id: I62f6c39d934f97de5d8e56841dbd2aaca9010c30 --- M scripts/reflinks.py 1 file changed, 16 insertions(+), 14 deletions(-)
Approvals: Xqt: Looks good to me, approved jenkins-bot: Verified
diff --git a/scripts/reflinks.py b/scripts/reflinks.py index 2514ec0..7226f72 100755 --- a/scripts/reflinks.py +++ b/scripts/reflinks.py @@ -48,6 +48,7 @@ import tempfile
from functools import partial +from textwrap import shorten from urllib.error import URLError
from requests import codes @@ -195,32 +196,31 @@
def __init__(self, link, name, site=None): """Initializer.""" - self.refname = name + self.name = name self.link = link self.site = site or pywikibot.Site() - self.linkComment = i18n.twtranslate(self.site, 'reflinks-comment') + self.comment = i18n.twtranslate(self.site, 'reflinks-comment') self.url = re.sub('#.*', '', self.link) self.title = None
def refTitle(self): """Return the <ref> with its new title.""" - return '<ref%s>[%s %s<!-- %s -->]</ref>' % (self.refname, self.link, - self.title, - self.linkComment) + return '<ref{r.name}>[{r.link} {r.title}<!-- {r.comment} -->]</ref>' \ + .format(r=self)
def refLink(self): """No title has been found, return the unbracketed link.""" - return '<ref%s>%s</ref>' % (self.refname, self.link) + return '<ref{r.name}>{r.link}</ref>'.format(r=self)
def refDead(self): """Dead link, tag it with a {{dead link}}.""" tag = i18n.translate(self.site, deadLinkTag) if not tag: dead_link = self.refLink() - elif '%s' in tag: - dead_link = '<ref%s>%s</ref>' % (self.refname, tag % self.link) else: - dead_link = '<ref%s>%s</ref>' % (self.refname, tag) + if '%s' in tag: + tag %= self.link + dead_link = '<ref{}>{}</ref>'.format(self.name, tag) return dead_link
def transform(self, ispdf=False): @@ -477,10 +477,10 @@ shell=False).communicate()[0] for aline in pdfinfo_out.splitlines(): if aline.lower().startswith('title'): - ref.title = aline.split(None)[1:] - ref.title = ' '.join(ref.title) - if ref.title != '': + ref.title = ' '.join(aline.split()[1:]) + if ref.title: pywikibot.output('title: ' + ref.title) + break pywikibot.output('PDF done.') except ValueError: pywikibot.output('pdfinfo value error.') @@ -673,8 +673,7 @@ continue
# Truncate long titles. 175 is arbitrary - if len(ref.title) > 175: - ref.title = ref.title[:175] + '...' + ref.title = shorten(ref.title, width=178, placeholder='...')
repl = ref.refTitle() new_text = new_text.replace(match.group(), repl) @@ -687,6 +686,9 @@ new_text = self.deduplicator.process(new_text) old_text = page.text
+ if old_text == page.text: + return + self.userPut(page, old_text, new_text, summary=self.msg, ignore_save_related_errors=True, ignore_server_errors=True)
pywikibot-commits@lists.wikimedia.org