2011-07-12

Beta Zotero translator for 博客來

在閱讀此篇之前,如果不了解什麼是 Zotero ,可以先閱讀我之前做的 Zotero 研究資源管理 的介紹。


最近在寫東西的時候,因為懶的打書目,所以相關的資料多會透過 Zotero with Firefox 將相關網站上的資料,進行收集與整理,用來建立自己的知識庫,透過文獻管理與網站進行文獻收集與整理的好處在於不用擔心會在撰寫資訊時,因為鍵盤不小心按錯導處找不到文獻的囧境。

可是當我在使用  Zotero 進行資料整理、文獻整理的過程,當在 政大圖書網交大圖書館等找不到相關的文獻資料時,中文書的部分就會需要在博客來網路書店進行檢查與資訊的校準,但是很可惜的是, Zotero 並沒有提供 博客來書店 的轉譯器,沒有辦法自動匯入文獻資料。只因為當時比較忙,一直沒有時間去寫一個博客來書店的 Zotero 轉譯器。在網路上搜尋的結果,只有 eddie96j 試做了一個博客來書店轉譯器的版本,很可惜的是目前也沒辦法使用了。

最近剛好忙到一個段落,為了以後工作方便,就花了半天的時間,看一下相關的文件,做了一個勉強可以使用的版本。

下載位置: Beta Zotero translator for 博客來https://docs.google.com/file/d/0B5zvyT2KzRiKS21hcjJSR0dRc28/edit#
使用方法:

  1. 博客來.js 檔放到 Zotero 資料目錄下的 translators 目錄中,在重新整理即可使用。
    • Zotero 的資料目錄放在置處可以透過
      • 偏好設定-->進階-->顯示資料目錄  


在目前的這一個  Beta 版,很多都沒能做。只能縮短一些些功夫,如果有精通 javascript  的人,也可以幫忙改一下,感恩了。


Javascript 的內容:


function detectWeb(doc, url) { if (doc.title.indexOf("博客來") != -1){ return "book";} //Zotero.debug(myXPathObject.iterateNext().textContent);


}
function doWeb(doc, url) { scrape(doc,url); }
function getItem(reftext,reText){ var item=reftext.match(reText); return (item!=null) ? item[1] : "none"; }
function scrape(doc,url) { var newItem= new Zotero.Item('book'); var item; var xpath="//div[@class=\"prd001\"]"; var titleRe= Zotero.Utilities.trimInternal(doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null).iterateNext().textContent); newItem.title=titleRe; newItem.bookTitle=titleRe;

var myXPath = '//ul[@class="prd002"]'; var myXPathObject = doc.evaluate(myXPath, doc, null, XPathResult.ANY_TYPE, null); var allRefText=myXPathObject.iterateNext().textContent; var reText=new RegExp("作者:(.*)"); var authors=getItem(allRefText,reText);

var reText=new RegExp("出版日期:(.*)"); temp=getItem(allRefText,reText); newItem.date=temp;
var reText=new RegExp("ISBN:(.*)"); temp=getItem(allRefText,reText); newItem.ISBN=temp;
var reText=new RegExp("出版社:(.*)"); temp=getItem(allRefText,reText); newItem.publisher=temp;
var aus = authors.split("、"); if ( aus != null){ for (var i=0; i< aus.length ; i++) { newItem.creators.push(Zotero.Utilities.cleanAuthor(aus[i], "author")); } }else{ newItem.creators.push(authors,"author"); } newItem.complete(); }
Related Posts Plugin for WordPress, Blogger...

2 則留言 :

  1. 感謝大大寫了這麼實用的小程式
    我也正困惑該如何從博客來得到書籍資訊
    但是大大的檔案似乎不見了
    可以請大大再重新放一次嗎
    萬分感謝

    回覆刪除
  2. Re: Jimmy
    檔案已經重新放上去了,但是這是一個 beta 版,還是有一些問題,抓取下來以後,還是要再自己檢查一下。
    目前沒有做到查詢列表輸入的部分,所以要點進單本書才有辦法正確的抓取。

    回覆刪除

,,