191 lines
5.8 KiB
JavaScript
191 lines
5.8 KiB
JavaScript
{
|
||
"translatorID": "cdf8269c-86b9-4039-9bc4-9d998c67740e",
|
||
"label": "Verniana-Jules Verne Studies",
|
||
"creator": "Aurimas Vinckevicius, Emiliano Heyns",
|
||
"target": "^https?://[^/]*verniana\\.org(:\\d+)?/volumes/\\d+/",
|
||
"minVersion": "2.1.9",
|
||
"maxVersion": "",
|
||
"priority": 100,
|
||
"inRepository": true,
|
||
"translatorType": 4,
|
||
"browserSupport": "gcsibv",
|
||
"lastUpdated": "2019-06-17 13:39:01"
|
||
}
|
||
|
||
/**
|
||
Copyright (c) 2012-2019 Aurimas Vinckevicius, Emiliano Heyns
|
||
|
||
This program 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.
|
||
|
||
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
|
||
Affero General Public License for more details.
|
||
|
||
You should have received a copy of the GNU Affero General Public
|
||
License along with this program. If not, see
|
||
<http://www.gnu.org/licenses/>.
|
||
*/
|
||
|
||
// eslint-disable-next-line
|
||
function attr(docOrElem,selector,attr,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.getAttribute(attr):null;}function text(docOrElem,selector,index){var elem=index?docOrElem.querySelectorAll(selector).item(index):docOrElem.querySelector(selector);return elem?elem.textContent:null;}
|
||
|
||
function detectWeb(doc, _url) {
|
||
if (doc.querySelector('ul.volume_toc li')) return 'multiple';
|
||
if (doc.querySelector('.ref_on_top')) return 'journalArticle';
|
||
return false;
|
||
}
|
||
|
||
function returnMatch(t, r) {
|
||
let m = t.match(r);
|
||
return m ? m[1] : '';
|
||
}
|
||
|
||
function scrape(doc, url) {
|
||
let item = new Zotero.Item('journalArticle');
|
||
item.url = url;
|
||
item.title = ZU.capitalizeTitle(ZU.trimInternal(text(doc, '#content h1') || ''));
|
||
|
||
item.creators = (text(doc, 'div#content p.author a') || text(doc, 'div#content p.author')).split(' et ').map(author => ZU.cleanAuthor(author.trim(), 'author'));
|
||
item.abstractNote = text(doc, 'p.abstract');
|
||
|
||
let refOnTop = (text(doc, 'div.ref_on_top') || '').trim();
|
||
item.volume = returnMatch(refOnTop, /volume (\d+)/i);
|
||
item.pages = returnMatch(refOnTop, /(\d+(?:–\d+)?)$/);
|
||
|
||
item.ISSN = '1565-8872';
|
||
|
||
item.attachments = [];
|
||
let m = url.match(/^(https?:\/\/www\.verniana\.org\/volumes\/[0-9]+\/)[^/]+(\/[^.]+)\.html$/);
|
||
if (m) {
|
||
item.attachments = [
|
||
{
|
||
url: m[1] + 'A4' + m[2] + '.pdf',
|
||
title: 'Full text PDF',
|
||
mimeType: 'application/pdf'
|
||
},
|
||
{
|
||
url: m[1] + 'HTML' + m[2] + '.html',
|
||
title: 'Snapshot',
|
||
mimeType: 'text/html'
|
||
},
|
||
];
|
||
}
|
||
|
||
item.complete();
|
||
}
|
||
|
||
function doWeb(doc, url) {
|
||
if (detectWeb(doc, url) === 'multiple') {
|
||
let items = {};
|
||
for (let item of doc.querySelectorAll('ul.volume_toc li')) {
|
||
let title = text(item, '.title');
|
||
if (!title) continue;
|
||
|
||
let a = Array.from(item.querySelectorAll('a')).find(a => a.textContent === 'HTML');
|
||
if (!a) continue;
|
||
|
||
let href = a.getAttribute('href');
|
||
if (href) items[href] = title;
|
||
}
|
||
|
||
Zotero.selectItems(items, function (items) {
|
||
ZU.processDocuments(Object.keys(items), scrape);
|
||
});
|
||
}
|
||
else {
|
||
scrape(doc, url);
|
||
}
|
||
}
|
||
|
||
/** BEGIN TEST CASES **/
|
||
var testCases = [
|
||
{
|
||
"type": "web",
|
||
"url": "http://www.verniana.org/volumes/04/index.en.html",
|
||
"items": "multiple"
|
||
},
|
||
{
|
||
"type": "web",
|
||
"url": "http://www.verniana.org/volumes/07/Resumes/AlcideMorgaz.html",
|
||
"items": [
|
||
{
|
||
"itemType": "journalArticle",
|
||
"title": "Alcide Poitrineux et Simon Morgaz: deux mises au point sur Jules Verne et le théâtre",
|
||
"creators": [
|
||
{
|
||
"firstName": "Stefan",
|
||
"lastName": "Schmidt",
|
||
"creatorType": "author"
|
||
},
|
||
{
|
||
"firstName": "Volker",
|
||
"lastName": "Dehs",
|
||
"creatorType": "author"
|
||
}
|
||
],
|
||
"ISSN": "1565-8872",
|
||
"abstractNote": "Jules Verne a collaboré en 1883 à une pièce qui ne fut jamais jouée, Les Erreurs d'Alcide. De récentes découvertes apportent plus de\nprécisions sur cette collaboration. Dans Famille-sans-nom, le nom de famille des héros est Morgaz. Quelques années après la parution du roman, une pièce\nintitulée Simon Morgaz fut jouée en 1896.",
|
||
"libraryCatalog": "Verniana-Jules Verne Studies",
|
||
"pages": "97–104",
|
||
"url": "http://www.verniana.org/volumes/07/Resumes/AlcideMorgaz.html",
|
||
"volume": "7",
|
||
"shortTitle": "Alcide Poitrineux et Simon Morgaz",
|
||
"attachments": [
|
||
{
|
||
"title": "Full text PDF",
|
||
"mimeType": "application/pdf"
|
||
},
|
||
{
|
||
"title": "Snapshot",
|
||
"mimeType": "text/html"
|
||
}
|
||
],
|
||
"tags": [],
|
||
"notes": [],
|
||
"seeAlso": []
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"type": "web",
|
||
"url": "http://www.verniana.org/volumes/03/Abstracts/Garmt.html",
|
||
"items": [
|
||
{
|
||
"itemType": "journalArticle",
|
||
"title": "Sur la trace des “kritiskshalhen” du professeur Friedrich",
|
||
"creators": [
|
||
{
|
||
"firstName": "Garmt de",
|
||
"lastName": "Vries-Uiterweerd",
|
||
"creatorType": "author"
|
||
}
|
||
],
|
||
"ISSN": "1565-8872",
|
||
"abstractNote": "The \"ultra X rays of professor Friedrich of Elbing\" that Jules Verne mentions in Le Testament d’un excentrique do not come from the\nauthor's imagination. The trace of their discovery can be followed from a meeting of the Vienna Academy of Science to an article in the Revue scientifique, which Jules\nVerne used to read.",
|
||
"libraryCatalog": "Verniana-Jules Verne Studies",
|
||
"pages": "125–130",
|
||
"url": "http://www.verniana.org/volumes/03/Abstracts/Garmt.html",
|
||
"volume": "3",
|
||
"attachments": [
|
||
{
|
||
"title": "Full text PDF",
|
||
"mimeType": "application/pdf"
|
||
},
|
||
{
|
||
"title": "Snapshot",
|
||
"mimeType": "text/html"
|
||
}
|
||
],
|
||
"tags": [],
|
||
"notes": [],
|
||
"seeAlso": []
|
||
}
|
||
]
|
||
}
|
||
]
|
||
/** END TEST CASES **/
|