概要

wikibaseのapiをpythonクライアントから使用する機会がありましたので、その備忘録です。

以下のライプラリを使用しました。

https://wikibase-api.readthedocs.io/en/latest/index.html

インストール

以下でインストールします。

!pipinstallwikibase-api

Read

今回は、以下のwikibaseインスタンスに対して処理を行います。

https://nakamura196.wikibase.cloud/

fawrprpbroi=im_=nuwtwrWb(ili.rkke)i=inbbta"aishstetey_t(.apagpspei:it/_(i/u"mnrQpal1ok="raa)tmpuiWr_iauk1ri9lb6)a.sweikibase.cloud/w/api.php"

上記により、Q1に関する情報を取得することができました。

Create

認証情報の取得

アイテムの作成などを行う際には、以下のどちらかの方法で認証を行う必要がありました。

  • Authentication using OAuth
  • Authentication with a user account

後者はBot passwordsを作成する方法で、以下の記事でも作成方法を紹介しています。

今回は前者の方法を試します。

「Special pages」の「OAuth consumer registration」を選択します。

「Request a token for a new OAuth 1.0a consumer.」と「Request a token for a new OAuth 2.0 client.」の2つの作成方法がありますが、前者を選択します。

項目を埋めていきます。

今回はテストのため、すべての項目にチェックを入れました。

結果、以下のようなページが表示され、認証情報を取得できます。

実行

.envファイルを作成します。

ccaaooccnnccsseeuussmmssee__rrts__oekskceeerycne=r=txez=xtzax=zayayy

load_dotenvを使って認証情報をロードして、設定します。

ffialo}wrrmpoaboopiaummo_dt=ru_h""""wdtrd_ccaaWiolocoocciktotrnncckies=eesseeibnnduussbav"vemmssash(nee__seitotrrtse_mtvi__oe(appeakskcaposrleeerpir:rsycneit/i"r"t_i/d=:e:"umlnet:rpoa={o"oloakTs:so=rdar..sat_mugog.pdueesegiWor)t.te_itaegetuke1nenerin9vtvnlbv6(e(v,a."n"(swcva"oeio(caakn"ccuiscectbuosehamnss_ses_scerut_r._moseckekedlereceoy_nrnu"s"etd)e)ti/,c,"awr)l/e,sat=p"oi)a.,upthhp_"credentials)

以下を実行することで、空のアイテムを作成できます。

r=wb.entity.add("item")

例えば、以下のような結果が得られます。

{''e'''''''snildacslutdaelliaci'bsiatsct:ecaieteylrsmlrs''siesies:Q'ps'nv'4:t':ki:{9i:sd''{o{''1t,}n{}::}y,s},p',{1e:}2',8:{}},',item',

アイテムの編集等については、別の記事にまとめたいと思います。

削除

削除する際には、Item:Property:を頭につける必要がありました。

wb.entity.remove("Item:Q49")

以下のような結果が得られ、ページが削除されました。

{''d''werlaleoreagntsiieodn'n'g:':s:'{1:''0tc0{io}'tn}mltaeei'nn:t':'wIa{ts'e:*m':":Q"4,'9U'an,nrdectohgeniozneldypcaornatmreitbeurt:orsuwmamsar"y[.['S}p}e,cial:Contributions/Nakamura|Nakamura]]"([[Usertalk:Nakamura|talk]])',

検索

以下のようなクエリを発行してみます。

wb.entity.search("japan","en")

以下のような結果が得られました。

{}"}"}"]"w"},s",s{},sam"ese""""}""""""}ura*aeaitpd"}"},rucldm"""cni"rardiail"",d""eroaeatltcin:crc"tgsavlevlplnbstyaeen"hch:lepbaasaao"ceccpnxsg:"ih"eilelnclns:elrhegtssUn":""dalugrugip"i""u"""{nf:Q:"y"euieut"t:p::a:::ro[4:":"ap"aohutge""3"::gt:grtr"i{"e"1{c:j"I8{eieytiJol"Joa,t4{""o"""p"ana:ag{pe,J:ni::s:p"bpnama"s:a:e"ain:p":l""/"nlenz"Qaeaelh"""n"e4nn{nnnt,i,"d3""d"cats,",akplp,clasaao"m:nru,u/danr/mtancer1aoty9kue6anri.mt:nwuriryoEkafai1ifsb9nsta6es.EtAewa.s.is"icktali"obA,uasdsi/eaw."ic,kliuIdt/eemn:tQi4t3y"/,Q43",

まとめ

wikibaseのapiをpythonクライアントから試してみました。wikibaseと外部システムをAPIを介して接続することで、色々と便利に利用することができそうでした。

他の方の参考になりましたら幸いです。