Hi all,
is there a way to set both SDC labels and SDC claims in one single wbeditentity API call? I tried to pass a dictionary with the following structure as data payload:
{'claims': [{...}, {...}, {...}], 'labels': {'de': 'german...', 'en': 'english ...'}}
but this triggerend an API error:
pywikibot.exceptions.APIError: not-recognized-array: An array was expected, but not recognized.
Based on this error message, I assumed that the labels should get passed as list, too:
{'labels': [{'language': 'de', 'value': 'de...'}, {'language': 'en', 'value': 'en...'}], 'claims': [{...}, {...}, {...}]}
but that gave me a different error:
pywikibot.exceptions.APIError: param-illegal: You need to provide either an entity "id", or a "site" and "page" combination, but not both.
Am I doing something wrong? Or is setting both SDC labels and SDC claims not supported?
Thanks for any help!
Florian
Hi, The error doesn't seem to be related to combining claims and labels or the structure of payload for the edit. I think it's the error on how you say what item needs to be edited. You can set either id (Q12345) or both page and site (enwiki, Foo) but not both.
If you still have trouble, please drop the segment of the code somewhere so I can take a look and help.
HTH
Am Sa., 12. Okt. 2024 um 19:48 Uhr schrieb tohuuu th@tohuuu.de:
Hi all,
is there a way to set both SDC labels and SDC claims in one single wbeditentity API call? I tried to pass a dictionary with the following structure as data payload:
{'claims': [{...}, {...}, {...}], 'labels': {'de': 'german...', 'en': 'english ...'}}
but this triggerend an API error:
pywikibot.exceptions.APIError: not-recognized-array: An array was expected, but not recognized.
Based on this error message, I assumed that the labels should get passed as list, too:
{'labels': [{'language': 'de', 'value': 'de...'}, {'language': 'en', 'value': 'en...'}], 'claims': [{...}, {...}, {...}]}
but that gave me a different error:
pywikibot.exceptions.APIError: param-illegal: You need to provide either an entity "id", or a "site" and "page" combination, but not both.
Am I doing something wrong? Or is setting both SDC labels and SDC claims not supported?
Thanks for any help!
Florian
pywikibot mailing list -- pywikibot@lists.wikimedia.org Public archives at https://lists.wikimedia.org/hyperkitty/list/pywikibot@lists.wikimedia.org/me... To unsubscribe send an email to pywikibot-leave@lists.wikimedia.org
Hi Florian and Amir,
Yes it's possible, see https://commons.wikimedia.org/w/index.php?diff=945325248&oldid=945324579 . I'm currently using https://doc.wikimedia.org/pywikibot/stable/api_ref/pywikibot.site.html#pywik... instead of https://doc.wikimedia.org/pywikibot/stable/api_ref/pywikibot.page.html#pywik... because of https://phabricator.wikimedia.org/T376955 . See code as https://github.com/multichill/toollabs/blob/master/bot/commons/geograph_desc... for example.
Labels is a dict, example what the API expects:
data['labels'] = {'en' : { 'language' : 'en', 'value' : 'some label', } }
editLabels is a wrapper around editEntity. editLabels({'en','some label'}) works because the normalization function will change it into the right API format, see https://doc.wikimedia.org/pywikibot/stable/_modules/pywikibot/page/_collecti... .
Maarten
On 13-10-2024 23:30, Amir Sarabadani wrote:
Hi, The error doesn't seem to be related to combining claims and labels or the structure of payload for the edit. I think it's the error on how you say what item needs to be edited. You can set either id (Q12345) or both page and site (enwiki, Foo) but not both.
If you still have trouble, please drop the segment of the code somewhere so I can take a look and help.
HTH
Am Sa., 12. Okt. 2024 um 19:48 Uhr schrieb tohuuu th@tohuuu.de:
Hi all, is there a way to set both SDC labels and SDC claims in one single wbeditentity API call? I tried to pass a dictionary with the following structure as data payload: {'claims': [{...}, {...}, {...}], 'labels': {'de': 'german...', 'en': 'english ...'}} but this triggerend an API error: pywikibot.exceptions.APIError: not-recognized-array: An array was expected, but not recognized. Based on this error message, I assumed that the labels should get passed as list, too: {'labels': [{'language': 'de', 'value': 'de...'}, {'language': 'en', 'value': 'en...'}], 'claims': [{...}, {...}, {...}]} but that gave me a different error: pywikibot.exceptions.APIError: param-illegal: You need to provide either an entity "id", or a "site" and "page" combination, but not both. Am I doing something wrong? Or is setting both SDC labels and SDC claims not supported? Thanks for any help! Florian _______________________________________________ pywikibot mailing list -- pywikibot@lists.wikimedia.org Public archives at https://lists.wikimedia.org/hyperkitty/list/pywikibot@lists.wikimedia.org/message/MIPENXF2M34B3YSXVX25JARZHSLOAYVV/ To unsubscribe send an email to pywikibot-leave@lists.wikimedia.org
-- Amir (he/him)
pywikibot mailing list --pywikibot@lists.wikimedia.org Public archives athttps://lists.wikimedia.org/hyperkitty/list/pywikibot@lists.wikimedia.org/me... To unsubscribe send an email topywikibot-leave@lists.wikimedia.org