{ "translatorID": "587709d3-80c5-467d-9fc8-ed41c31e20cf", "label": "eLibrary.ru", "creator": "Avram Lyon", "target": "^https?://(www\\.)?elibrary\\.ru/", "minVersion": "2.1", "maxVersion": "", "priority": 100, "inRepository": true, "translatorType": 4, "browserSupport": "gcsbv", "lastUpdated": "2020-03-09 18:50:52" } /* ***** BEGIN LICENSE BLOCK ***** eLibrary.ru Translator Copyright © 2010-2011 Avram Lyon, ajlyon@gmail.com 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 . ***** END LICENSE BLOCK ***** */ function detectWeb(doc, url) { if (url.match(/\/item.asp/)) { return getDocType(doc); } else if (url.match(/\/(query_results|contents|org_items|itembox_items)\.asp/)) { return "multiple"; } return false; } function doWeb(doc, url) { var articles = []; if (detectWeb(doc, url) == "multiple") { var results = ZU.xpath(doc, '//table[@id="restab"]/tbody/tr[starts-with(@id, "arw")]/td[2]'); // Zotero.debug('results.length: ' + results.length); var items = {}; for (let i = 0; i < results.length; i++) { // Zotero.debug('result [' + i + '] text: ' + results[i].textContent); var title = ZU.xpathText(results[i], './a'); var uri = ZU.xpathText(results[i], ' ./a/@href'); if (!title || !uri) continue; items[uri] = fixCasing(title); } Zotero.selectItems(items, function (items) { if (!items) { return; } for (let i in items) { articles.push(i); } Zotero.Utilities.processDocuments(articles, scrape); }); } else { scrape(doc, url); } } function fixCasing(string) { if (string && string == string.toUpperCase()) { return ZU.capitalizeTitle(string, true); } else return string; } function getDocType(doc) { var docType = ZU.xpathText(doc, '//tr/td/text()[contains(., "Тип:")]/following-sibling::*[1]'); var itemType; switch (docType) { case "обзорная статья": case "статья в журнале - научная статья": case "научная статья": case "статья в журнале": case "статья в открытом архиве": itemType = "journalArticle"; break; case "статья в сборнике трудов конференции": itemType = "conferencePaper"; break; case "учебное пособие": case "монография": itemType = "book"; break; case "публикация в сборнике трудов конференции": itemType = "conferencePaper"; break; default: Zotero.debug("Unknown type: " + docType + ". Using 'journalArticle'"); itemType = "journalArticle"; break; } return itemType; } function scrape(doc, url) { var item = new Zotero.Item(); item.itemType = getDocType(doc); item.title = fixCasing(doc.title); item.url = url; var rightPart = doc.getElementById("leftcol").nextSibling; var centralColumn = ZU.xpath(rightPart, './table/tbody/tr[2]/td[@align="left"]'); var datablock = ZU.xpath(centralColumn, './div[1]'); var authors = ZU.xpath(datablock, './/table[1]//b'); // Zotero.debug('authors.length: ' + authors.length); for (let i = 0; i < authors.length; i++) { var dirty = authors[i].textContent; // Zotero.debug('author[' + i + '] text: ' + dirty); /* Common author field formats are: (1) "LAST FIRST PATRONIMIC" (2) "LAST F. P." || "LAST F.P." || "LAST F.P" || "LAST F." In all these cases, we put comma after LAST for `ZU.cleanAuthor()` to work. Other formats are rare, but possible, e.g. "ВАН ДЕ КЕРЧОВЕ Р." == "Van de Kerchove R.". They go to single-field mode (assuming they got no comma). */ var nameFormat1RE = new ZU.XRegExp("^\\p{Letter}+\\s\\p{Letter}+\\s\\p{Letter}+$"); var nameFormat2RE = new ZU.XRegExp("^\\p{Letter}+\\s\\p{Letter}\\.(\\s?\\p{Letter}\\.?)?$"); var isFormat1 = ZU.XRegExp.test(dirty, nameFormat1RE); var isFormat2 = ZU.XRegExp.test(dirty, nameFormat2RE); if (isFormat1 || isFormat2) { // add comma before the first space dirty = dirty.replace(/^([^\s]*)(\s)/, '$1, '); } var cleaned = ZU.cleanAuthor(dirty, "author", true); /* Now `cleaned.firstName` is: (1) "FIRST PATRONIMIC" (2) "F. P." || "F." The `fixCasing()` makes 2nd letter lowercase sometimes, for example, "S. V." -> "S. v.", but "S. K." -> "S. K.". Thus, we can only apply it to Format1 . */ if (isFormat1) { // "FIRST PATRONIMIC" -> "First Patronimic" cleaned.firstName = fixCasing(cleaned.firstName); } if (cleaned.firstName === undefined) { // Unable to parse. Restore punctuation. cleaned.fieldMode = true; cleaned.lastName = dirty; } cleaned.lastName = fixCasing(cleaned.lastName, true); // Skip entries with an @ sign-- email addresses slip in otherwise if (!cleaned.lastName.includes("@")) item.creators.push(cleaned); } var mapping = { Издательство: "publisher", "Дата депонирования": "date", "Год издания": "date", Год: "date", Том: "volume", Номер: "issue", ISSN: "ISSN", "Число страниц": "pages", // e.g. "83" Страницы: "pages", // e.g. "10-16" Язык: "language", "Место издания": "place" }; for (let key in mapping) { var t = ZU.xpathText(datablock, './/tr/td/text()[contains(., "' + key + ':")]/following-sibling::*[1]'); if (t) { item[mapping[key]] = t; } } /* // Times-cited in Russian-Science-Citation-Index. // This value is hardly useful for most users, would just clutter "extra" field. // Keeping this code just-in-case. var rsci = ZU.xpathText(doc, '//tr/td/text()[contains(., "Цитирований в РИНЦ")]/following-sibling::*[2]'); Zotero.debug("Russian Science Citation Index: " + rsci); if (rsci) item.extra = "Цитируемость в РИНЦ: " + rsci; */ var journalBlock = ZU.xpath(datablock, './table/tbody[tr[1]/td/font[contains(text(), "ЖУРНАЛ:")]]/tr[2]/td[2]'); if (!item.publicationTitle) item.publicationTitle = ZU.xpathText(journalBlock, ".//a[1]"); item.publicationTitle = fixCasing(item.publicationTitle); var tags = ZU.xpath(datablock, './table[tbody/tr/td/font[contains(text(), "КЛЮЧЕВЫЕ СЛОВА:")]]//tr[2]/td/a'); for (let j = 0; j < tags.length; j++) { item.tags.push(fixCasing(tags[j].textContent)); } item.abstractNote = ZU.xpathText(datablock, './table/tbody/tr[td/font[text() = "АННОТАЦИЯ:"]]/following-sibling::*[1]'); // Language to RFC-4646 code switch (item.language) { case "русский": item.language = "ru"; break; case "английский": item.language = "en"; break; default: Zotero.debug("Unknown language: " + item.language + " - keeping as-is."); break; } item.DOI = ZU.xpathText(doc, '/html/head/meta[@name="doi"]/@content'); /* var pdf = false; // Now see if we have a free PDF to download var pdfImage = doc.evaluate('//a/img[@src="/images/pdf_green.gif"]', doc, null,XPathResult.ANY_TYPE, null).iterateNext(); if (pdfImage) { // A green PDF is a free one. We need to construct the POST request var postData = [], postField; var postNode = doc.evaluate('//form[@name="results"]/input', doc, null,XPathResult.ANY_TYPE, null); while ((postField = postNode.iterateNext()) !== null) { postData.push(postField.name + "=" +postField.value); } postData = postData.join("&"); Zotero.debug(postData + postNode.iterateNext()); Zotero.Utilities.HTTP.doPost('http://elibrary.ru/full_text.asp', postData, function(text) { var href = text.match(/http:\/\/elibrary.ru\/download\/.*?\.pdf/)[0]; pdf = {url:href, title:"eLibrary.ru полный текст", mimeType:"application/pdf"}; }); }*/ item.complete(); } /** BEGIN TEST CASES **/ var testCases = [ { "type": "web", "url": "https://elibrary.ru/org_items.asp?orgsid=3326", "items": "multiple" }, { "type": "web", "url": "https://elibrary.ru/item.asp?id=9541154", "items": [ { "itemType": "journalArticle", "title": "Иноязычные заимствования в художественной прозе на иврите в XX в", "creators": [ { "firstName": "М. В.", "lastName": "Свет", "creatorType": "author" } ], "date": "2007", "ISSN": "0320-8095", "issue": "1", "language": "ru", "libraryCatalog": "eLibrary.ru", "pages": "40-58", "publicationTitle": "Вестник Московского Университета. Серия 13: Востоковедение", "url": "https://elibrary.ru/item.asp?id=9541154", "attachments": [], "tags": [], "notes": [], "seeAlso": [] } ] }, { "type": "web", "url": "https://elibrary.ru/item.asp?id=17339044", "items": [ { "itemType": "journalArticle", "title": "Использование Молекулярно-Генетических Методов Установления Закономерностей Наследования Для Выявления Доноров Значимых Признаков Яблони", "creators": [ { "firstName": "Иван Иванович", "lastName": "Супрун", "creatorType": "author" }, { "firstName": "Елена Владимировна", "lastName": "Ульяновская", "creatorType": "author" }, { "firstName": "Евгений Николаевич", "lastName": "Седов", "creatorType": "author" }, { "firstName": "Галина Алексеевна", "lastName": "Седышева", "creatorType": "author" }, { "firstName": "Зоя Михайловна", "lastName": "Серова", "creatorType": "author" } ], "date": "2012", "ISSN": "2219-5335", "abstractNote": "На основе полученных новых знаний по формированию и проявлению ценных селекционных признаков выделены новые доноры и комплексные доноры значимых признаков яблони.", "issue": "13 (1)", "language": "ru", "libraryCatalog": "eLibrary.ru", "pages": "1-10", "publicationTitle": "Плодоводство И Виноградарство Юга России", "url": "https://elibrary.ru/item.asp?id=17339044", "attachments": [], "tags": [ { "tag": "Apple-Tree" }, { "tag": "Immunity" }, { "tag": "Scab" }, { "tag": "Variety" }, { "tag": "Иммунитет" }, { "tag": "Парша" }, { "tag": "Сорт" }, { "tag": "Яблоня" } ], "notes": [], "seeAlso": [] } ] }, { "type": "web", "url": "https://elibrary.ru/item.asp?id=21640363", "items": [ { "itemType": "journalArticle", "title": "На пути к верификации C программ. Часть 3. Перевод из языка C-light в язык C-light-kernel и его формальное обоснование", "creators": [ { "firstName": "В. А.", "lastName": "Непомнящий", "creatorType": "author" }, { "firstName": "И. С.", "lastName": "Ануреев", "creatorType": "author" }, { "firstName": "И. Н.", "lastName": "Михайлов", "creatorType": "author" }, { "firstName": "А. В.", "lastName": "Промский", "creatorType": "author" } ], "date": "14.06.2002", "abstractNote": "Описаны правила перевода из языка C-light в язык C-light-kernel, являющиеся основой двухуровневой схемы верификации C-программ. Для языка C-light предложена модифицированная операционная семантика. Модификация позволяет упростить как описание семантики сложных конструкций языка C-light, так и доказательство непротиворечивости аксиоматической семантики языка C-light-kernel. Определено понятие семантического расширения и проведено формальное обоснование корректности перевода. Предполагается реализовать правила перевода в системе верификации программ.", "issue": "097", "language": "ru", "libraryCatalog": "eLibrary.ru", "pages": "83", "url": "https://elibrary.ru/item.asp?id=21640363", "attachments": [], "tags": [], "notes": [], "seeAlso": [] } ] }, { "type": "web", "url": "https://elibrary.ru/item.asp?id=21665052", "items": [ { "itemType": "journalArticle", "title": "Информационно-поисковая полнотекстовая система \"Боярские списки XVIII века\"", "creators": [ { "firstName": "А. В.", "lastName": "Захаров", "creatorType": "author" } ], "date": "08.04.2005", "abstractNote": "В полнотекстовой электронной публикации (со статусом препринта), основанной по технологии реляционных баз данных, представлены боярские списки из коллекции документов Российского государственного архива древних актов и научной библиотеки Казанского федерального университета. Публикуемые документы составлялись Разрядным приказом и Сенатом для пофамильного учета думных и московских чинов (\"царедворцев\"). Ключевая археографическая проблема проектирования базы данных состоит в максимально адекватном отображении структуры и текстовых данных источника с возможностью поиска информации по нескольким параметрам. База данных \"Боярские списки XVIII века\" доступна в сети Интернет с 2003 г. Зарегистрирована ФГУП \"Информрегистр\" в 2005 г. Сфера применения: исследования по генеалогии, биографике, археографии, история России, преподавание исторической информатики. К настоящему времени в базе данных размещены полные тексты 14 боярских и чиновных списков 1700-1721 гг.", "issue": "0220510249", "language": "ru", "libraryCatalog": "eLibrary.ru", "url": "https://elibrary.ru/item.asp?id=21665052", "attachments": [], "tags": [ { "tag": "Археография" }, { "tag": "Боярские Списки" }, { "tag": "Информационная Система" }, { "tag": "Источниковедение" }, { "tag": "Московские Чины" }, { "tag": "Петр I" }, { "tag": "Полнотекстовая База Данных" }, { "tag": "Разрядный Приказ" }, { "tag": "Царедворцы" } ], "notes": [], "seeAlso": [] } ] }, { "type": "web", "url": "https://elibrary.ru/item.asp?id=20028198", "items": [ { "itemType": "book", "title": "Аппарат издания и правила оформления", "creators": [ { "firstName": "Людмила Павловна", "lastName": "Стычишина", "creatorType": "author" }, { "firstName": "А. В.", "lastName": "Хохлов", "creatorType": "author" } ], "language": "ru", "libraryCatalog": "eLibrary.ru", "publisher": "Изд-во Политехнического университета", "url": "https://elibrary.ru/item.asp?id=20028198", "attachments": [], "tags": [ { "tag": "Аппарат Издания" }, { "tag": "Издательское Дело" }, { "tag": "Культура. Наука. Просвещение" }, { "tag": "Оформление Изданий" }, { "tag": "Оформление Книги" }, { "tag": "Печать" }, { "tag": "Подготовка Рукописи И Графических Материалов К Изданию" }, { "tag": "Редакционно-Издательский Процесс" }, { "tag": "Российская Федерация" }, { "tag": "Теория И Практика Издательского Дела" }, { "tag": "Техническое Оформление" }, { "tag": "Учебное Пособие Для Высшей Школы" } ], "notes": [], "seeAlso": [] } ] }, { "type": "web", "url": "https://elibrary.ru/item.asp?id=38164350", "items": [ { "itemType": "journalArticle", "title": "Графики негладких контактных отображений на группах карно с сублоренцевой структурой", "creators": [ { "firstName": "М. Б.", "lastName": "Карманова", "creatorType": "author" } ], "date": "2019", "DOI": "10.31857/S0869-56524863275-279", "ISSN": "0869-5652", "abstractNote": "Для классов графиков -отображений нильпотентных градуированных групп доказана формула площади на сублоренцевых структурах произвольной глубины с многомерным временем.", "issue": "3", "language": "ru", "libraryCatalog": "eLibrary.ru", "pages": "275-279", "publicationTitle": "Доклады Академии Наук", "url": "https://elibrary.ru/item.asp?id=38164350", "volume": "486", "attachments": [], "tags": [ { "tag": "Contact Mapping" }, { "tag": "Graph-Mapping" }, { "tag": "Intrinsic Basis" }, { "tag": "Multidimensional Time" }, { "tag": "Nilpotent Graded Group" }, { "tag": "Sub-Lorentzian Structure" }, { "tag": "Surface Area" }, { "tag": "Внутренний Базис" }, { "tag": "Контактное Отображение" }, { "tag": "Многомерное Время" }, { "tag": "Нильпотентная Градуированная Группа" }, { "tag": "Отображение-График" }, { "tag": "Площадь Поверхности" }, { "tag": "Сублоренцева Структура" } ], "notes": [], "seeAlso": [] } ] }, { "type": "web", "url": "https://elibrary.ru/item.asp?id=30694319", "items": [ { "itemType": "conferencePaper", "title": "Intellectual Differentiation in the Structure of Students' Civil Identity", "creators": [ { "firstName": "M. K.", "lastName": "Akimova", "creatorType": "author" }, { "firstName": "E. I.", "lastName": "Gorbacheva", "creatorType": "author" }, { "firstName": "S. V.", "lastName": "Persiyantseva", "creatorType": "author" }, { "firstName": "S. V.", "lastName": "Yaroshevskaya", "creatorType": "author" } ], "date": "2017", "DOI": "10.15405/epsbs.2017.12.1", "language": "en", "libraryCatalog": "eLibrary.ru", "pages": "1-7", "url": "https://elibrary.ru/item.asp?id=30694319", "attachments": [], "tags": [], "notes": [], "seeAlso": [] } ] }, { "type": "web", "url": "https://elibrary.ru/item.asp?id=18310800", "items": [ { "itemType": "journalArticle", "title": "Обзор И Инвентаризация Археологических Раскопок В Долине Каракол (парк Уч-Энмек). Доклад Бельгийско-Российской Экспедиции В Алтайские Горы (2007-2008)", "creators": [ { "firstName": "Й.", "lastName": "Боургеоис", "creatorType": "author" }, { "firstName": "Щ.", "lastName": "Гхеыле", "creatorType": "author" }, { "firstName": "Р.", "lastName": "Гооссенс", "creatorType": "author" }, { "lastName": "Де Щулф А.", "creatorType": "author", "fieldMode": true }, { "firstName": "Е.", "lastName": "Дворников", "creatorType": "author" }, { "firstName": "А. В.", "lastName": "Ебел", "creatorType": "author" }, { "lastName": "Ван Хооф Л.", "creatorType": "author", "fieldMode": true }, { "firstName": "С.", "lastName": "Лоуте", "creatorType": "author" }, { "lastName": "Де Лангхе К.", "creatorType": "author", "fieldMode": true }, { "firstName": "А.", "lastName": "Малмендиер", "creatorType": "author" }, { "lastName": "Ван Де Керчове Р.", "creatorType": "author", "fieldMode": true }, { "firstName": "Р.", "lastName": "Цаппелле", "creatorType": "author" }, { "lastName": "Те Киефте Д.", "creatorType": "author", "fieldMode": true } ], "date": "2009", "abstractNote": "О результатах совместной бельгийско-российской археологической экспедиции в Парке Уч-Энмек (Горный Алтай) (2007-2008), занимавшейся изучением могил скифской культуры.", "issue": "1 (4)", "language": "ru", "libraryCatalog": "eLibrary.ru", "pages": "10-20", "publicationTitle": "Мир Евразии", "url": "https://elibrary.ru/item.asp?id=18310800", "attachments": [], "tags": [ { "tag": "Belgian-Russian Expedition" }, { "tag": "Karakol" }, { "tag": "Scythian Culture" }, { "tag": "Uch Enmek Park" }, { "tag": "Бельгийско-Русская Экспедиция" }, { "tag": "Каракол" }, { "tag": "Парк Уч-Энмек" }, { "tag": "Скифская Культура" } ], "notes": [], "seeAlso": [] } ] } ] /** END TEST CASES **/