From Code to Community: Sponsoring The Perl and Raku Conference 2025 Learn more

NAME

Wikibase::API - Wikibase API class.

SYNOPSIS

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;
# 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;
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;
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",
# },
# 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

http://skim.cz

LICENSE AND COPYRIGHT

© 2020-2024 Michal Josef Špaček

BSD 2-Clause License

VERSION

0.07