zotero/translators/Antikvarium.hu.js

281 lines
8.6 KiB
JavaScript

{
"translatorID": "68a54283-67e0-4e1c-ad3d-5b699868b194",
"label": "Antikvarium.hu",
"creator": "Velősy Péter Kristóf",
"target": "^https?://(www\\.)?antikvarium\\.hu/",
"minVersion": "3.0",
"maxVersion": "",
"priority": 100,
"inRepository": true,
"translatorType": 4,
"browserSupport": "gcsibv",
"lastUpdated": "2021-09-22 19:39:49"
}
/*
***** BEGIN LICENSE BLOCK *****
Copyright © 2017-2021 Velősy Péter Kristóf
This file is part of Zotero.
Zotero is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Zotero 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 Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
***** END LICENSE BLOCK *****
*/
function detectWeb(doc, url) {
if (url.includes('konyv')) {
return "book";
}
else if (url.includes('index.php?type=search') && getSearchResults(doc, true)) {
return "multiple";
}
return false;
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = doc.querySelectorAll('.src-result-book');
for (let row of rows) {
var href = attr(row, '#searchResultKonyv-csempes', 'href');
var title = ZU.trimInternal(text(row, '.book-title-src'));
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (items) ZU.processDocuments(Object.keys(items), scrape);
});
}
else {
scrape(doc, url);
}
}
function scrape(doc, _url) {
var newItem = new Zotero.Item('book');
newItem.title = text(doc, '[itemprop=name]', 0).trim();
var subtitle = text(doc, '[itemprop=alternateName]', 0) ? text(doc, '[itemprop=alternateName]', 0).trim() : null;
if (subtitle) {
newItem.title = newItem.title + ': ' + capitalizeHungarianTitle(subtitle, true);
}
var authors = Array.from(doc.querySelectorAll('[itemprop=author]')).map(x => cleanHungarianAuthor(x.innerText));
authors.forEach(x => newItem.creators.push(x));
var abstract = text(doc, 'fulszovegFull', 0) || text(doc, 'eloszoFull', 0);
if (abstract) {
newItem.abstractNote = abstract.replace(' Vissza', '').trim();
}
var seriesElement = doc.getElementById('konyvAdatlapSorozatLink');
if (seriesElement && seriesElement.length) {
newItem.series = seriesElement.innerText;
newItem.seriesNumber = getElementByInnerText('th', 'Kötetszám:').parentElement.children[1].innerText;
newItem.volume = newItem.seriesNumber;
}
var publisherName = text(doc, '#konyvAdatlapKiadoLink [itemprop=name]')
|| text(doc, '[itemprop=name]', 1);
if (publisherName) {
newItem.publisher = publisherName;
}
var publisherPlace = firstText(doc, '[itemprop=address]');
if (publisherPlace) {
newItem.place = publisherPlace.replace('(', '').replace(')', '');
}
newItem.date = firstText(doc, '[itemprop=datePublished]');
newItem.numPages = firstText(doc, '[itemprop=numberOfPages]');
newItem.language = firstText(doc, '[itemprop=inLanguage]');
var isbnElement = getElementByInnerText(doc, 'th', 'ISBN:');
if (isbnElement) {
newItem.ISBN = isbnElement.parentElement.children[1].innerText;
}
var contentsElement = doc.getElementById('tartalomFull');
if (contentsElement) {
newItem.notes.push({ note: contentsElement.innerText });
}
newItem.attachments.push({ document: doc, title: "Antikvarium.hu Snapshot", mimeType: "text/html" });
newItem.complete();
}
/**
* Return the first element matching the selector with non-empty text.
*/
function firstText(docOrElem, selector) {
for (let elem of docOrElem.querySelectorAll(selector)) {
let elemText = elem.textContent.trim();
if (elemText) return elemText;
}
return '';
}
function getElementByInnerText(doc, elementType, innerText) {
var tags = doc.getElementsByTagName(elementType);
for (var i = 0; i < tags.length; i++) {
if (tags[i].textContent == innerText) {
return tags[i];
}
}
return null;
}
function cleanHungarianAuthor(authorName) {
if (authorName.includes(',')) {
return Zotero.Utilities.cleanAuthor(authorName, 'author', true);
}
else {
var author = Zotero.Utilities.cleanAuthor(authorName, 'author', false);
var firstName = author.lastName;
var lastName = author.firstName;
author.firstName = firstName;
author.lastName = lastName;
return author;
}
}
function capitalizeHungarianTitle(title) {
title = title[0].toUpperCase() + title.substring(1).toLowerCase();
var words = title.split(/[ !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]/);
words.forEach((w) => {
if (isRomanNumeral(w)) {
title = title.replace(w, w.toUpperCase());
}
});
return title;
}
function isRomanNumeral(word) {
var romanRegex = /^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/;
return !!word.toUpperCase().match(romanRegex);
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.antikvarium.hu/konyv/erdei-janos-atlasz-almai-82276",
"items": [
{
"itemType": "book",
"title": "Atlasz álmai: Borges a szovjetunióban/az öröklét előszobája és egyéb történetek",
"creators": [
{
"firstName": "János",
"lastName": "Erdei",
"creatorType": "author"
}
],
"date": "1991",
"language": "Magyar",
"libraryCatalog": "Antikvarium.hu",
"numPages": "140",
"place": "Budapest",
"publisher": "Aero & Rádió Kft.",
"shortTitle": "Atlasz álmai",
"attachments": [
{
"title": "Antikvarium.hu Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [
{
"note": "TARTALOM\nElőszó\t5\nMásodik ébredés\t7\nMegvilágosodás\t9\nSzemelvények Gusavson műveiből\t17\nHalvány kétkedés\t17\nMegjegyzés\t20\nJótékony hazugság\t21\nA föltámadt Krisztus dilemmája\t23\nÁbrahám\t24\nSzerelmes ébredés és álom\t27\nRáébredés: a rabszolga\t33\nDacos ébredés, avagy az ötödik evangélista\t35\nElalvás előtt I.\t40\nKét álmodó\t40\nElalvás előtt II.\t43\nA kivégzési jegy\t45\nGyújtópont\t53\nFelvillanás\t55\nAngyali üdvözlet\t63\nA fellendülés okai\t65\nFéreg által homályosan\t71\nBorges a Szovjetunióban\t81\nA nevetés köve\t89\nA Nagy Rendszer\t93\nTúl az álmokon: az igazhitű\t97\nAz öröklét előszobája\t101\nElragadottság\t109\nA legvidámabb eretnek\t113\nÚjabb fejlemények az Oidipusz-ügyben\t117\nVisszahívták a Szfinxet!\t121\nAz egyetlen lehetőség\t125\nZavaros álom: letisztulás\t127\nN. és a tenger\t135\nUtószó\t137"
}
],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.antikvarium.hu/index.php?type=search&ksz=atlasz&reszletes=0&newSearch=1&searchstart=ksz&interfaceid=101",
"items": "multiple"
},
{
"type": "web",
"url": "https://www.antikvarium.hu/konyv/peter-harrison-mary-harrison-misztikus-erok-51027-0",
"items": [
{
"itemType": "book",
"title": "Misztikus erők: Mistic forces/testen túli tapasztalatok",
"creators": [
{
"firstName": "Harrison",
"lastName": "Peter",
"creatorType": "author"
},
{
"firstName": "Harrison",
"lastName": "Mary",
"creatorType": "author"
},
{
"firstName": "Nóra",
"lastName": "Rohonczi",
"creatorType": "author"
}
],
"ISBN": "9789637994043",
"language": "Magyar",
"libraryCatalog": "Antikvarium.hu",
"numPages": "274",
"place": "Budapest",
"publisher": "Pesti Szalon Könyvkiadó",
"shortTitle": "Misztikus erők",
"attachments": [
{
"title": "Antikvarium.hu Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [
{
"note": "TARTALOM\nKöszönetnyilvánítás\t3\nElőszó\t5\nBevezetés\t9\nMi a TTT?\t13\nA fény\t23\nA magaslati nézőpont\t35\nA mennyországban?\t49\nA gyógyító erő\t55\nKülönös hatóerők\t75\nÁllatok\t91\nZene\t105\nA határterület\t111\nIdőutazások\t121\nA döntés\t141\nAz ezüstzsinór\t151\nEgybeesések\t163\nA fátum\t173\nMenekülés\t193\nGyermekek\t201\nA halálfélelem legyőzése\t213\nMegérzések\t231\nAz okkultizmus veszélyei\t235\nA lélek illata\t247\nAngyalok\t257\nPozitív végkövetkeztetések\t273"
}
],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/