User:Nurni/wikidata useful.js
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
var wd_import_commons = {
Q_ANONYOUS_AUTH : "4233718",
Q_MAGAZYN : "18123400",
Q_OBRAZ : "3305213",
Q_OKOLO : "5727902",
Q_SANDBOX : "4115189",
Q_WIKICOMMONS : "565",
P_IMPORTED_FROM : "143",
P_INSPIRED_BY : "1877",
P_CIRCLE : "1776",
P_AUTHOR : "170",
P_ATTRIBUTED_TO : "1773",
P_FOLLOWER : "1775",
P_GLEBOKOSC : "2610",
P_CREATE_DATE : "571",
P_ILUSTRACJA : "18",
P_JEST_TO : "31",
P_KOLEKCJA : "195",
P_MIEJSCE : "276",
P_NAJWCZESNIEJ : "1319",
P_NAJPOZNIEJ : "1326",
P_NR_EWID : "217",
P_STATUS_W_ZRODLE : "1480",
P_SZEROKOSC : "2049",
P_URL : "973",
P_WYSOKOSC : "2048",
materialTab : [
// jest to
{name: 'alabaster', p: 31, q: 860861},
{name: 'alabastrze', p: 31, q: 860861},
{name: 'akwarela', p: 31, q: 18761202},
{name: 'akwaforta', p: 31, q: 18218093},
{name: 'atrament', p: 31, q: 93184},
{name: 'brąz', p: 31, q: 860861},
{name: 'copperplate', p: 31, q: 18887969},
{name: 'drewno', p: 31, q: 860861},
{name: 'drzeworyt', p: 31, q: 18219090},
{name: 'grafit', p: 31, q: 93184},
{name: 'granit', p: 31, q: 860861},
{name: 'litografia', p: 31, q: 15123870},
{name: 'marmur', p: 31, q: 860861},
{name: 'mosiądz', p: 31, q: 860861},
{name: 'odbitka albuminowa', p: 31, q: 125191},
{name: 'pastel', p: 31, q: 12043905},
{name: 'pergaminie', p: 31, q: 8362},
{name: 'piaskowiec', p: 31, q: 860861},
{name: 'polichromia', p: 31, q: 26997384},
{name: 'polyptychs', p: 31, q: 1278452},
{name: 'srebro', p: 31, q: 860861},
{name: 'steatyt', p: 31, q: 860861},
{name: 'terakota', p: 31, q: 860861},
{name: 'tusz', p: 31, q: 93184},
{name: 'tynk', p: 31, q: 860861},
// materiał
{name: 'akwarela', p: 186, q: 22915256},
{name: 'atrament', p: 186, q: 127418},
{name: 'bistre', p: 186, q: 774061},
{name: 'gwasz', p: 186, q: 204330},
{name: 'kreda', p: 186, q: 147690},
{name: 'olej', p: 186, q: 296955},
{name: 'oil', p: 186, q: 296955},
{name: 'pastel', p: 186, q: 189085},
{name: 'quill', p: 186, q: 4063215},
{name: 'rysunek ołówkiem', p: 186, q: 14674},
{name: 'rysunek piórem', p: 186, q: 4063215},
{name: 'sangwina', p: 186, q: 901944},
{name: 'sepia', p: 186, q: 927860},
{name: 'tempera', p: 186, q: 175166},
{name: 'tusz', p: 186, q: 12981547},
{name: 'węgiel drzewny', p: 186, q: 1424515},
{name: 'grafit', p: 186, q: 5309},
{name: 'złoto', p: 186, q: 897},
{name: 'gilt', p: 186, q: 929186},
{name: 'złoto płatkowe', p: 186, q: 929186},
{name: 'płatki złota', p: 186, q: 929186},
{name: 'marmur', p: 186, q: 40861},
{name: 'steatyt', p: 186, q: 707896},
{name: 'piaskowcu', p: 186, q: 13085},
{name: 'piaskowiec', p: 186, q: 13085},
{name: 'wapieniu', p: 186, q: 23757},
{name: 'srebro', p: 186, q: 1090},
{name: 'mosiądz', p: 186, q: 39782},
{name: 'alabaster', p: 186, q: 143447},
{name: 'alabastrze', p: 186, q: 143447},
{name: 'kość słoniowa', p: 186, q: 82001},
{name: 'clay', p: 186, q: 42302},
{name: 'engobe', p: 186, q: 1971493},
{name: 'brąz', p: 186, q: 34095},
{name: 'stiuku', p: 186, q: 33526},
{name: 'spruce', p: 186, q: 2046308},
{name: 'jodle', p: 186, q: 746026},
{name: 'drewno', p: 186, q: 287},
{name: 'varnish', p: 186, q: 81683},
{name: 'tynk', p: 186, q: 572879},
{name: 'terakota', p: 186, q: 60424},
{name: 'granit', p: 186, q: 41177},
// podłoże
{name: 'blasze', p: 186, q: 211367, qual: [{p: 518, q: 861259}]},
{name: 'canvas', p: 186, q: 4259259, qual: [{p: 518, q: 861259}]},
{name: 'cynie', p: 186, q: 1096, qual: [{p: 518, q: 861259}]},
{name: 'desce', p: 186, q: 1348059, qual: [{p: 518, q: 861259}]},
{name: 'drewnie', p: 186, q: 1348059, qual: [{p: 518, q: 861259}]},
{name: 'dykcie', p: 186, q: 219803, qual: [{p: 518, q: 861259}]},
{name: 'dębie', p: 186, q: 2075708, qual: [{p: 518, q: 861259}]},
{name: 'jedwabiu', p: 186, q: 37681, qual: [{p: 518, q: 861259}]},
{name: 'kartonie', p: 186, q: 389782, qual: [{p: 518, q: 861259}]},
{name: 'kości', p: 186, q: 265868, qual: [{p: 518, q: 861259}]},
{name: 'kości słoniowej', p: 186, q: 82001, qual: [{p: 518, q: 861259}]},
{name: 'lipie', p: 186, q: 575018, qual: [{p: 518, q: 861259}]},
{name: 'miedzi', p: 186, q: 753, qual: [{p: 518, q: 861259}]},
{name: 'papierze', p: 186, q: 11472, qual: [{p: 518, q: 861259}]},
{name: 'pergaminie', p: 186, q: 226697, qual: [{p: 518, q: 861259}]},
{name: 'plaster', p: 186, q: 274988, qual: [{p: 518, q: 861259}]},
{name: 'płótnie', p: 186, q: 4259259, qual: [{p: 518, q: 861259}]},
{name: 'płycie', p: 186, q: 1348059, qual: [{p: 518, q: 861259}]},
{name: 'srebrze', p: 186, q: 1090, qual: [{p: 518, q: 861259}]},
{name: 'szkle', p: 186, q: 11469, qual: [{p: 518, q: 861259}]},
{name: 'tynku', p: 186, q: 572879, qual: [{p: 518, q: 861259}]},
{name: 'welinie', p: 186, q: 378274, qual: [{p: 518, q: 861259}]},
// technika
{name: 'akwaforta', p: 2079, q: 186986},
{name: 'dagerotypia', p: 2079, q: 179744},
{name: 'lawowaniu', p: 2079, q: 1469362},
{name: 'lawowanie', p: 2079, q: 1469362},
{name: 'polichromia', p: 2079, q: 183127},
{name: 'litografia', p: 2079, q: 133036},
{name: 'odbitka albuminowa', p: 2079, q: 580807},
],
categoryTab : [
// materiał
{name: 'pastel paintings', p: 186, q: 189085},
//gatunek
{name: "allegories of", p: 136, q: 2839016},
{name: "allegory paintings", p: 136, q: 11766730},
{name: "animalist painting", p: 136, q: 2302151},
{name: "architectural paintings", p: 136, q: 18353841},
{name: "at full length", p: 136, q: 18809626},
{name: "at half length", p: 136, q: 18809572},
{name: "bust length", p: 136, q: 241045},
{name: "caricatures", p: 136, q: 482919},
{name: "coffin portraits", p: 136, q: 1542239},
{name: "erotic drawings", p: 136, q: 1168168},
{name: "erotic paintings", p: 136, q: 1168168},
{name: "figurative paintings", p: 136, q: 5448026},
{name: "genre paintings", p: 136, q: 214127},
{name: "interiors", p: 136, q: 18811686},
{name: "landscape paintings", p: 136, q: 191163},
{name: "miniatures", p: 136, q: 282129},
{name: "mythological paintings", p: 136, q: 3374376},
{name: "nude drawings", p: 136, q: 40446},
{name: "nude females", p: 136, q: 40446},
{name: "nude paintings", p: 136, q: 40446},
{name: "portrait paintings", p: 136, q: 134307},
{name: "profile portrait", p: 136, q: 4382010},
{name: "religious paintings", p: 136, q: 2414609},
{name: "seascape paintings", p: 136, q: 11766734},
{name: "self-portrait", p: 136, q: 192110},
{name: "still life", p: 136, q: 170571},
{name: "still-life", p: 136, q: 170571},
{name: "three-quarter length", p: 136, q: 18809567},
{name: "trompe l'oeil", p: 136, q: 468930},
// prąd
{name: "avant-garde", p: 135, q: 102932},
{name: "baroque sculptures", p: 135, q: 2763408},
{name: "baroque paintings", p: 135, q: 808561},
{name: "contemporary art", p: 135, q: 186030},
{name: "contemporary painting", p: 135, q: 21157755},
{name: "coptic paintings", p: 135, q: 577622},
{name: "gothic sculptures", p: 135, q: 1277524},
{name: "mannerist paintings", p: 135, q: 131808},
{name: "modernist paintings", p: 135, q: 878985},
{name: "neoclassical paintings", p: 135, q: 14378},
{name: "neoclassical sculptures", p: 135, q: 5839901},
{name: "realist paintings", p: 135, q: 2642826},
{name: "renaissance paintings", p: 135, q: 15885248},
{name: "renaissance sculptures", p: 135, q: 936588},
{name: "rococo painters", p: 135, q: 122960},
{name: "romantic paintings", p: 135, q: 3088366},
// główny temat dzieła
{name: "madonna and child", p: 921, q: 9309699},
{name: "rest on the flight into egypt", p: 921, q: 3427290},
{name: "resurrection of christ", p: 921, q: 51624},
{name: "lamentation of christ", p: 921, q: 3155356},
// przedstawia
{name: "balustrades", p: 180, q: 1286070},
{name: "bracelet", p: 180, q: 201664},
{name: "brooches", p: 180, q: 499916},
{name: "choker", p: 180, q: 1424519},
{name: "columns", p: 180, q: 4817},
{name: "décolleté", p: 180, q: 116887},
{name: "drapery", p: 180, q: 3039121},
{name: "ermine (clothing)", p: 180, q: 1555903},
{name: " funs", p: 180, q: 193220},
{name: "gloves", p: 180, q: 169031},
{name: "lace sleeves", p: 180, q: 231250},
{name: "madonna and child", p: 180, q: 345},
{name: "madonna and child", p: 180, q: 942467},
{name: "mantle", p: 180, q: 6752131},
{name: "nude females", p: 180, q: 467},
{name: "order of the white eagle", p: 180, q: 84020},
{name: "panniers (clothing)", p: 180, q: 2621117},
{name: "pearl", p: 180, q: 43436},
{name: "powdered wigs", p: 180, q: 105507},
{name: "female", p: 180, q: 467},
{name: "feathered hats", p: 180, q: 81025},
// jest to
{name: "drawings", p: 31, q: 93184},
{name: "gothic sculptures", p: 31, q: 860861},
{name: "sculptures", p: 31, q: 860861},
{name: 'pastel paintings', p: 31, q: 12043905},
{name: 'photographs', p: 31, q: 125191},
// sposób wykonania
{name: "reliefs", p: 2079, q: 245117},
],
q_prefix : 'Q' ,
p_prefix : 'P' ,
api : '//www.wikidata.org/w/api.php' ,
queue : [],
lastrevid : null,
mainElement : null,
id_cnt : 0,
init : function () {
var self = this ;
var portletLink = mw.util.addPortletLink( 'p-tb', '#', 'Import commons','t-wd_ic');
$(portletLink).click ( function () {
self.run() ;
return false ;
} ) ;
} ,
run : function () {
var self = this ;
var q = mw.config.get('wgPageName').toUpperCase() ;
//console.log("Element główny = " + q);
self.mainElement = q.substring(1, q.length);
//self.mainElement = self.Q_SANDBOX;
var imagePage = prompt("Insert image filename (eg. image.jpg) or RDF URL: ", "");
// RDF file
if(imagePage.includes("rdf:RDF")){
self.processRdf(imagePage);
//self.processQueue();
}
// wikicommons image
else {
imagePage = decodeURIComponent(imagePage).replace(/^.*File:(.*)$/, "$1");
//filename = "//commons.wikimedia.org/wiki/File:Jan_Matejko,_Bitwa_pod_Grunwaldem.jpg"
$.post("/wiki/File:" + imagePage, function(res) {
$.getJSON ( '//commons.wikimedia.org/w/api.php?callback=?' , {
action:'query' ,
titles: "File:" + imagePage,
prop:'categories' ,
cllimit: '100',
format:'json'
} , function ( data ) {
//console.log(res);
//console.log(data.query.pages[Object.keys(data.query.pages)[0]]);
//console.log(data.query.pages[Object.keys(data.query.pages)[0]].categories);
self.processImage(jQuery.parseXML(res),
data.query.pages[Object.keys(data.query.pages)[0]].categories);
self.processQueue();
});
});
}
},
processRdf : function(xmlDoc) {
console.log("PROCESS RDF -->");
console.log(xmlDoc);
var a = $("rdf\\:RDF > rdf\\:Description", xmlDoc);
console.log(a);
var a = $("rdf\\:Description", xmlDoc);
$(a).children().each ( function ( k , v ) {
console.log(v);
})
},
processImage : function(xmlDoc, categories) {
console.log(xmlDoc);
var a = $(xmlDoc).find(".fileinfotpl-type-artwork")[0];
var p195 = null, p217 = null, p973 = true, p31 = true ;
var self = this;
//console.log(".fileinfo============>");
//console.log($(a).children("tbody").children("tr"));
$(a).children("tbody").children("tr").each ( function ( k , v ) {
console.log("===>Processing row:");
console.log(v);
switch($(v).children("td")[0].id) {
case "fileinfotpl_aut":
var value, qual;
// anonim
if ($("tr > td > span > span", v).filter(":contains(anonimowy)").length > 0 ||
$("tr > td > span > span", v).filter(":contains(nieznany)").length > 0
) {
value = self.Q_ANONYOUS_AUTH;
self.createClaim(self.mainElement, self.P_AUTHOR, self.getItemType(value));
}
// wikidata
$.each($("th > a[title*=wikidata]", v), function (k, val) {
console.log(val);
val = $(val).attr("href").replace(/.*\/Q(.*)$/, "$1");
if ($("bdi", v).text().search(new RegExp("według", "i")) !== -1) {
qual = [{property: self.P_INSPIRED_BY, value: self.getItemType(val)}];
val = self.Q_ANONYOUS_AUTH;
} else if ($("bdi", v).text().search(new RegExp("lub jego krąg", "i")) !== -1) {
qual = [{property: self.P_CIRCLE, value: self.getItemType(val)}];
self.createClaim(self.mainElement, self.P_AUTHOR, self.getItemType(self.Q_ANONYOUS_AUTH), qual);
qual = undefined;
} else if ($("bdi", v).text().search(new RegExp("przypisywany", "i")) !== -1) {
qual = [{property: self.P_ATTRIBUTED_TO, value: self.getItemType(val)}];
val = self.Q_ANONYOUS_AUTH;
} else if ($("bdi", v).text().search(new RegExp("być może", "i")) !== -1) {
qual = [{property: self.P_ATTRIBUTED_TO, value: self.getItemType(val)}];
val = self.Q_ANONYOUS_AUTH;
} else if ($("bdi", v).text().search(new RegExp("naśladowca", "i")) !== -1) {
qual = [{property: self.P_FOLLOWER, value: self.getItemType(val)}];
val = self.Q_ANONYOUS_AUTH;
}
self.createClaim(self.mainElement, self.P_AUTHOR, self.getItemType(val), qual);
});
break;
case "fileinfotpl_art_title":
var lang, val, langObj;
val = $("i", v).text().replace(/"/g, '\\"');
if(val.slice(-1).includes("."))
val = val.substring(0, val.length-1);
langObj = [{lang: "pl", val: val}];
if(val === "") {
langObj = [];
$.each($("div", v), function(k, v) {
console.log(v);
lang = $(v).attr("lang");
console.log(lang);
val = $("div > span", v)
.clone()
.children()
.remove()
.end()
.text()
.replace(/^[ ]*/g, '');
console.log(val);
if (val.length === 0) {
val = $(v)
.text();
console.log($("div", v));
console.log(val);
}
console.log(val);
if (typeof lang !== 'undefined')
if (lang.length > 0)
langObj.push({lang: lang, val: val.replace(/^Polski: /, '')});
console.log(langObj);
});
}
self.addLabel(self.mainElement, langObj, null);
break;
case "fileinfotpl_date":
var el = $("time", v).attr("datetime");
if (typeof el !== 'undefined')
if (el.length === 7)
self.createClaim(self.mainElement, self.P_CREATE_DATE, self.getTimeType("+" + el + "-00T00:00:00Z", 10));
else if (el.length === 10)
self.createClaim(self.mainElement, self.P_CREATE_DATE, self.getTimeType("+" + el + "T00:00:00Z", 11));
else
self.createClaim(self.mainElement, self.P_CREATE_DATE, self.getTimeType("+" + el + "-00-00T00:00:00Z", 9));
else if ($("tr > td:eq(1)", v).text().includes("date QS:")) {
el = $("tr > td:eq(1)", v).text().replace(/.*date QS:P571,/, "").replace(/\n/, "").split("/");
console.log("el ======>");
console.log(el);
if(el[1].includes(self.P_STATUS_W_ZRODLE))
self.createClaim(self.mainElement, self.P_CREATE_DATE, self.getTimeType(el[0], el[1].replace(/,P.*/, "")),
[{property: self.P_STATUS_W_ZRODLE, value: self.getItemType(self.Q_OKOLO)}]);
else
self.createClaim(self.mainElement, self.P_CREATE_DATE, self.getTimeType(el[0], el[1]));
}
else {
var d1, d2, d3, p1, p2, prec1, prec2, quals;
el = $("tr > td:eq(1)", v).text().replace(/,.*/g, "").replace(/\n/g, "").split(" ");
console.log(el);
if (el[0].includes("-")||el[0].includes("między")||el[0].includes("—")||
el[0].includes("/")||(el[0] === "od")) {
if(el[0].includes("-")||el[0].includes("—")||el[0].includes("/")) {
d1 = el[0].substring(0, 4);
d3 = el[0].substring(5);
prec1 = 8;
} else {
if (el[2] === "wiek") {
d1 = (self.fromRoman(el[1])-1) * 100 + 1;
d3 = (self.fromRoman(el[4])-1) * 100 + 1;
prec1 = 7;
prec2 = 7;
} else {
d1 = el[1];
d3 = el[3];
prec1 = 8;
}
}
d2 = d1;
p1 = self.P_NAJWCZESNIEJ;
p2 = self.P_NAJPOZNIEJ;
} else if (el[0].length === 4) {
self.createClaim(self.mainElement, self.P_CREATE_DATE, self.getTimeType("+" + el + "-00-00T00:00:00Z", 9));
} else if (el[1].toLowerCase().includes("dekada")) {
var dekada = 0;
switch(el[0].toLowerCase()) {
case "pierwsza":
dekada = 0;
break;
}
d1 = (self.fromRoman(el[2])-1) * 100 + dekada;
prec1 = 8;
} else if (el[1].toLowerCase().includes("połowa")) {
var start = 0;
if(el[1].toLowerCase().includes("druga"))
start = 50;
d2 = (self.fromRoman(el[2])-1) * 100 + start;
d3 = d2 + 50 + start;
d1 = d2 + 1;
p1 = self.P_NAJWCZESNIEJ;
p2 = self.P_NAJPOZNIEJ;
prec1 = 7;
} else if (el[1].toLowerCase().includes("ćwiartka")) {
var start = 0;
switch(el[0].toLowerCase()) {
case "druga":
start = 25;
break;
case "trzecia":
start = 50;
break;
case "czwarta":
start = 75;
break;
}
d2 = (self.fromRoman(el[2])-1) * 100 + start;
d3 = d2 + 25;
d1 = d2 + 1;
p1 = self.P_NAJWCZESNIEJ;
p2 = self.P_NAJPOZNIEJ;
prec1 = 7;
} else if (el[0].toLowerCase().includes("około")||el[0].toLowerCase().includes("ok.")) {
if (el[1].includes("-")||el[1].includes("–")||el[1].includes("/")) {
d1 = el[1].substring(0, 4);
d2 = d1;
d3 = el[1].substring(5);
p1 = self.P_NAJWCZESNIEJ;
p2 = self.P_NAJPOZNIEJ;
prec1 = 8;
} else {
d1 = el[1];
prec1 = 9;
quals = [{property: self.P_STATUS_W_ZRODLE, value: self.getItemType(self.Q_OKOLO)}];
}
} else if (el[0].toLowerCase().includes("lipiec")) {
d1 = el[1] + "-07-01";
prec1 = 10;
} else if (el[0].toLowerCase().includes("lata")) {
el[1] = el[1] === "dziewięćdziesiąte" ? 90 : el[1].slice(0, -1);
d1 = (+(self.fromRoman(el[2])-1) * 100) + (+el[1]);
prec1 = 8;
} else if (el[0].toLowerCase() === "po") {
d1 = el[1];
d2 = d1;
prec1 = 8;
p1 = self.P_NAJWCZESNIEJ;
} else if (el[0].toLowerCase().includes("przed")||el[0].toLowerCase().includes("before")) {
d1 = el[1];
d2 = d1;
prec1 = 8;
p1 = self.P_NAJPOZNIEJ;
} else if (el[0].toLowerCase().includes("przełom")) {
d1 = (self.fromRoman(el[1])-1) * 100 + 1;
d2 = (self.fromRoman(el[3])-1) * 100 + 1;
p1 = self.P_NAJPOZNIEJ;
prec1 = 7;
prec2 = 7;
} else if (el[0].toLowerCase().includes("początek")||el[0].toLowerCase().includes("środek")||el[0].toLowerCase().includes("koniec")||
el[1].toLowerCase().includes("wiek")) {
var idx = el[1].toLowerCase().includes("wiek") ? 0 : 1;
d1 = (self.fromRoman(el[idx])-1) * 100 + 1;
prec1 = 7;
}
if (d1 !== undefined) {
var qArr = [];
prec2 = prec2 ? prec2 : 9;
if(p1)
qArr.push({property: p1, value: self.getTimeType("+" + d2 + "-00-00T00:00:00Z", prec2)});
if(p2)
qArr.push({property: p2, value: self.getTimeType("+" + d3 + "-00-00T00:00:00Z", prec2)});
qArr = qArr.length > 0 ? qArr : undefined;
qArr = quals ? quals : qArr;
if(prec1 === 10)
d1 = d1 + "T00:00:00Z";
else
d1 = d1 + "-00-00T00:00:00Z";
self.createClaim(self.mainElement, self.P_CREATE_DATE, self.getTimeType("+" + d1, prec1), qArr);
}
}
break;
case "fileinfotpl_art_medium":
var kom = "", brakMat;
$.each($("tr > td:eq(1)", v).text().replace(" i ", "#").
replace(" na ", "#").replace(" on ", "#").
replace(" oprawiony w karton", "").
replace(/, /g, "#").split("#"), function(k, v){
brakMat = true;
console.log(v);
$.each(self.getConfig(v, self.materialTab), function(k, v) {
var qArr = [];
brakMat = false;
console.log("MATRIAŁY-PROCESSIG====>");
console.log(v);
if (v.p === 31)
p31 = false;
if(v.qual !== undefined)
$.each(v.qual, function(k, v) {
qArr.push({property: v.p.toString(), value: self.getItemType(v.q.toString())});
});
else
qArr = undefined;
self.createClaim(self.mainElement, v.p.toString(), self.getItemType(v.q.toString()), qArr);
});
if (brakMat)
kom = kom + "====> Nieznany materiał: " + v + "\n";
});
if (kom)
alert(kom);
break;
case 'fileinfotpl_art_dimensions':
var i = 1;
$.each($("tr > td:eq(1)", v).text()
.replace(/^\n/, "")
.replace(/.*dimensions QS:P2048,/, "")
.replace(/U174728;/g, "#")
.replace(/U174728/g, "")
.replace(/P2049,/, "")
.replace(/ × /, "#")
.replace(/ cm/, "")
.split("#"), function(k, v){
switch(i) {
case 1:
self.createClaim(self.mainElement, self.P_WYSOKOSC, self.getQuantityType(v));
break;
case 2:
self.createClaim(self.mainElement, self.P_SZEROKOSC, self.getQuantityType(v));
break;
case 3:
self.createClaim(self.mainElement, self.P_GLEBOKOSC, self.getQuantityType(v));
break;
}
i++;
});
break;
case 'fileinfotpl_art_gallery':
if($("a[title*=wikidata]", v).length > 0)
p195 = $("a[title*=wikidata]", v).attr("href").replace(/^.*\/Q/, "");
break;
case 'fileinfotpl_art_location':
if($("span:contains('eksponat przechowywany w magazynach')", v).length > 0)
self.createClaim(self.mainElement, self.P_MIEJSCE, self.getItemType(self.Q_MAGAZYN));
break;
case 'fileinfotpl_art_id':
p217 = $("div", v).text().replace(/\n/, "");
break;
case 'fileinfotpl_art_references':
var val = $("tr > td > a.external", v).attr("href");
if(val) {
p973 = false;
self.createClaim(self.mainElement, self.P_URL, self.getStringType(val));
}
break;
case 'fileinfotpl_src':
if(p973)
self.createClaim(self.mainElement, self.P_URL, self.getStringType($("tr > td > a.external", v).attr("href")));
break;
}
//console.log(v);
});
if (p195&&p217) {
self.createClaim(self.mainElement, self.P_KOLEKCJA, self.getItemType(p195), [{property: self.P_NR_EWID, value: self.getStringType(p217)}]);
self.createClaim(self.mainElement, self.P_NR_EWID, self.getStringType(p217), [{property: self.P_KOLEKCJA, value: self.getItemType(p195)}]);
} else if (p195&&!p217) {
self.createClaim(self.mainElement, self.P_KOLEKCJA, self.getItemType(p195));
} else if (!p195&&p217) {
self.createClaim(self.mainElement, self.P_NR_EWID, self.getStringType(p217));
}
self.createClaim(self.mainElement, self.P_ILUSTRACJA, self.getStringType($("h1", xmlDoc).text().replace("File:", "")));
console.log("kategorie=====>");
console.log(categories);
var kom = "", brakKat, cats = [];
$.each(categories, function(k, v){
brakKat = true;
v = v.title.toLowerCase().replace("category:", "");
console.log(v);
$.each(self.getConfig(v, self.categoryTab), function(k, v) {
brakKat = false;
console.log("KATEGORIE-PROCESSIG====>");
console.log(v);
var el = $.grep(cats, function(e) {
//console.log("Porównanie v.p = (" + v.p + ") z e.p = (" + e.p + "), v.q = (" + v.q + ") z e.q = (" + e.q + ")");
if(v.p === e.p && v.q === e.q)
return true;
else
return false;
});
if(el.length === 0) {
cats.push({p: v.p, q: v.q});
if (v.p === 31) {
if(p31)
self.createClaim(self.mainElement, v.p.toString(), self.getItemType(v.q.toString()));
p31 = false;
} else
self.createClaim(self.mainElement, v.p.toString(), self.getItemType(v.q.toString()));
}
});
if (brakKat)
if (v.includes('pd-art (pd-old-100)')||
v.includes('pd-art (pd-old-100-1923)')||
v.includes('pd-old-100-1923')||
v.includes('artworks without wikidata item')||
v.includes('artworks with known accession number')||
v.includes('objects with inscriptions (language unspecified)')||
v.includes('cc-zero')||
v.includes('self-published work')||
v.includes('cc-pd-mark')
) {}
else
kom = kom + "====> Nieznana kategoria: " + v + "\n";
});
if(p31)
self.createClaim(self.mainElement, self.P_JEST_TO, self.getItemType(self.Q_OBRAZ));
if(kom)
alert(kom);
},
getItemType : function (value) {
return '{"entity-type":"item","numeric-id":' + value.replace(/\D/g,'') + '}' ;
},
getTimeType : function (value, precision) {
return '{"time":"' + value + '","timezone":0,"before":0,"after":0,"precision":' + precision +
',"calendarmodel":"http://www.wikidata.org/entity/Q1985727"}';
},
getStringType : function (value) {
if(value === undefined)
return value;
else
return '"' + value + '"' ;
},
getQuantityType : function (value) {
return '{"amount":"+' + value + '","unit": "http://www.wikidata.org/entity/Q174728"}' ;
},
getSnak : function(property, value) {
var self = this;
return '{"' + self.p_prefix+property + '":[{"snaktype":"value","property":"' + self.p_prefix+property + '",' +
'"datavalue":{"type":"wikibase-entityid","value":' + self.getItemType(value) + '}}]}';
},
createClaim : function ( entity , property , value, qualifiers ) {
var self = this;
console.log ( "Creating: " + entity + " / " + property + " / " + value + " / qualifiers: ");
console.log (qualifiers);
if(value !== undefined)
self.queue.push({entity: entity, property: property, value: value, qualifiers: qualifiers})
},
processQueue : function () {
var self = this ;
if (self.queue.length === 0)
return;
var entity , property , value, qualifiers;
entity = self.queue[0].entity;
property = self.queue[0].property;
value = self.queue[0].value;
qualifiers = self.queue[0].qualifiers;
$.post ( self.api , {
action : 'query' ,
prop : 'revisions|pageterms' ,
//rvlimit: '1',
rvprop: 'ids',
titles : "Q" + entity ,
format : 'json',
meta : 'tokens'
} , function ( data ) {
var token, lastrevid ;
console.log("QUEUE======>");
console.log(self.queue);
token = data.query.tokens.csrftoken;
var key = Object.keys(data.query.pages)[0];
lastrevid = data.query.pages[key].revisions[0].revid;
if ( undefined === token ) {
console.log ( "Cannot get edit token for " + entity ) ;
//self.processNextQueueItem() ;
return ;
}
if (self.queue[0].label) {
$.post ( self.api, {
action : 'wbeditentity' ,
id: self.q_prefix + entity,
data: self.queue[0].label,
format : 'json',
token: token
} , function ( data ) {
console.log(data);
self.queue.shift();
self.processQueue();
} ) ;
}
else {
property = property.replace(/\D/g,'') ;
entity = entity.replace(/\D/g,'') ;
console.log(property);
console.log(entity);
// sprawdzamy, czy element istnieje
$.post (self.api, {
action : 'wbgetclaims',
entity : self.q_prefix+entity ,
property : self.p_prefix+property,
format : 'json' //,
//token: token
//props : ''
}, function (data) {
//console.log("====> WBGetClaims");
//console.log(data);
//console.log(data.claims);
//console.log(data.claims[self.p_prefix+property]);
var vo = JSON.parse ( value ) ;
//console.log ( vo ) ;
var is_item_target = vo['numeric-id'] !== undefined ;
var value_id;
if (is_item_target)
value_id = vo['numeric-id']+'';
else if (vo['time'])
value_id = vo['time'] + ", precision = " + vo['precision'];
else if (vo['amount'])
value_id = vo['amount'];
else
value_id = vo;
console.log(data.claims[self.p_prefix+property]);
console.log("value_id = " + value_id);
if(data.claims[self.p_prefix+property] === undefined||
!self.isValueInArray(data.claims[self.p_prefix+property], value_id))
{
var other_entity = ( entity.replace(/\D/g,'') != self.mainElement.replace(/\D/g,'') ) ;
$.post ( self.api , {
action : 'wbcreateclaim' ,
entity : self.q_prefix+entity ,
snaktype : 'value' ,
property : self.p_prefix+property ,
value : value ,
token : token ,
baserevid : lastrevid ,
format : 'json'
} , function ( data ) {
console.log("wbcreateclaim===>");
console.log ( "Tworzenie: " + entity + " / " + property + " / " + value);
console.log(data);
var claimId = data.claim.id;
$.post ( self.api , {
action : 'wbsetreference' ,
format : 'json',
statement: claimId,
snaks: self.getSnak(self.P_IMPORTED_FROM, self.Q_WIKICOMMONS),
baserevid: data.pageinfo.lastrevid,
token: token
} , function ( data ) {
console.log(data);
self.lastrevid = data.pageinfo.lastrevid;
if (typeof qualifiers !== 'undefined') {
self.addQualifier(token, claimId);
} else {
self.queue.shift();
self.processQueue();
}
});
var id = 'added_' + self.id_cnt ;
var h = "<div id='" + id + "'>" ;
h += "Added " ;
h += "<span class='added_entity_P'>" + property + "</span>" ;
h += " ↠ " ;
h += "<span class='added_entity_Q'>" + value_id + "</span>" ;
if ( other_entity ) h += " to entity <span class='added_entity_x'>" + entity + "</span>" ;
h += ".</div>" ;
$($('div.wikibase-listview').get(0)).append ( h ) ;
self.updateEntity ( id , property , self.p_prefix ) ;
if ( is_item_target ) self.updateEntity ( id , value_id , self.q_prefix ) ;
if ( is_item_target && other_entity ) self.updateEntity ( id , entity.replace(/\D/g,'') , 'x' ) ;
self.id_cnt++ ;
} , 'json' ) ;
} else { // if(data.claims)
self.queue.shift();
self.processQueue();
}
}, 'json'); // sprawdzenie istnienia elementu
} // else (if(label))
} , 'json' ) ;
} ,
addQualifier : function(token, claimId) {
var self=this;
$.post ( self.api , {
action : 'wbsetqualifier' ,
claim: claimId,
property: self.p_prefix+self.queue[0].qualifiers[0].property,
value: self.queue[0].qualifiers[0].value,
snaktype: 'value',
format : 'json',
baserevid: self.lastrevid,
token: token
} , function ( data ) {
console.log("KWALIFIKATOR======>");
console.log(data);
self.lastrevid = data.pageinfo.lastrevid;
self.queue[0].qualifiers.shift();
console.log(self.queue[0].qualifiers);
if (self.queue[0].qualifiers.length === 0) {
console.log("kwalifikator = 0");
self.queue.shift();
self.processQueue();
} else {
self.addQualifier(token, claimId);
}
} ) ;
},
addLabel : function(entity, label, description) {
//console.log("addLabel: entity=" + entity + " label=");
//console.log(label);
//return;
var self=this;
var dat = '{"labels":[';
$.each(label, function(k, v) {
dat = dat + '{"language":"' + v.lang + '","value":"' + v.val + '"}';
});
dat = dat + ']';
if (description !== null) {
dat = dat + ',"descriptions":[';
$.each(description, function(k, v) {
dat = dat + '{"language":"' + v.lang + '","value":"' + v.val + '},';
});
dat = dat + ']';
}
dat = dat + '}';
self.queue.push({entity: entity, label: dat})
console.log("Label = " + dat);
},
updateEntity : function ( id , value , prefix ) {
var self = this ;
var q = prefix+value ;
if ( prefix == 'x' ) q = self.q_prefix + value ;
console.log ( q ) ;
$.getJSON ( self.api , {
action : 'wbgetentities' ,
ids : q ,
format : 'json'
} , function ( data ) {
var labels = data.entities[q].labels ;
var title = q ;
if ( undefined !== labels ) {
$.each ( ['pl','en','de','fr'] , function ( k , v ) {
if ( undefined === labels[v] ) return ;
title = labels[v].value ;
return false ;
} ) ;
}
var h = "<a href='/wiki/" + q + "'>" + title + "</a>" ;
$('#'+id+' span.added_entity_'+prefix).html ( h ) ;
} ) ;
} ,
fromRoman : function(str) {
var result = 0;
// the result is now a number, not a string
var decimal = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1];
var roman = ["M", "CM","D","CD","C", "XC", "L", "XL", "X","IX","V","IV","I"];
for (var i = 0;i<=decimal.length;i++) {
while (str.indexOf(roman[i]) === 0){
//checking for the first characters in the string
result += decimal[i];
//adding the decimal value to our result counter
str = str.replace(roman[i],'');
//remove the matched Roman letter from the beginning
}
}
return result;
},
getConfig : function(QStr, elemArray) {
var self = this;
//console.log("KATEGORIA===>" + QStr);
return $.grep(elemArray, function(e){
//console.log("Porównanie: (" + e.name + ") i (" + QStr + "), wynik = " + QStr.includes(e.name));
return QStr.includes(e.name); });
},
isValueInArray : function(arr, val) {
var self = this;
var ret = false;
console.log("=====> val: ");
console.log(val);
console.log("=====> arr: ");
console.log(arr);
$.each(arr, function(k, v){
console.log("===> v.mainsnak.datavalue.value.id: ");
console.log(v.mainsnak.datavalue.value.id);
console.log("=====> self.q_prefix + val: ");
console.log(self.q_prefix + val);
console.log(v.mainsnak.datavalue.value.id !== self.q_prefix + val);
if(ret === false)
if (v.mainsnak.datavalue.value.id !== undefined && v.mainsnak.datavalue.value.id !== self.q_prefix + val)
ret = false;
else
ret = true;
});
console.log("=====> isValueInArray ret: " + ret);
return ret;
},
};
jQuery(document).ready ( function() {
if ( mw.config.get('wgNamespaceNumber') != 0 ) return ;
if ( mw.config.get('wgAction') != 'view' ) return ;
wd_import_commons.init () ;
});