Xqt has submitted this change. (
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1093381?usp=email )
Change subject: [IMPR] use Site.search() in get_item_with_prop_value
......................................................................
[IMPR] use Site.search() in get_item_with_prop_value
Change-Id: Ia1c0c8ced9926ae48ca6fd7c6704150492035d5f
---
M scripts/create_isbn_edition.py
1 file changed, 12 insertions(+), 26 deletions(-)
Approvals:
Xqt: Verified; Looks good to me, approved
diff --git a/scripts/create_isbn_edition.py b/scripts/create_isbn_edition.py
index 274627d..a802484 100755
--- a/scripts/create_isbn_edition.py
+++ b/scripts/create_isbn_edition.py
@@ -377,7 +377,6 @@
import pywikibot # API interface to Wikidata
from pywikibot.config import verbose_output as verbose
-from pywikibot.data import api
from pywikibot.tools import first_upper
@@ -813,7 +812,8 @@
def get_item_with_prop_value(prop: str, propval: str) -> set[str]:
"""Get list of items that have a property/value statement.
- .. seealso:: :api:`Search`
+ .. seealso:: :meth:`Site.search()
+ <pywikibot.site._generators.GeneratorsMixin.search>`
:param prop: Property ID
:param propval: Property value
@@ -823,33 +823,19 @@
pywikibot.debug(f'Search statement: {srsearch}')
item_name_canon = unidecode(propval).casefold()
item_list = set()
- # TODO: use APISite.search instead?
- params = {
- 'action': 'query', # Statement search
- 'list': 'search',
- 'srsearch': srsearch,
- 'srwhat': 'text',
- 'format': 'json',
- 'srlimit': 50, # Should be reasonable value
- }
- request = api.Request(site=repo, parameters=params)
- result = request.submit()
- #
https://www.wikidata.org/w/api.php?action=query&list=search&srwhat=text&srsearch=P212:978-94-028-1317-3
- # https://www.wikidata.org/w/index.php?search=P212:978-94-028-1317-3
- if 'query' in result and 'search' in result['query']:
- # Loop though items
- for row in result['query']['search']:
- qnumber = row['title']
- item = get_item_page(qnumber)
+ # Loop though items
+ for row in repo.search(srsearch, where='text', total=50):
+ qnumber = row['title']
+ item = get_item_page(qnumber)
- if prop not in item.claims:
- continue
+ if prop not in item.claims:
+ continue
- for seq in item.claims[prop]:
- if unidecode(seq.getTarget()).casefold() == item_name_canon:
- item_list.add(item) # Found match
- break
+ for seq in item.claims[prop]:
+ if unidecode(seq.getTarget()).casefold() == item_name_canon:
+ item_list.add(item) # Found match
+ break
pywikibot.log(item_list)
return item_list
--
To view, visit
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1093381?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.wikimedia.org/r/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Change-Id: Ia1c0c8ced9926ae48ca6fd7c6704150492035d5f
Gerrit-Change-Number: 1093381
Gerrit-PatchSet: 2
Gerrit-Owner: Xqt <[email protected]>
Gerrit-Reviewer: Geertivp <[email protected]>
Gerrit-Reviewer: Xqt <[email protected]>
Gerrit-Reviewer: jenkins-bot
_______________________________________________
Pywikibot-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]