NAME
Wikibase::API - Wikibase API class.
SYNOPSIS
use Wikibase::API;
my $obj = Wikibase::API->new(%params);
my $res = $obj->create_item($item_obj, $summary);
my $item_obj = $obj->get_item($id);
my $struct_hr = $obj->get_item_raw($id);
METHODS
new
my $obj = Wikibase::API->new(%params);
Constructor.
login_name
Login name.
Default value is undef.
login_password
Login password.
Default value is undef.
mediawiki_api
MediaWiki::API object.
Default value is MediaWiki::API->new.
mediawiki_site
MediaWiki site.
Default value is 'test.wikidata.org'.
Returns instance of object.
create_item
my $res = $obj->create_item($item_obj, $summary);
Create item in system. $item_obj
is Wikibase::Datatype::Item instance. $summary
is text comment of change.
Returns reference to hash like this:
{
'entity' => {
...
},
'success' => __STATUS_CODE__,
}
get_item
my $item_obj = $obj->get_item($id);
Get item from system.
Returns Wikibase::Datatype::Item instance.
get_item_raw
my $struct_hr = $obj->get_item_raw($id);
Get item raw structure as Perl hash.
Returns reference to hash.
ERRORS
new():
From Class::Utils::set_params():
Unknown parameter '%s'.
Cannot login.
Error code: %s
Error details: %s
Cannot get token.
Error code: %s
Error details: %s
create_item():
Bad data. Not supported object.
EXAMPLE1
use strict;
use warnings;
use Data::Printer;
use Wikibase::API;
use Wikibase::Datatype::Item;
# API object.
my $api = Wikibase::API->new;
# Wikibase::Datatype::Item blank object.
my $item_obj = Wikibase::Datatype::Item->new;
# Create item.
my $res = $api->create_item($item_obj);
# Dump response structure.
p $res;
# Output like:
# \ {
# entity {
# aliases {},
# claims {},
# descriptions {},
# id "Q213698",
# labels {},
# lastrevid 535146,
# sitelinks {},
# type "item"
# },
# success 1
# }
EXAMPLE2
use strict;
use warnings;
use Data::Printer;
use Wikibase::API;
if (@ARGV < 1) {
print STDERR "Usage: $0 id\n";
exit 1;
}
my $id = $ARGV[0];
# API object.
my $api = Wikibase::API->new;
# Get item.
my $item_obj = $api->get_item($id);
# Dump response structure.
p $item_obj;
# Output for Q213698 argument like:
# Wikibase::Datatype::Item {
# Parents Mo::Object
# public methods (9) : BUILD, can (UNIVERSAL), DOES (UNIVERSAL), err (Error::Pure), check_array_object (Mo::utils), check_number (Mo::utils), check_number_of_items (Mo::utils), isa (UNIVERSAL), VERSION (UNIVERSAL)
# private methods (1) : __ANON__ (Mo::is)
# internals: {
# aliases [],
# descriptions [],
# id "Q213698",
# labels [],
# lastrevid 535146,
# modified "2020-12-11T22:26:06Z",
# ns 0,
# page_id 304259,
# sitelinks [],
# statements [],
# title "Q213698"
# }
# }
EXAMPLE3
use strict;
use warnings;
use Data::Printer;
use Wikibase::API;
if (@ARGV < 1) {
print STDERR "Usage: $0 id\n";
exit 1;
}
my $id = $ARGV[0];
# API object.
my $api = Wikibase::API->new;
# Get item.
my $struct_hr = $api->get_item_raw($id);
# Dump response structure.
p $struct_hr;
# Output for Q213698 argument like:
# {
# aliases {},
# claims {
# P623 [
# [0] {
# id "Q213698$89A385A8-2BE1-46CA-85FF-E0B53DEBC0F0",
# mainsnak {
# datatype "string",
# datavalue {
# type "string",
# value "101 Great Marques /Andrew Whyte." (dualvar: 101)
# },
# hash "db60f4054e0048355b75a07cd84f83398a84f515",
# property "P623",
# snaktype "value"
# },
# qualifiers {
# P446 [
# [0] {
# datatype "string",
# datavalue {
# type "string",
# value "a[1] c[1]"
# },
# hash "831cae40e488a0e8f4b06111ab3f1e1f8c42e79a" (dualvar: 831),
# property "P446",
# snaktype "value"
# }
# ],
# P624 [
# [0] {
# datatype "string",
# datavalue {
# type "string",
# value 1
# },
# hash "32eaf6cc04d6387b0925aea349bba4e35d2bc186" (dualvar: 32),
# property "P624",
# snaktype "value"
# }
# ],
# P625 [
# [0] {
# datatype "string",
# datavalue {
# type "string",
# value 0
# },
# hash "7b763330efc9d8269854747714d91ae0d0bc87a0" (dualvar: 7),
# property "P625",
# snaktype "value"
# }
# ],
# P626 [
# [0] {
# datatype "string",
# datavalue {
# type "string",
# value "101 Great Marques /" (dualvar: 101)
# },
# hash "0d2c3b012d13b9de1477bae831bd6d61a46e8c64",
# property "P626",
# snaktype "value"
# }
# ],
# P628 [
# [0] {
# datatype "string",
# datavalue {
# type "string",
# value "Andrew Whyte."
# },
# hash "a2c9c46ce7b17b13b197179fb0e5238965066211",
# property "P628",
# snaktype "value"
# }
# ]
# },
# qualifiers-order [
# [0] "P624",
# [1] "P626",
# [2] "P628",
# [3] "P446",
# [4] "P625"
# ],
# rank "normal",
# references [
# [0] {
# hash "98b2538ea26ec4da8e4aab27e74f1d832490a846" (dualvar: 98),
# snaks {
# P9 [
# [0] {
# datatype "wikibase-item",
# datavalue {
# type "wikibase-entityid",
# value {
# entity-type "item",
# id "Q1886",
# numeric-id 1886
# }
# },
# hash "271c3f13dd08a66f38eb2571d2f338e8b4b8074a" (dualvar: 271),
# property "P9",
# snaktype "value"
# }
# ],
# P21 [
# [0] {
# datatype "url",
# datavalue {
# type "string",
# value "http://lccn.loc.gov/87103973/marcxml"
# },
# hash "1e253d1dcb9867353bc71fc7c661cdc777e14885" (dualvar: 1e+253),
# property "P21",
# snaktype "value"
# }
# ]
# },
# snaks-order [
# [0] "P9",
# [1] "P21"
# ]
# }
# ],
# type "statement"
# }
# ]
# },
# descriptions {
# en {
# language "en",
# value 87103973
# },
# it {
# language "it",
# value 87103973
# }
# },
# id "Q213698",
# labels {
# en {
# language "en",
# value "101 Great Marques /" (dualvar: 101)
# },
# it {
# language "it",
# value "101 Great Marques /" (dualvar: 101)
# }
# },
# lastrevid 538778,
# modified "2021-03-20T14:35:50Z" (dualvar: 2021),
# ns 0,
# pageid 304259,
# sitelinks {},
# title "Q213698",
# type "item"
# }
DEPENDENCIES
Class::Utils, Error::Pure, JSON::XS, MediaWiki::API, Unicode::UTF8, Wikibase::Datatype::Item.
SEE ALSO
- Wikibase::Datatype
-
Wikibase datatypes.
- Wikibase::Datatype::Struct
-
Wikibase structure serialization.
REPOSITORY
https://github.com/michal-josef-spacek/Wikibase-API
AUTHOR
Michal Josef Špaček mailto:skim@cpan.org
LICENSE AND COPYRIGHT
© 2020-2024 Michal Josef Špaček
BSD 2-Clause License
VERSION
0.07