Matěj Suchánek has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/364163 )
Change subject: [WIP] Merge items in interwikidata.py
......................................................................
[WIP] Merge items in interwikidata.py
Bug: T146255
Change-Id: Ibd7434bc36bc8e8724a09ff174ae421f12a31942
---
M scripts/interwikidata.py
1 file changed, 25 insertions(+), 5 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/pywikibot/core
refs/changes/63/364163/1
diff --git a/scripts/interwikidata.py b/scripts/interwikidata.py
index b549518..8a88d41 100644
--- a/scripts/interwikidata.py
+++ b/scripts/interwikidata.py
@@ -16,7 +16,9 @@
-clean Clean pages.
--create Create items only.
+-create Create items.
+
+-merge Merge items.
-summary: Use your own edit summary for cleaning the page.
"""
@@ -57,6 +59,7 @@
self.availableOptions.update({
'clean': False,
'create': False,
+ 'merge': False,
'summary': None,
'ignore_ns': False, # used by interwikidata_tests only
})
@@ -93,9 +96,12 @@
item = self.try_to_add()
if self.getOption('create') and item is None:
item = self.create_item()
+ else:
+ if self.getOption('merge'):
+ item = self.try_to_merge(item)
- self.current_item = item
if item and self.getOption('clean'):
+ self.current_item = item
self.clean_page()
def create_item(self):
@@ -142,7 +148,7 @@
if not self.iwlangs:
return
dbnames = [iw_site.dbName() for iw_site in self.iwlangs]
- if set(dbnames) < set(self.current_item.sitelinks.keys()):
+ if set(dbnames) - set(self.current_item.sitelinks.keys()):
if not self.handle_complicated():
warning('Interwiki conflict in %s, skipping...' %
self.current_page.title(asLink=True))
@@ -152,8 +158,8 @@
self.current_page.text, site=self.current_page.site)
self.put_current(new_text, summary=self.getOption('summary'))
- def try_to_add(self):
- """Add current page in repo."""
+ def get_items(self):
+ """Return all items of pages linked through the interwiki."""
wd_data = set()
for iw_page in self.iwlangs.values():
try:
@@ -163,6 +169,11 @@
warning('Interwiki %s does not exist, skipping...' %
iw_page.title(asLink=True))
continue
+ return wd_data
+
+ def try_to_add(self):
+ """Add current page in repo."""
+ wd_data = self.get_items()
if not wd_data:
# will create a new item with interwiki
return None
@@ -179,6 +190,15 @@
item.setSitelink(self.current_page)
return item
+ def try_to_merge(self, item):
+ """Merge two items."""
+ wd_data = self.get_items()
+ if len(wd_data) > 1:
+ warning('Interwiki conflict in %s, skipping...' %
+ self.current_page.title(asLink=True))
+ return False
+ target_item = list(wd_data).pop()
+
def main(*args):
"""
--
To view, visit https://gerrit.wikimedia.org/r/364163
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ibd7434bc36bc8e8724a09ff174ae421f12a31942
Gerrit-PatchSet: 1
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: Matěj Suchánek <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits