zotero-db/translators/BOE.js

230 lines
6.5 KiB
JavaScript

{
"translatorID": "3f1b68b1-8ee7-4ab7-a514-185d72b2f80d",
"label": "BOE",
"creator": "Félix Brezo (@febrezo)",
"target": "^https?://([a-z]+\\.)?boe\\.es/",
"minVersion": "3.0",
"maxVersion": "",
"priority": 100,
"inRepository": true,
"translatorType": 4,
"browserSupport": "gcsibv",
"lastUpdated": "2021-07-26 17:07:40"
}
/*
BOE Translator
Copyright (C) 2020-2021 Félix Brezo, felixbrezo@disroot.org
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 General Public License for more details.
You should have received a copy of the Affero GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
function detectWeb(doc, url) {
if (url.includes("diario_boe") || url.includes("www.boe.es/eli") || url.includes("/doc.php")) {
return "statute";
}
return false;
}
function doWeb(doc, url) {
var resourceType = detectWeb(doc, url);
var newItem = new Zotero.Item(resourceType);
var metadataUri;
if (!url.includes("/xml")) {
var index = 0;
while (true) {
index++;
metadataUri = ZU.xpathText(doc, "(//meta[@property='http://data.europa.eu/eli/ontology#is_embodied_by'])[" + index + "]/@resource");
if (!metadataUri || metadataUri.includes("/xml")) {
break;
}
}
}
else {
metadataUri = url;
}
Zotero.Utilities.HTTP.doGet(metadataUri, function (resText) {
// Clean and parse metadata web
resText = resText.replace(/<!DOCTYPE[^>]*>/, "").replace(/<\?xml[^>]*\?>/, "");
resText = Zotero.Utilities.trim(resText);
var parser = new DOMParser();
var metadataDoc = parser.parseFromString(resText, "text/xml");
// Start scraping
var tmpAuthor = ZU.xpathText(metadataDoc, "//departamento");
if (tmpAuthor) {
newItem.creators.push({ lastName: tmpAuthor, creatorType: "author", fieldMode: 1 });
}
var tmpDate = ZU.xpathText(metadataDoc, "//fecha_publicacion");
newItem.dateEnacted = ZU.strToISO(tmpDate.substring(0, 4) + "/" + tmpDate.substring(4, 6) + "/" + tmpDate.substring(6, 8));
newItem.nameOfAct = ZU.xpathText(metadataDoc, "//titulo").replace(/\.$/, ""); // Remove trailing dot
newItem.section = ZU.xpathText(metadataDoc, "//seccion");
newItem.pages = ZU.xpathText(metadataDoc, "//pagina_inicial") + "-" + ZU.xpathText(metadataDoc, "//pagina_final");
newItem.session = ZU.xpathText(metadataDoc, "//diario") + " núm. " + ZU.xpathText(metadataDoc, "//diario_numero");
newItem.codeNumber = ZU.xpathText(metadataDoc, "//identificador");
newItem.publicLawNumber = ZU.xpathText(metadataDoc, "//rango") + " " + ZU.xpathText(metadataDoc, "//numero_oficial");
newItem.url = ZU.xpathText(metadataDoc, "//url_eli");
// Adding the attachment
newItem.attachments.push({
title: "Snapshot",
mimeType: "text/html",
url: url
});
newItem.complete();
});
}/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "https://www.boe.es/eli/es/rd/2020/06/30/614",
"items": [
{
"itemType": "statute",
"nameOfAct": "Real Decreto 614/2020, de 30 de junio, por el que se establece una cualificación profesional de la familia profesional Comercio y Marketing, que se incluye en el Catálogo Nacional de Cualificaciones Profesionales",
"creators": [
{
"lastName": "Ministerio de Educación y Formación Profesional",
"creatorType": "author",
"fieldMode": 1
}
],
"dateEnacted": "2020-07-20",
"codeNumber": "BOE-A-2020-8150",
"pages": "53856-53876",
"publicLawNumber": "Real Decreto 614/2020",
"section": "1",
"session": "Boletín Oficial del Estado núm. 197",
"url": "https://www.boe.es/eli/es/rd/2020/06/30/614",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.boe.es/eli/es/rd/2020/06/30/614/dof/spa/xml",
"items": [
{
"itemType": "statute",
"nameOfAct": "Real Decreto 614/2020, de 30 de junio, por el que se establece una cualificación profesional de la familia profesional Comercio y Marketing, que se incluye en el Catálogo Nacional de Cualificaciones Profesionales",
"creators": [
{
"lastName": "Ministerio de Educación y Formación Profesional",
"creatorType": "author",
"fieldMode": 1
}
],
"dateEnacted": "2020-07-20",
"codeNumber": "BOE-A-2020-8150",
"pages": "53856-53876",
"publicLawNumber": "Real Decreto 614/2020",
"section": "1",
"session": "Boletín Oficial del Estado núm. 197",
"url": "https://www.boe.es/eli/es/rd/2020/06/30/614",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.boe.es/diario_boe/xml.php?id=BOE-A-1978-31229",
"items": [
{
"itemType": "statute",
"nameOfAct": "Constitución Española",
"creators": [
{
"lastName": "Cortes Generales",
"creatorType": "author",
"fieldMode": 1
}
],
"dateEnacted": "1978-12-29",
"codeNumber": "BOE-A-1978-31229",
"pages": "29313-29424",
"publicLawNumber": "Constitución",
"section": "1",
"session": "Boletín Oficial del Estado núm. 311",
"url": "https://www.boe.es/eli/es/c/1978/12/27/(1)",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "https://www.boe.es/buscar/doc.php?id=BOE-A-1978-31229",
"items": [
{
"itemType": "statute",
"nameOfAct": "Constitución Española",
"creators": [
{
"lastName": "Cortes Generales",
"creatorType": "author",
"fieldMode": 1
}
],
"dateEnacted": "1978-12-29",
"codeNumber": "BOE-A-1978-31229",
"pages": "29313-29424",
"publicLawNumber": "Constitución",
"section": "1",
"session": "Boletín Oficial del Estado núm. 311",
"url": "https://www.boe.es/eli/es/c/1978/12/27/(1)",
"attachments": [
{
"title": "Snapshot",
"mimeType": "text/html"
}
],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/