I have the WikibaseLocalMedia extension loaded onto my local Wikidata instance. I have a couple of files loaded onto it. I am able to claim these files over the web interface to items through a property of datatype "Media file".
But I am unable to create the claim programmatically. When i try doing the following
site = pwb.Site('localwiki:en')
#site.login()
token = pwb.data.api.Request(site=site, parameters={'action': 'query', 'meta': 'tokens'}).submit()
csrf_token = token['query']['tokens']['csrftoken']
result = pwb.data.api.Request(site=site, parameters={'action': 'wbcreateclaim', 'token': csrf_token,
'entity': 'P1','property': 'P50', 'snaktype': 'value',
'datatype': 'localMedia', 'type': 'statement',
'value': {'value': 'Neo.jpg', 'type': 'localMedia'}}).submit()
I get the following error
APIError: invalid-snak: Invalid snak data.
[param: action=wbcreateclaim&entity=P1&property=P50&snaktype=value&datatype=localMedia&type=statement&value=value%7Ctype&assert=user&maxlag=1&format=json&token=6caed2ab16ab837896c5a17b01d6fee7652fb29e%2B%5C;
messages: [{'name': 'wikibase-api-invalid-snak', 'parameters': [], 'html': {'*': 'Invalid snak data.'}}];
When i create the claim over the web interface, the json data of the item contains the claim as the following
'claims': <class 'pywikibot.page._collections.ClaimCollection'>(
{
'P50': [Claim.fromJSON(DataSite("en", "localwiki"),
{'mainsnak': {'snaktype': 'value',
'property': 'P50',
'datatype': 'localMedia',
'datavalue': {'value': 'Jpg3.jpg', 'type': 'localMedia'}
},
'type': 'statement',
'id': 'P1$ceabb6c6-4ba1-f31b-d2e1-b18cdb78050e',
'rank': 'normal'}),
Claim(DataSite("en", "localwiki"), 'P50'),
Claim(DataSite("en", "localwiki"), 'P50')]
}
)
Is there an appropriate syntax to claim an image programmatically to an item?