Ticket #1431: CiNii.js

File CiNii.js, 2.4 KB (added by ceekz, 6 years ago)
Line 
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
14function 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
22function 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}