jenkins-bot submitted this change.

View Change

Approvals: Xqt: Looks good to me, approved jenkins-bot: Verified
[IMPR] Add -sort option to sort archives by (latest) timestamp

Change-Id: Ic80d4512aee5e3342c156bb97ff09fff8c490255
---
M scripts/archivebot.py
1 file changed, 19 insertions(+), 10 deletions(-)

diff --git a/scripts/archivebot.py b/scripts/archivebot.py
index b4f5b1a..c0e2f37 100755
--- a/scripts/archivebot.py
+++ b/scripts/archivebot.py
@@ -104,11 +104,14 @@
-salt:SALT specify salt
-keep Preserve thread order in archive even if threads are
archived later
+ -sort Sort archive by timestamp; should not be used with -keep

.. versionchanged:: 7.6
Localized variables for "archive" template parameter are supported.
`User:MiszaBot/config` is the default template. `-keep` option was
added.
+.. versionchanged:: 7.7
+ `-sort` option was added.
"""
#
# (C) Pywikibot team, 2006-2022
@@ -460,7 +463,7 @@
algo = 'none'

def __init__(self, page, template, salt: str, force: bool = False,
- keep=False) -> None:
+ keep: bool = False, sort: bool = False) -> None:
"""Initializer.

:param page: a page object to be archived
@@ -478,6 +481,7 @@
])
self.salt = salt
self.force = force
+ self.sort = sort
self.site = page.site
self.tpl = template
self.timestripper = TimeStripper(site=self.site)
@@ -769,7 +773,7 @@
comment = i18n.twtranslate(self.site.code,
'archivebot-archive-summary',
self.comment_params)
- archive.update(comment)
+ archive.update(comment, sort_threads=self.sort)

# Save the page itself
self.page.header = rx.sub(self.attr2text(), self.page.header)
@@ -797,31 +801,33 @@
self.page.update(comment)


-def process_page(pg, tmpl, salt: str, force: bool, keep: bool) -> bool:
+def process_page(page, *args: Any) -> bool:
"""Call PageArchiver for a single page.

:return: Return True to continue with the next page, False to break
the loop.

.. versionadded:: 7.6
+ .. versionchanged:: 7.7
+ pass an unspecified number of arguments to the bot using ``*args``
"""
- if not pg.exists():
- pywikibot.info('{} does not exist, skipping...'.format(pg))
+ if not page.exists():
+ pywikibot.info('{} does not exist, skipping...'.format(page))
return True

- pywikibot.info('\n\n>>> <<lightpurple>>{}<<default>> <<<'.format(pg))
+ pywikibot.info('\n\n>>> <<lightpurple>>{}<<default>> <<<'.format(page))
# Catching exceptions, so that errors in one page do not bail out
# the entire process
try:
- archiver = PageArchiver(pg, tmpl, salt, force, keep)
+ archiver = PageArchiver(page, *args)
archiver.run()
except ArchiveBotSiteConfigError as e:
# no stack trace for errors originated by pages on-site
pywikibot.error('Missing or malformed template in page {}: {}'
- .format(pg, e))
+ .format(page, e))
except Exception:
pywikibot.exception('Error occurred while processing page {}'
- .format(pg))
+ .format(page))
except KeyboardInterrupt:
pywikibot.info('\nUser quit bot run...')
return False
@@ -843,6 +849,7 @@
force = False
calc = None
keep = False
+ sort = False
templates = []

local_args = pywikibot.handle_args(args)
@@ -874,6 +881,8 @@
namespace = value
elif option == 'keep':
keep = True
+ elif option == 'sort':
+ sort = True

site = pywikibot.Site()

@@ -911,7 +920,7 @@
namespaces=ns,
content=True)
for pg in gen:
- if not process_page(pg, tmpl, salt, force, keep):
+ if not process_page(pg, tmpl, salt, force, keep, sort):
return



To view, visit change 820708. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Change-Id: Ic80d4512aee5e3342c156bb97ff09fff8c490255
Gerrit-Change-Number: 820708
Gerrit-PatchSet: 3
Gerrit-Owner: Xqt <info@gno.de>
Gerrit-Reviewer: D3r1ck01 <xsavitar.wiki@aol.com>
Gerrit-Reviewer: Whym <whym@whym.org>
Gerrit-Reviewer: Xqt <info@gno.de>
Gerrit-Reviewer: jenkins-bot
Gerrit-MessageType: merged