From 193ce6257f9f95f2d7e90ae85ca6980182a48245 Mon Sep 17 00:00:00 2001 From: yunusong Date: Thu, 4 Jan 2018 07:59:56 -0500 Subject: [PATCH] Kstudy translator (#1308) Using RIS data and author tweaks --- KStudy.js | 632 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 632 insertions(+) create mode 100644 KStudy.js diff --git a/KStudy.js b/KStudy.js new file mode 100644 index 00000000000..4829528dde9 --- /dev/null +++ b/KStudy.js @@ -0,0 +1,632 @@ +{ + "translatorID": "b298ca93-0010-48f5-97fb-e9923519a380", + "label": "KStudy", + "creator": "Yunwoo Song, Frank Bennett, Philipp Zumstein", + "target": "^https?://[^/]+\\.kstudy\\.com", + "minVersion": "3.0", + "maxVersion": "", + "priority": 100, + "inRepository": true, + "translatorType": 4, + "browserSupport": "gcsibv", + "lastUpdated": "2018-01-03 13:10:00" +} + +/* + ***** BEGIN LICENSE BLOCK ***** + + KISS (Korean Studies Information Service System) Translator + Copyright © 2017-2018 Yunwoo Song, Frank Bennett, and Philipp Zumstein + + 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 (/\bkey=(\d+)\b/.test(url)) { + if (url.includes('/thesis/thesis-view.asp')) { + return "journalArticle"; + } else if (url.includes('/public2-article.asp')) { + // these are reports and working paper series but with publicaton name, + // volume, issue numbers; thus handled as journal articles as well + return "journalArticle"; + } else if (url.includes('/public3-article.asp')) { + return "report"; + } + } + if (getSearchResults(doc, true)) { + return "multiple"; + } +} + +function getSearchResults(doc, checkOnly) { + var items = {}; + var found = false; + var rows = ZU.xpath(doc, '//div[contains(@class, "thesis-info")]/h5/a'); + for (var i=0; i item.title.length/2 && item.title.toUpperCase() == item.title) { + item.title = ZU.capitalizeTitle(item.title, true); + } + //remove space before colon in title + item.title = item.title.replace(/\s+:/, ":"); + // sometimes the author tags in RIS are empty and therefore we + // try to scrape author names also directly + if (item.creators.length == 0) { + item.creators = scrapeAuthorsDirectly(doc, url); + } else { + // romanized Korean names with first and last name are splitted + // wrongly into two AU tags in RIS and therefore we scrape + // author names directly here + let firstName = item.creators[0].lastName; + let latinCharacters = firstName.match(/[\u{0000}-\u{00FF}]/ug); + if (!item.creators[0].firstName && latinCharacters && latinCharacters.length == firstName.length) { + item.creators = scrapeAuthorsDirectly(doc, url); + } + } + if (item.issue && item.issue == "0") { + delete item.issue; + } + item.language = "ko-KR"; + item.complete(); + }); + translator.translate(); + }); +} + + +function scrapeAuthorsDirectly(doc, url) { + var creators = []; + var writers = ZU.xpathText(doc, '//div[@class="writers"]'); + if (writers) { + var creatorsList = writers.split(','); + for (var i=0; i