zotero/chrome/content/scaffold/templates/scrapeMARC.js

37 lines
1.2 KiB
JavaScript
Raw Normal View History

function scrape(doc, url) {
// TODO adjust the selector for the lines here
var lines = doc.querySelectorAll('#cntPlcPortal_grdMrc tr');
// call MARC translator
var translator = Zotero.loadTranslator("import");
translator.setTranslator("a6ee60df-1ddc-4aae-bb25-45e0537be973");
translator.getTranslatorObject(function (marc) {
var record = new marc.record();
var newItem = new Zotero.Item();
// ignore the table headings in lines[0]
record.leader = text(lines[1], 'td', 4);
var fieldTag, indicators, fieldContent;
for (let line of Array.from(lines).slice(2)) {
// multiple lines with same fieldTag do not repeat the tag
// i.e. in these cases we will just take same value as before
if (text(line, 'td', 0).trim().length > 0) {
fieldTag = text(line, 'td', 0);
}
indicators = text(line, 'td', 1) + text(line, 'td', 2);
fieldContent = '';
if (text(line, 'td', 3).trim().length > 0) {
fieldContent = marc.subfieldDelimiter + text(line, 'td', 3);
}
fieldContent += text(line, 'td', 4);
record.addField(fieldTag, indicators, fieldContent);
}
record.translate(newItem);
// possibly clean newItem further here
newItem.complete();
});
}