Created
March 14, 2013 18:20
-
-
Save pulipulichen/5163827 to your computer and use it in GitHub Desktop.
STPI Government Research Bulletin
Zotero Translator
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"translatorID": "0d6fbeb8-a7b6-4eec-8421-d2cbf5061a88", | |
"label": "STPI Government Research Bulletin", | |
"creator": "Pulipuli Chen", | |
"target": "^http?://grbsearch\\.stpi.narl\\.org\\.tw/GRB/", | |
"minVersion": "1.0", | |
"maxVersion": "", | |
"priority": 100, | |
"inRepository": true, | |
"translatorType": 5, | |
"browserSupport": "gcsi", | |
"lastUpdated": "2013-03-11 15:41:19" | |
} | |
/* FW LINE 57:6869c32952b1 */ function flatten(c){var b=new Array();for(var d in c){var e=c[d];if(e instanceof Array){b=b.concat(flatten(e))}else{b.push(e)}}return b}var FW={_scrapers:new Array()};FW._Base=function(){this.callHook=function(b,c,e,a){if(typeof this["hooks"]==="object"){var d=this["hooks"][b];if(typeof d==="function"){d(c,e,a)}}};this.evaluateThing=function(f,e,c){var b=typeof f;if(b==="object"){if(f instanceof Array){var d=this.evaluateThing;var a=f.map(function(g){return d(g,e,c)});return flatten(a)}else{return f.evaluate(e,c)}}else{if(b==="function"){return f(e,c)}else{return f}}}};FW.Scraper=function(a){FW._scrapers.push(new FW._Scraper(a))};FW._Scraper=function(a){for(x in a){this[x]=a[x]}this._singleFieldNames=["abstractNote","applicationNumber","archive","archiveLocation","artworkMedium","artworkSize","assignee","audioFileType","audioRecordingType","billNumber","blogTitle","bookTitle","callNumber","caseName","code","codeNumber","codePages","codeVolume","committee","company","conferenceName","country","court","date","dateDecided","dateEnacted","dictionaryTitle","distributor","docketNumber","documentNumber","DOI","edition","encyclopediaTitle","episodeNumber","extra","filingDate","firstPage","forumTitle","genre","history","institution","interviewMedium","ISBN","ISSN","issue","issueDate","issuingAuthority","journalAbbreviation","label","language","legalStatus","legislativeBody","letterType","libraryCatalog","manuscriptType","mapType","medium","meetingName","nameOfAct","network","number","numberOfVolumes","numPages","pages","patentNumber","place","postType","presentationType","priorityNumbers","proceedingsTitle","programTitle","programmingLanguage","publicLawNumber","publicationTitle","publisher","references","reportNumber","reportType","reporter","reporterVolume","rights","runningTime","scale","section","series","seriesNumber","seriesText","seriesTitle","session","shortTitle","studio","subject","system","thesisType","title","type","university","url","version","videoRecordingType","volume","websiteTitle","websiteType"];this._makeAttachments=function(p,b,g,t){if(g instanceof Array){g.forEach(function(k){this._makeAttachments(p,b,k,t)},this)}else{if(typeof g==="object"){var o=g.urls||g.url;var m=g.types||g.type;var f=g.titles||g.title;var q=g.snapshots||g.snapshot;var j=this.evaluateThing(o,p,b);var n=this.evaluateThing(f,p,b);var s=this.evaluateThing(m,p,b);var d=this.evaluateThing(q,p,b);if(!(j instanceof Array)){j=[j]}for(var l in j){var c=j[l];var h;var e;var r;if(s instanceof Array){h=s[l]}else{h=s}if(n instanceof Array){e=n[l]}else{e=n}if(d instanceof Array){r=d[l]}else{r=d}t.attachments.push({url:c,title:e,type:h,snapshot:r})}}}};if(this.itemTrans!==undefined){this.makeItems=this.itemTrans.makeItems}else{this.makeItems=function(o,b,m,c,l){var q=new Zotero.Item(this.itemType);q.url=b;for(var h in this._singleFieldNames){var n=this._singleFieldNames[h];if(this[n]){var g=this.evaluateThing(this[n],o,b);if(g instanceof Array){q[n]=g[0]}else{q[n]=g}}}var r=["creators","tags"];for(var f in r){var p=r[f];var d=this.evaluateThing(this[p],o,b);if(d){for(var e in d){q[p].push(d[e])}}}this._makeAttachments(o,b,this["attachments"],q);c(q,this,o,b);l([q])}}};FW._Scraper.prototype=new FW._Base;FW.MultiScraper=function(a){FW._scrapers.push(new FW._MultiScraper(a))};FW._MultiScraper=function(a){for(x in a){this[x]=a[x]}this._mkSelectItems=function(e,d){var b=new Object;for(var c in e){b[d[c]]=e[c]}return b};this._selectItems=function(d,c,e){var b=new Array();Zotero.selectItems(this._mkSelectItems(d,c),function(f){for(var g in f){b.push(g)}e(b)})};this._mkAttachments=function(g,d,f){var b=this.evaluateThing(this["attachments"],g,d);var c=new Object();if(b){for(var e in f){c[f[e]]=b[e]}}return c};this._makeChoices=function(f,p,c,d,h){if(f instanceof Array){f.forEach(function(k){this._makeTitlesUrls(k,p,c,d,h)},this)}else{if(typeof f==="object"){var m=f.urls||f.url;var e=f.titles||f.title;var n=this.evaluateThing(m,p,c);var j=this.evaluateThing(e,p,c);var l=(j instanceof Array);if(!(n instanceof Array)){n=[n]}for(var g in n){var b=n[g];var o;if(l){o=j[g]}else{o=j}h.push(b);d.push(o)}}}};this.makeItems=function(j,b,g,c,f){if(this.beforeFilter){var k=this.beforeFilter(j,b);if(k!=b){this.makeItems(j,k,g,c,f);return}}var e=[];var h=[];this._makeChoices(this["choices"],j,b,e,h);var d=this._mkAttachments(j,b,h);this._selectItems(e,h,function(m){if(!m){f([])}else{var l=[];var n=this.itemTrans;Zotero.Utilities.processDocuments(m,function(q){var p=q.documentURI;var o=n;if(o===undefined){o=FW.getScraper(q,p)}if(o===undefined){}else{o.makeItems(q,p,d[p],function(r){l.push(r);c(r,o,q,p)},function(){})}},function(){f(l)})}})}};FW._MultiScraper.prototype=new FW._Base;FW.DelegateTranslator=function(a){return new FW._DelegateTranslator(a)};FW._DelegateTranslator=function(a){for(x in a){this[x]=a[x]}this._translator=Zotero.loadTranslator(this.translatorType);this._translator.setTranslator(this.translatorId);this.makeItems=function(g,d,b,f,c){var e;Zotero.Utilities.HTTP.doGet(d,function(h){this._translator.setHandler("itemDone",function(k,j){e=j;if(b){j.attachments=b}});if(this.preProcess){h=this.preProcess(h)}this._translator.setString(h);this._translator.translate();f(e)},function(){c([e])})}};FW.DelegateTranslator.prototype=new FW._Scraper;FW._StringMagic=function(){this._filters=new Array();this.addFilter=function(a){this._filters.push(a);return this};this.split=function(a){return this.addFilter(function(b){return b.split(a).filter(function(c){return(c!="")})})};this.replace=function(c,b,a){return this.addFilter(function(d){if(d.match(c)){return d.replace(c,b,a)}else{return d}})};this.prepend=function(a){return this.replace(/^/,a)};this.append=function(a){return this.replace(/$/,a)};this.remove=function(b,a){return this.replace(b,"",a)};this.trim=function(){return this.addFilter(function(a){return Zotero.Utilities.trim(a)})};this.trimInternal=function(){return this.addFilter(function(a){return Zotero.Utilities.trimInternal(a)})};this.match=function(a,b){if(!b){b=0}return this.addFilter(function(d){var c=d.match(a);if(c===undefined||c===null){return undefined}else{return c[b]}})};this.cleanAuthor=function(b,a){return this.addFilter(function(c){return Zotero.Utilities.cleanAuthor(c,b,a)})};this.key=function(a){return this.addFilter(function(b){return b[a]})};this.capitalizeTitle=function(){if(arguments.length>0&&arguments[0]==true){return this.addFilter(function(a){return Zotero.Utilities.capitalizeTitle(a,true)})}else{return this.addFilter(function(a){return Zotero.Utilities.capitalizeTitle(a)})}};this.unescapeHTML=function(){return this.addFilter(function(a){return Zotero.Utilities.unescapeHTML(a)})};this.unescape=function(){return this.addFilter(function(a){return unescape(a)})};this._applyFilters=function(c,e){for(i in this._filters){c=flatten(c);c=c.filter(function(a){return((a!==undefined)&&(a!==null))});for(var d=0;d<c.length;d++){try{if((c[d]===undefined)||(c[d]===null)){continue}else{c[d]=this._filters[i](c[d],e)}}catch(b){c[d]=undefined;Zotero.debug("Caught exception "+b+"on filter: "+this._filters[i])}}c=c.filter(function(a){return((a!==undefined)&&(a!==null))})}return flatten(c)}};FW.PageText=function(){return new FW._PageText()};FW._PageText=function(){this._filters=new Array();this.evaluate=function(c){var b=[c.documentElement.innerHTML];b=this._applyFilters(b,c);if(b.length==0){return false}else{return b}}};FW._PageText.prototype=new FW._StringMagic();FW.Url=function(){return new FW._Url()};FW._Url=function(){this._filters=new Array();this.evaluate=function(d,c){var b=[c];b=this._applyFilters(b,d);if(b.length==0){return false}else{return b}}};FW._Url.prototype=new FW._StringMagic();FW.Xpath=function(a){return new FW._Xpath(a)};FW._Xpath=function(a){this._xpath=a;this._filters=new Array();this.text=function(){var b=function(c){if(typeof c==="object"&&c.textContent){return c.textContent}else{return c}};this.addFilter(b);return this};this.sub=function(b){var c=function(f,e){var d=e.evaluate(b,f,null,XPathResult.ANY_TYPE,null);if(d){return d.iterateNext()}else{return undefined}};this.addFilter(c);return this};this.evaluate=function(f){var e=f.evaluate(this._xpath,f,null,XPathResult.ANY_TYPE,null);var d=e.resultType;var c=new Array();if(d==XPathResult.STRING_TYPE){c.push(e.stringValue)}else{if(d==XPathResult.ORDERED_NODE_ITERATOR_TYPE||d==XPathResult.UNORDERED_NODE_ITERATOR_TYPE){var b;while((b=e.iterateNext())){c.push(b)}}}c=this._applyFilters(c,f);if(c.length==0){return false}else{return c}}};FW._Xpath.prototype=new FW._StringMagic();FW.detectWeb=function(e,b){for(var c in FW._scrapers){var d=FW._scrapers[c];var f=d.evaluateThing(d.itemType,e,b);var a=d.evaluateThing(d.detect,e,b);if(a.length>0&&a[0]){return f}}return undefined};FW.getScraper=function(b,a){var c=FW.detectWeb(b,a);return FW._scrapers.filter(function(d){return(d.evaluateThing(d.itemType,b,a)==c)&&(d.evaluateThing(d.detect,b,a))})[0]};FW.doWeb=function(c,a){var b=FW.getScraper(c,a);b.makeItems(c,a,[],function(f,e,g,d){e.callHook("scraperDone",f,g,d);if(!f.title){f.title=""}f.complete()},function(){Zotero.done()});Zotero.wait()}; | |
function detectWeb(doc, url) { | |
return FW.detectWeb(doc, url); | |
} | |
function doWeb(doc, url) { return FW.doWeb(doc, url); } | |
/** Reportes */ | |
FW.Scraper({ itemType : 'report', | |
detect : FW.Xpath('//*[@id="table1"]'), | |
title : FW.Xpath('//*[@id="table1"]/tbody/tr[1]/td[2]').text().trim(), | |
creators : FW.Xpath('//*[@id="table1"]/tbody/tr[9]/td[2]').text().trim().split(/,/).cleanAuthor("author"), | |
abstractNote : FW.Xpath('//*[@id="table1"]/tbody/tr[12]/td[2]').text().trim().replace(/查無中文摘要/, ''), | |
accessDate : "CURRENT_TIMESTAMP", | |
reportType : FW.Xpath('//*[@id="table1"]/tbody/tr[3]/td[4]').text().trim(), | |
date : FW.Xpath('//*[@id="table1"]/tbody/tr[7]/td[2]').text().trim() | |
.addFilter(function (_chinese_year) { | |
var _year = _chinese_year; | |
var _footer = "年"; | |
if (_year.substr((_year.length-_footer.length) , _year.length) == _footer) { | |
_year = _year.split(" "); | |
_year = parseInt(_year, 10) + 1911; | |
} | |
return _year; | |
}), | |
reportNumber : FW.Xpath('//*[@id="table1"]/tbody/tr[4]/td[2]').text().trim(), | |
institution : FW.Xpath('//*[@id="table1"]/tbody/tr[6]/td[2]').text().trim(), | |
tags : [FW.Xpath('//*[@id="table1"]/tbody/tr[10]/td[2]').text().trim().replace(/--/, '').split(";") | |
, FW.Xpath('//*[@id="table1"]/tbody/tr[11]/td[2]').text().trim().replace(/--/, '').split(";")] | |
}); | |
/** Search results */ | |
/* | |
FW.MultiScraper({ itemType : "multiple", | |
detect : FW.Xpath('//table[@class="sbody"]'), | |
choices : { | |
titles : FW.Xpath('/html/body/form[2]/table[1]/tbody/tr/td/table[3]/tbody/tr[1]/td[1]/table/tbody/tr[1]/td[2]/a').text(), | |
urls : FW.Xpath('/html/body/form[2]/table[1]/tbody/tr/td/table[3]/tbody/tr[1]/td[1]/table/tbody/tr[1]/td[2]/a').key('href').text() | |
//.replace(/amp;/, '') | |
//.prepend("http://grbsearch.stpi.narl.org.tw/GRB/") | |
.addFilter(function (s) { | |
//return encodeURI(s); | |
var _needle = ";highStr"; | |
var _pos; | |
for (var i = 0; i < s.length; i++) | |
{ | |
_pos = s[i].indexOf(_needle) - 4; | |
s[i] = s[i].substr(0, _pos); | |
s[i] = "result.jsp?id=1680148&plan_no=NSC97-2517-S166-001&plan_year=97&projkey=PF9709-1059&target=plan"; | |
} | |
//s = s.substr(0, _pos); | |
//return "http://grbsearch.stpi.narl.org.tw/GRB/result.jsp?id=995439&plan_no=NSC93-2411-H364-001&plan_year=93&projkey=PE9308-0844&target=plan&highStr=%E9%99%B3&check=0&pnchDesc=%E9%80%A2%E8%AE%8A%E4%B9%8B%E9%9A%9B%EF%BC%9A1940%E5%B9%B4%E4%BB%A3%E4%B8%AD%E8%A5%BF%E5%8F%B2%E5%AE%B6%E5%8F%8A%E5%8F%B2%E5%AD%B8%E6%80%9D%E6%83%B3%E4%B9%8B%E7%A0%94%E7%A9%B6---%E8%90%AC%E9%87%8C%E4%B9%BE%E5%9D%A4%E8%BF%B7%E5%8E%BB%E4%BD%8F%EF%BC%9A1940%E5%B9%B4%E4%BB%A3%E9%99%B3%E5%AF%85%E6%81%AA%E5%8F%B2%E5%AD%B8%E8%88%87%E4%BA%BA%E7%94%9F%E7%9A%84%E8%BD%89%E6%8A%98%28I%29"; | |
//return encodeURI("http://grbsearch.stpi.narl.org.tw/GRB/result.jsp?id=995439&plan_no=NSC93-2411-H364-001&plan_year=93&projkey=PE9308-0844&target=plan"); | |
return s; | |
}) | |
} | |
}); | |
*/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment