// ==UserScript== // @name douban_shenzhenLib // @name:zh-CN 深圳图书馆图书信息豆瓣脚本 // @namespace http://userscripts.org/scripts/show/116332 // @description Show book available info in douban book page, show book's douban score in Shenzhen Library book page // @description:zh-cn 为豆瓣书籍页面(book.douban.com)添加书籍在深圳图书馆的信息,预借链接,为深圳图书馆书籍信息页面添加书籍在豆瓣的评分,链接 // @license MIT License // @supportURL http://www.douban.com/note/180166013/ // @version 1.24.6 // @require http://code.jquery.com/jquery-1.4.4.min.js // @include http://book.douban.com/* // @include http://www.douban.com/doulist/* // @include http://www.szlib.org.cn/Search/searchdetail.jsp* // @include http://www.szlib.org.cn/Search/searchshow.jsp* // @include http://opac.nslib.cn/Search/searchdetail.jsp* // @include http://opac.nslib.cn/Search/searchshow.jsp* // @include http://www.szln.gov.cn/Search/searchdetail.jsp* // @include http://www.szln.gov.cn/Search/searchshow.jsp* // @include http://218.17.147.50/Search/searchdetail.jsp* // @include http://218.17.147.50/Search/searchshow.jsp* // @grant GM_getValue // @grant GM_setValue // @grant GM_addStyle // @grant GM_xmlhttpRequest // @grant GM_log // @grant GM_registerMenuCommand // @author morningSky // @refer books_recommend_THU, bean vine (49911) and others... // @updateDate 2014-11-26 /* @reason 1. 更新索书号,馆藏地点内容的布局 @end*/ // // @downloadURL none // ==/UserScript== /* * opac.nslib.cn 南山,szln.gov.cn 盐田,218.17.147.50 龙岗 */ var fDebug = false; var title, isbn; var SZLIB_HOST = 'http://www.szlib.org.cn/'; var LIBOPAC_URL = SZLIB_HOST + 'Search/searchshow.jsp?v_tablearray=bibliosm,serbibm,apabibibm,mmbibm,&v_book=on&sortfield=score&sorttype=desc&pageNum=10'; // 查询索书号 var LIBOPAC_URL_CALLNO = SZLIB_HOST + 'Search/getpreholding.jsp?v_curtable=bibliosm&v_recno='; var LIBBOOK_URL = SZLIB_HOST + 'Search/searchdetail.jsp?v_tablearray=bibliosm&v_curtable=bibliosm&site=null&v_recno='; var LIBQRYRESERVABLE_URL = SZLIB_HOST + 'Search/getpreLoan.jsp?'; var LIBRESERVE_URL = SZLIB_HOST + 'MyLibrary/Reader-Access.jsp?v_tablearray=bibliosm&v_TableName=80000002&v_recno='; var HTML_LOADING = '正在查询图书馆馆藏情况 · · · · · · '; var LIBSEARCH_LINK_PRE = '在豆瓣搜索'; } function getLibHeadHtml() { var htmlStr = ''; return htmlStr; } function setLibMemberStyle() { GM_addStyle('\ #libInfo {\ overflow: visible;\ }\ .libMem {\ z-index: 97;\ position: relative;\ float: right;\ }\ .libMemMenu {\ position: absolute;\ top: -5px;\ left: 0px;\ visibility: hidden;\ }\ .libMem a {\ -moz-border-radius: 7px;\ -webkit-border-radius: 7px;\ border-radius: 7px;\ display: block;\ background: #f6f6f1;\ padding: 5px;\ width: 90px;\ line-height: 160%;\ border: 1px solid #fff;\ }\ .libMem a:hover {\ background: #FFF;\ border: 1px solid #aaa;\ color: #000;\ }\ .libMem:hover .libMemMenu {\ visibility: visible;\ }\ .libMem .libMemLink {\ border: 1px solid #aaa;\ line-height: 100%;\ width: 90px;\ }\ '); } // getpreLoan.jsp?tableList=bibliosm,bibliosm,bibliosm,&metaidList=934991,1209378,698561, function getReservableQryUrl(bookRecNos) { var qryParam = 'tableList='; for (var i = 0; i < bookRecNos.length; i++) { qryParam += 'bibliosm,'; } // array.toString: arr[0],arr[1],... qryParam += '&metaidList=' + bookRecNos + ','; if (fDebug) GM_log('Reservable qryUrl: ' + LIBQRYRESERVABLE_URL + qryParam); return LIBQRYRESERVABLE_URL + qryParam; } /* * Append the book link, search link, preserve link, call no with location info * * @param bookRecNos is an Array * The reservable query return a xml: * truefalse */ function appendLibBookInfo(bookRecNos) { if (bookRecNos == null || bookRecNos.length == 0) return ; var fMore = (bookRecNos.length > 1); var bookRecNo = bookRecNos[0];// set the first book as default var reservableQry_url = getReservableQryUrl(bookRecNos); GM_xmlhttpRequest({ method: 'GET', url: reservableQry_url, headers: { 'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey', "Accept": "text/xml" }, onload: function(res) { // the reservable query return is a xml document var fHasReservable = false; if (fDebug) GM_log('preloan xml: ' + res.responseText); var xmldata = new DOMParser().parseFromString(res.responseText, "text/xml"); if (fDebug) GM_log('preloan xml: ' + xmldata); var preloans = xmldata.getElementsByTagName('preloan'); for (var i = 0; i < preloans.length;i++) { if (fDebug) GM_log('preloan : ' + i + ', ' + preloans[i].childNodes[0].nodeValue); if (preloans[i].childNodes[0].nodeValue == 'true') { bookRecNo = bookRecNos[i]; fHasReservable = true; break; } } appendLibBookHtml(bookRecNo, fMore, fHasReservable); } // end function(res) } ); } // end appendLibBookInfo function appendLibBookHtml(bookRecNo, fMore, fHasReservable) { if (fDebug) GM_log('book recNo: ' + bookRecNo + ', fHasReservable: ' + fHasReservable); var book_url = LIBBOOK_URL + bookRecNo; var htmlStr = ''; htmlStr += '