User:MerlIwBot/WikiData
This page shows how the bot can add/change langlinks on wikidata.
Scenario
[edit]The bot wants to create an interwikigroup of four pages (all having different/localized titles in this example):
- de:WikiDaten - Article on enwiki
- en:WikiData - Article on dewiki
- commons:Category:WikiData - Category on commons
- incubator:Wp/grc/ΒίκιData - grc test wiki on incubator
Precondition
[edit]- The bot is logged in and sends the required cookie data within each request.
- Always use post request. Only action and format are part of the url.
- All data is send urlencoded, which is not done for human readability at the examples below.
- +\ is used as token in all examples, but a token returned by a previous request is used instead.
Step 1
[edit]Check which wiki can be added to wikidata.
No api request available. incubator-grc and commonswiki not available at the moment.
Step 2
[edit]The bot wants to know if any of these pages are already contained within an item.
- One request for every pages needed
- http://wikidata-test-repo.wikimedia.de/w/api.php?action=wbgetitems&sites=dewiki&titles=WikiDaten&prop=sitelinks
- http://wikidata-test-repo.wikimedia.de/w/api.php?action=wbgetitems&sites=enwiki&titles=WikiData&prop=sitelinks
- read itemid from /api/items/item/@id (attribute id is missing if no connected item exists and attribute missing exists)
Step 3
[edit]Modify WikiData Items
Scenario a
[edit]None of these pages is connected to a item.
- Request Token
- http://wikidata-test-repo.wikimedia.de/w/api.php?action=wbsetitem&gettoken=1
- read token: /api/wbsetitem/@setitemtoken
- Create a new item conating all pages
- http://wikidata-test-repo.wikimedia.de/w/api.php?action=wbsetitem&format=xml&data={"labels":{"de":"WikiDaten","en":"WikiData"},"sitelinks":{"dewiki":"WikiDaten","enwiki":"WikiData"}}&token=+\
Scenario b
[edit]Some of these pages (dewiki) are already connected to one item (id 111) and the rest (enwiki) should be added to this item.
- Request Token
- http://wikidata-test-repo.wikimedia.de/w/api.php?action=wbsetitem&gettoken=1
- read token: /api/wbsetitem/@setitemtoken
- Create a new item conating all pages
- http://wikidata-test-repo.wikimedia.de/w/api.php?action=wbsetitem&format=xml&item=111&data={"labels":{"en":"WikiData"},"sitelinks":{"enwiki":"WikiData"}}&token=+\
Scenario c
[edit]Pages are connected to different items and should be forced to use the same icon (forced regrouping after review by bot operator)
Costs
[edit]This table shows the number of need http requested needed to add/chage an interwikigroup of #pages Pages. For scenario b/c half of the pages are already connected to a wikidata item.
#pages | #api-requests | ||
---|---|---|---|
a | b | c | |
4 | |||
20 | |||
100 | |||
250 |