{ "translatorID": "83501b8c-1033-4722-ae50-a77d67271ef7", "label": "Library Catalog (OPALS)", "creator": "Opals", "target": "^https?://[^?#&]+/bin/(search|pf|rs)", "minVersion": "3.0", "maxVersion": "", "priority": 250, "inRepository": true, "translatorType": 4, "browserSupport": "gcsib", "lastUpdated": "2014-08-26 04:06:03" } /* Opals Translator Copyright (C) 2014 Thai Pham This program is free software: you can redistribute it and/or modify it under the terms of the GNU 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 GNU General Public License along with this program. If not, see . */ function detectWeb(doc, url) { var titles = getTitleList(doc); var count = titles.length; if (count == 1) return "book"; else if (count > 1) return "multiple"; } //============================================================================== function doWeb(doc, url) { var titles = getTitleList(doc); var items = {}; if (titles.length == 1) { scrape(titles[0].rid, url); } else if (titles.length > 1) { for (var i = 0; i < titles.length; i++) { items[titles[i].rid] = titles[i].title; } Zotero.selectItems(items, function (items) { if (!items) { return true; } for (var rid in items) { scrape(rid, url); } }); } } //============================================================================== function scrape(rid, url) { var marcurl = "/bin/ajax/getMarc?format=usmarc&rid=" + rid; var baseUrl = getUrlBase(url); Zotero.Utilities.HTTP.doGet(marcurl, function (text) { var translator = Zotero.loadTranslator("import"); translator.setTranslator("a6ee60df-1ddc-4aae-bb25-45e0537be973"); translator.setString(text); translator.setHandler("itemDone", function (obj, item) { // adding record URL item.attachments = [{ url: baseUrl + "/bin/search/recDetailPage?rid=" + rid, title: "Library Catalog Entry Permalink", mimeType: "text/html", snapshot: false }]; item.complete(); }); translator.translate(); }); } //============================================================================== function getUrlBase(url) { var rs; if (rs = url.match(/(https?:\/\/.*?)\//)) { return rs[1]; } return null; } //============================================================================== function getTitleList(doc) { var items = []; var els = doc.getElementsByName("bib_rid"); for (var i = 0; i < els.length; i++) { if (els[i].tagName == 'INPUT' && els[i].getAttribute('type') == 'checkbox') { var title = els[i].getAttribute("bib_title").trim(); var rid = els[i].value.trim(); if (rid && rid.search(/^[1-9][0-9]*$/) != -1 && title) { items.push({ rid: rid, title: title }); } } } return items; } /** BEGIN TEST CASES **/ var testCases = [{ "type": "web", "url": "http://cogent.opalsinfo.net/bin/search/recDetailPage?rid=32857", "items": [{ "itemType": "book", "creators": [{ "firstName": "Edgar Allan", "lastName": "Poe", "creatorType": "author" }, { "firstName": "Philip", "lastName": "Pullman", "creatorType": "contributor" }], "notes": [{ "note": "Includes bibliographical references and indexes" }, { "note": "Dreams -- The lake -- Sonnet-- to science -- [Alone] -- Introduction -- To Helen -- Israfel -- The Valley of unrest -- The city in the sea -- To one in paradise -- The coliseum -- The Haunted palace -- The conqueror worm -- Dream-land -- Eulalie -- The Raven -- [\"Deep in earth\"] -- To M.L.S. -- Ulalume, a ballad -- The bells -- To Helen [Whitman] -- A dream within a dream -- For Annie -- Eldorado -- To my mother -- Annabel Lee" }, { "note": "A collection of twenty-six poems by nineteenth-century American poet Edgar Allen Poe" }], "tags": [ "Poetry", "American poetry", "Ravens", "Fantasy poetry, American" ], "seeAlso": [], "attachments": [{ "url": "http://cogent.opalsinfo.net/bin/search/recDetailPage?rid=32857", "title": "Library Catalog Entry Permalink", "mimeType": "text/html", "snapshot": false }], "ISBN": "0439227135", "title": "The raven and other poems", "place": "New York", "publisher": "Scholastic", "date": "2000", "numPages": "73", "series": "Scholastic classics", "callNumber": "811 POE", "libraryCatalog": "Library Catalog (OPALS)" }] }, { "type": "web", "url": "http://cogent.opalsinfo.net/bin/search/recDetailPage?rid=58224", "items": [{ "itemType": "book", "creators": [{ "firstName": "Chris", "lastName": "Oxlade", "creatorType": "author" }], "notes": [{ "note": "Discusses the phenomenon of unidentified flying objects (UFOs), including notable sightings throughout history and possible explanations for them" }], "tags": [ "Unidentified flying objects (UFOs)", "Sightings and encounters", "Science", "Miscellanea", "Curiosities and wonders" ], "seeAlso": [], "attachments": [{ "url": "http://cogent.opalsinfo.net/bin/search/recDetailPage?rid=58224", "title": "Library Catalog Entry Permalink", "mimeType": "text/html", "snapshot": false }], "ISBN": "1575728060", "title": "The Mystery of UFOs", "edition": "ed", "place": "Chicago, IL", "publisher": "Heinemann Library", "date": "1999", "numPages": "32", "series": "Can science solve?", "callNumber": "001.942 OXL", "libraryCatalog": "Library Catalog (OPALS)" }] }] /** END TEST CASES **/