3502bac60c
Not being pushed to 1.0 clients
93 lines
No EOL
3.2 KiB
JavaScript
93 lines
No EOL
3.2 KiB
JavaScript
{
|
|
"translatorID":"fef07360-ee97-4f67-b022-6f64d5ec0c25",
|
|
"translatorType":4,
|
|
"label":"KOBV",
|
|
"creator":"Gunar Maiwald",
|
|
"target":"^http://vs13.kobv.de/V/",
|
|
"minVersion":"1.0.0b4.r5",
|
|
"maxVersion":"",
|
|
"priority":100,
|
|
"inRepository":true,
|
|
"lastUpdated":"2009-01-08 08:19:07"
|
|
}
|
|
|
|
function detectWeb(doc, url) {
|
|
if (doc.evaluate('//tr /td[@class="no_wrap_center"]/a', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
|
|
return "multiple";
|
|
}
|
|
else if (doc.evaluate('//tr/th[@class="no_wrap"]', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
|
|
return "book";
|
|
}
|
|
}
|
|
|
|
function scrape(doc) {
|
|
var translator = Zotero.loadTranslator("import");
|
|
translator.setTranslator("a6ee60df-1ddc-4aae-bb25-45e0537be973");
|
|
var marc = translator.getTranslatorObject();
|
|
|
|
var xpath;
|
|
if (doc.title.match("Freie Universität Berlin")) { xpath ='//li/a[@title="Ansicht des Originalformats"]'; }
|
|
else if (doc.title.match("KOBV")) { xpath ='//li/a[@title="Ansicht des bibliothekarischen Formats"]'; }
|
|
else if (doc.title.match("UB der HU Berlin")) { xpath ='//li/a[@title="Ansicht des Originalformats"]'; }
|
|
else if (doc.title.match("^MetaLib")) { xpath ='//li/a[@title="Ansicht des Originalformats"]'; }
|
|
var hrefs = doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null);
|
|
var href;
|
|
|
|
while (href = hrefs.iterateNext()) {
|
|
var url = href.getAttribute("href");
|
|
url += "&format=005";
|
|
|
|
Zotero.Utilities.processDocuments([url], function(newDoc) {
|
|
var record = new marc.record();
|
|
var xpath = '//table//tr';
|
|
var elmts = newDoc.evaluate(xpath, newDoc, null, XPathResult.ANY_TYPE, null);
|
|
var elmt;
|
|
|
|
while (elmt = elmts.iterateNext()) {
|
|
var field = Zotero.Utilities.trimInternal(newDoc.evaluate('./td[1]', elmt, null, XPathResult.ANY_TYPE, null).iterateNext().textContent);
|
|
var value = Zotero.Utilities.trimInternal(newDoc.evaluate('./td[2]', elmt, null, XPathResult.ANY_TYPE, null).iterateNext().textContent);
|
|
value = value.replace(/\|([a-z]) /g,marc.subfieldDelimiter+"$1");
|
|
var code = field.substring(0,3);
|
|
var ind = field.substr(3);
|
|
|
|
// QnD for Authors:
|
|
if (code == "100" && ind == "11" && value.match(marc.subfieldDelimiter+"b")) {
|
|
var values = value.split(marc.subfieldDelimiter);
|
|
var forename = values[1].substr(1);
|
|
var surname = values[2].substr(1);
|
|
value = marc.subfieldDelimiter+"a"+surname+", "+forename;
|
|
ind = 1;
|
|
}
|
|
record.addField(code, ind, value);
|
|
}
|
|
|
|
var newItem = new Zotero.Item();
|
|
record.translate(newItem);
|
|
newItem.complete();
|
|
|
|
}, function() { Zotero.done(); });
|
|
Zotero.wait();
|
|
}
|
|
}
|
|
|
|
|
|
function doWeb(doc, url) {
|
|
var xpath1 = '//table/tbody/tr/td[@class="no_wrap_center"]/a';
|
|
var xpath2 = '//table/tbody/tr/th[@class="no_wrap"]';
|
|
var newUrls = new Array();
|
|
|
|
if (doc.evaluate(xpath1, doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
|
|
var items = Zotero.Utilities.getItemArray(doc, doc, '^http://vs13.kobv.de/V/.*format=999$','^[0-9]+$');
|
|
items = Zotero.selectItems(items);
|
|
for (var url in items) {
|
|
newUrls.push(url);
|
|
}
|
|
}
|
|
|
|
else if (doc.evaluate(xpath2, doc, null, XPathResult.ANY_TYPE, null).iterateNext()) {
|
|
newUrls.push(url);
|
|
}
|
|
|
|
Zotero.Utilities.processDocuments(newUrls, scrape, function() { Zotero.done(); });
|
|
Zotero.wait();
|
|
} |