commit translators as separate files, combine CiteBase translators, and modify SPIE translator
This commit is contained in:
parent
6a3c62c23c
commit
032e0439a1
264 changed files with 36688 additions and 0 deletions
93
translators/KOBV.js
Normal file
93
translators/KOBV.js
Normal file
|
@ -0,0 +1,93 @@
|
|||
{
|
||||
"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":"2008-09-04 08:15:46"
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue