Skip to content
Permalink
Branch: master
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
135 lines (116 sloc) 4.16 KB
{
"translatorID": "915e3ae2-afa9-4b1d-9780-28ed3defe0ab",
"label": "dLibra",
"creator": "Pawel Kolodziej <p.kolodziej@gmail.com>",
"target": "/.*dlibra/(doccontent|docmetadata|collectiondescription|results)|/dlibra/?",
"minVersion": "2.1.9",
"maxVersion": "",
"priority": 100,
"inRepository": true,
"translatorType": 4,
"browserSupport": "gcsibv",
"lastUpdated": "2016-09-12 06:02:53"
}
/*
dLibra Translator
Copyright (C) 2010 Pawel Kolodziej, p.kolodziej@gmail.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
//multiple test URL: http://bcul.lib.uni.lodz.pl/dlibra/results?action=SearchAction&skipSearch=true&mdirids=&server%3Atype=both&tempQueryType=-3&encode=false&isExpandable=on&isRemote=off&roleId=-3&queryType=-3&dirids=1&rootid=&query=Karte&localQueryType=-3&remoteQueryType=-2
function detectWeb(doc, url) {
var singleRe = /.*dlibra\/(doccontent|docmetadata|publication).*/;
var multipleRe = /.*dlibra\/(collectiondescription|results).*|.*\/dlibra\/?/;
if (singleRe.test(url))
return "book";
if (multipleRe.test(url))
return "multiple";
}
function doWeb(doc, url) {
if (detectWeb(doc,url)=="multiple"){
var articles = new Array();
var itemsXPath = '//ol[@class="itemlist"]/li/a | //td[@class="searchhit"]/b/a | //p[@class="resultTitle"]/b/a[@class="dLSearchResultTitle"]';
var titles = doc.evaluate(itemsXPath, doc, null, XPathResult.ANY_TYPE, null);
var title;
var items= {};
while (title = titles.iterateNext()){
items[title.href] = title.textContent;}
Zotero.selectItems(items, function (items) {
if (!items) {
return true;
}
for (var i in items) {
articles.push(i);
}
Zotero.Utilities.processDocuments(articles, scrape);
});
} else
scrape(doc, url);
}
function scrape(doc, url)
{
var reSingle= new RegExp("(.*/dlibra)/(?:doccontent|docmetadata|publication).*[?&]id=([0-9]*).*");
var m = reSingle.exec(url);
if (!m)
return "";
var baseUrl = m[1];
var id = m[2];
var isPIA = baseUrl.match("lib.pia.org.pl|cyfrowaetnografia.pl");
Zotero.Utilities.HTTP.doGet( baseUrl + "/rdf.xml?type=e&id="+id, function(rdf){
rdf = rdf.replace(/<\?xml[^>]*\?>/, "");
//Z.debug(rdf)
var translator = Zotero.loadTranslator("import");
translator.setTranslator("5e3ad958-ac79-463d-812b-a86a9235c28f");
translator.setString(rdf);
translator.setHandler("itemDone", function (obj, item) {
if (item.extra) item.notes.push(item.extra);
item.extra = "";
item.itemID = "";
item.complete();
});
translator.getTranslatorObject(function(trans) {
trans.defaultUnknownType = 'book';
trans.doImport();
});
})
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://bcul.lib.uni.lodz.pl/dlibra/docmetadata?id=1247&from=&dirids=1&ver_id=&lp=2&QI=",
"items": [
{
"itemType": "book",
"title": "D2. Special Karte von Südpreussen : mit Allergrösster Erlaubniss aus der Königlichen grossen topographischen Vermessungs-Karte, unter Mitwürkung des Directors Langner",
"creators": [
{
"firstName": "David",
"lastName": "Gilly",
"creatorType": "author"
}
],
"date": "1802-1803",
"abstractNote": "Mapy topograficzne Prus Południowych.13 arkuszy o wymiarach 62 x 82 cm. Skala [ca 1:150000]. Miedzioryt, ręcznie kolorowany",
"language": "ger",
"libraryCatalog": "dLibra",
"publisher": "Simon Schropp u. Comp.",
"rights": "Biblioteka Uniwersytetu Łódzkiego",
"shortTitle": "D2. Special Karte von Südpreussen",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
You can’t perform that action at this time.