| 1 | { |
|---|
| 2 | "translatorID":"46291dc3-5cbd-47b7-8af4-d009078186f6", |
|---|
| 3 | "translatorType":4, |
|---|
| 4 | "label":"CiNii", |
|---|
| 5 | "creator":"Michael Berkowitz and Mitsuo Yoshida", |
|---|
| 6 | "target":"http://ci.nii.ac.jp/", |
|---|
| 7 | "minVersion":"1.0.0b4.r5", |
|---|
| 8 | "maxVersion":"", |
|---|
| 9 | "priority":100, |
|---|
| 10 | "inRepository":true, |
|---|
| 11 | "lastUpdated":"2010-05-20 04:00:00" |
|---|
| 12 | } |
|---|
| 13 | |
|---|
| 14 | function detectWeb(doc, url) { |
|---|
| 15 | if (url.match(/naid/)) { |
|---|
| 16 | return "journalArticle"; |
|---|
| 17 | } else if (doc.evaluate('//a[contains(@href, "/naid/")]', doc, null, XPathResult.ANY_TYPE, null).iterateNext()) { |
|---|
| 18 | return "multiple"; |
|---|
| 19 | } |
|---|
| 20 | } |
|---|
| 21 | |
|---|
| 22 | function doWeb(doc, url) { |
|---|
| 23 | var n = doc.documentElement.namespaceURI; |
|---|
| 24 | var ns = n ? function(prefix) { |
|---|
| 25 | if (prefix == 'x') return n; else return null; |
|---|
| 26 | } : null; |
|---|
| 27 | var arts = new Array(); |
|---|
| 28 | if (detectWeb(doc, url) == "multiple") { |
|---|
| 29 | var items = new Object(); |
|---|
| 30 | var links = doc.evaluate('//a[contains(@href, "/naid/")]', doc, ns, XPathResult.ANY_TYPE, null); |
|---|
| 31 | var link; |
|---|
| 32 | while (link = links.iterateNext()) { |
|---|
| 33 | items[link.href] = Zotero.Utilities.trimInternal(link.textContent); |
|---|
| 34 | } |
|---|
| 35 | items = Zotero.selectItems(items); |
|---|
| 36 | for (var i in items) { |
|---|
| 37 | arts.push(i); |
|---|
| 38 | } |
|---|
| 39 | } else { |
|---|
| 40 | arts = [url]; |
|---|
| 41 | } |
|---|
| 42 | Zotero.Utilities.processDocuments(arts, function(doc) { |
|---|
| 43 | var biblink = 'http://ci.nii.ac.jp/export?fileType=2&docSelect=' + doc.evaluate('//input[@name="docSelect"]', doc, ns, XPathResult.ANY_TYPE, null).iterateNext().value; |
|---|
| 44 | var newurl = doc.location.href; |
|---|
| 45 | var tags = new Array(); |
|---|
| 46 | if (doc.evaluate('//a[@rel="tag"]', doc, ns, XPathResult.ANY_TYPE, null).iterateNext()) { |
|---|
| 47 | var kws = doc.evaluate('//a[@rel="tag"]', doc, ns, XPathResult.ANY_TYPE, null); |
|---|
| 48 | var kw; |
|---|
| 49 | while (kw = kws.iterateNext()) { |
|---|
| 50 | tags.push(Zotero.Utilities.trimInternal(kw.textContent)); |
|---|
| 51 | } |
|---|
| 52 | } |
|---|
| 53 | var abstractNote; |
|---|
| 54 | if (doc.evaluate('//div[@class="abstract"]', doc, ns, XPathResult.ANY_TYPE, null).iterateNext()) { |
|---|
| 55 | abstractNote = doc.evaluate('//div[@class="abstract"]', doc, ns, XPathResult.ANY_TYPE, null).iterateNext().textContent; |
|---|
| 56 | } |
|---|
| 57 | Zotero.Utilities.HTTP.doGet(biblink, function(text) { |
|---|
| 58 | var trans = Zotero.loadTranslator("import"); |
|---|
| 59 | trans.setTranslator("9cb70025-a888-4a29-a210-93ec52da40d4"); |
|---|
| 60 | trans.setString(text); |
|---|
| 61 | trans.setHandler("itemDone", function(obj, item) { |
|---|
| 62 | item.url = newurl; |
|---|
| 63 | item.attachments = [{url:item.url, title:item.title + " Snapshot", mimeType:"text/html"}]; |
|---|
| 64 | item.tags = tags; |
|---|
| 65 | item.abstractNote = abstractNote; |
|---|
| 66 | item.complete(); |
|---|
| 67 | }); |
|---|
| 68 | trans.translate(); |
|---|
| 69 | }); |
|---|
| 70 | }, function() {Zotero.done();}); |
|---|
| 71 | Zotero.wait(); |
|---|
| 72 | } |
|---|