CINXE.COM
How Libraries Can Use LibraryThing | LibraryThing
<!DOCTYPE html> <html class="lt2 no-js" data-product="lt2" data-available_styles="verdant_14 verdant_12 verdant_tight_12 system_14 system_15 georgia_14 system_large atkinson_16" lang639="en" ><head> <!-- ROOT --> <meta charset="utf-8"> <meta http-equiv="Content-Type" content="text/html; charset-utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <title>How Libraries Can Use LibraryThing | LibraryThing</title> <meta name="apple-mobile-web-app-capable" content="yes"/> <meta name="msapplication-config" content="none"/> <script type="text/javascript"> ;window.NREUM||(NREUM={});NREUM.init={distributed_tracing:{enabled:true},privacy:{cookies_enabled:true},ajax:{deny_list:["bam.nr-data.net"]}}; window.NREUM||(NREUM={}),__nr_require=function(t,e,n){function r(n){if(!e[n]){var o=e[n]={exports:{}};t[n][0].call(o.exports,function(e){var o=t[n][1][e];return r(o||e)},o,o.exports)}return e[n].exports}if("function"==typeof __nr_require)return __nr_require;for(var o=0;o<n.length;o++)r(n[o]);return r}({1:[function(t,e,n){function r(t){try{s.console&&console.log(t)}catch(e){}}var o,i=t("ee"),a=t(32),s={};try{o=localStorage.getItem("__nr_flags").split(","),console&&"function"==typeof console.log&&(s.console=!0,o.indexOf("dev")!==-1&&(s.dev=!0),o.indexOf("nr_dev")!==-1&&(s.nrDev=!0))}catch(c){}s.nrDev&&i.on("internal-error",function(t){r(t.stack)}),s.dev&&i.on("fn-err",function(t,e,n){r(n.stack)}),s.dev&&(r("NR AGENT IN DEVELOPMENT MODE"),r("flags: "+a(s,function(t,e){return t}).join(", ")))},{}],2:[function(t,e,n){function r(t,e,n,r,s){try{l?l-=1:o(s||new UncaughtException(t,e,n),!0)}catch(f){try{i("ierr",[f,c.now(),!0])}catch(d){}}return"function"==typeof u&&u.apply(this,a(arguments))}function UncaughtException(t,e,n){this.message=t||"Uncaught error with no additional information",this.sourceURL=e,this.line=n}function o(t,e){var n=e?null:c.now();i("err",[t,n])}var i=t("handle"),a=t(33),s=t("ee"),c=t("loader"),f=t("gos"),u=window.onerror,d=!1,p="nr@seenError";if(!c.disabled){var l=0;c.features.err=!0,t(1),window.onerror=r;try{throw new Error}catch(h){"stack"in h&&(t(14),t(13),"addEventListener"in window&&t(7),c.xhrWrappable&&t(15),d=!0)}s.on("fn-start",function(t,e,n){d&&(l+=1)}),s.on("fn-err",function(t,e,n){d&&!n[p]&&(f(n,p,function(){return!0}),this.thrown=!0,o(n))}),s.on("fn-end",function(){d&&!this.thrown&&l>0&&(l-=1)}),s.on("internal-error",function(t){i("ierr",[t,c.now(),!0])})}},{}],3:[function(t,e,n){var r=t("loader");r.disabled||(r.features.ins=!0)},{}],4:[function(t,e,n){function r(){U++,L=g.hash,this[u]=y.now()}function o(){U--,g.hash!==L&&i(0,!0);var t=y.now();this[h]=~~this[h]+t-this[u],this[d]=t}function i(t,e){E.emit("newURL",[""+g,e])}function a(t,e){t.on(e,function(){this[e]=y.now()})}var s="-start",c="-end",f="-body",u="fn"+s,d="fn"+c,p="cb"+s,l="cb"+c,h="jsTime",m="fetch",v="addEventListener",w=window,g=w.location,y=t("loader");if(w[v]&&y.xhrWrappable&&!y.disabled){var x=t(11),b=t(12),E=t(9),R=t(7),O=t(14),T=t(8),S=t(15),P=t(10),M=t("ee"),C=M.get("tracer"),N=t(23);t(17),y.features.spa=!0;var L,U=0;M.on(u,r),b.on(p,r),P.on(p,r),M.on(d,o),b.on(l,o),P.on(l,o),M.buffer([u,d,"xhr-resolved"]),R.buffer([u]),O.buffer(["setTimeout"+c,"clearTimeout"+s,u]),S.buffer([u,"new-xhr","send-xhr"+s]),T.buffer([m+s,m+"-done",m+f+s,m+f+c]),E.buffer(["newURL"]),x.buffer([u]),b.buffer(["propagate",p,l,"executor-err","resolve"+s]),C.buffer([u,"no-"+u]),P.buffer(["new-jsonp","cb-start","jsonp-error","jsonp-end"]),a(T,m+s),a(T,m+"-done"),a(P,"new-jsonp"),a(P,"jsonp-end"),a(P,"cb-start"),E.on("pushState-end",i),E.on("replaceState-end",i),w[v]("hashchange",i,N(!0)),w[v]("load",i,N(!0)),w[v]("popstate",function(){i(0,U>1)},N(!0))}},{}],5:[function(t,e,n){function r(){var t=new PerformanceObserver(function(t,e){var n=t.getEntries();s(v,[n])});try{t.observe({entryTypes:["resource"]})}catch(e){}}function o(t){if(s(v,[window.performance.getEntriesByType(w)]),window.performance["c"+p])try{window.performance[h](m,o,!1)}catch(t){}else try{window.performance[h]("webkit"+m,o,!1)}catch(t){}}function i(t){}if(window.performance&&window.performance.timing&&window.performance.getEntriesByType){var a=t("ee"),s=t("handle"),c=t(14),f=t(13),u=t(6),d=t(23),p="learResourceTimings",l="addEventListener",h="removeEventListener",m="resourcetimingbufferfull",v="bstResource",w="resource",g="-start",y="-end",x="fn"+g,b="fn"+y,E="bstTimer",R="pushState",O=t("loader");if(!O.disabled){O.features.stn=!0,t(9),"addEventListener"in window&&t(7);var T=NREUM.o.EV;a.on(x,function(t,e){var n=t[0];n instanceof T&&(this.bstStart=O.now())}),a.on(b,function(t,e){var n=t[0];n instanceof T&&s("bst",[n,e,this.bstStart,O.now()])}),c.on(x,function(t,e,n){this.bstStart=O.now(),this.bstType=n}),c.on(b,function(t,e){s(E,[e,this.bstStart,O.now(),this.bstType])}),f.on(x,function(){this.bstStart=O.now()}),f.on(b,function(t,e){s(E,[e,this.bstStart,O.now(),"requestAnimationFrame"])}),a.on(R+g,function(t){this.time=O.now(),this.startPath=location.pathname+location.hash}),a.on(R+y,function(t){s("bstHist",[location.pathname+location.hash,this.startPath,this.time])}),u()?(s(v,[window.performance.getEntriesByType("resource")]),r()):l in window.performance&&(window.performance["c"+p]?window.performance[l](m,o,d(!1)):window.performance[l]("webkit"+m,o,d(!1))),document[l]("scroll",i,d(!1)),document[l]("keypress",i,d(!1)),document[l]("click",i,d(!1))}}},{}],6:[function(t,e,n){e.exports=function(){return"PerformanceObserver"in window&&"function"==typeof window.PerformanceObserver}},{}],7:[function(t,e,n){function r(t){for(var e=t;e&&!e.hasOwnProperty(u);)e=Object.getPrototypeOf(e);e&&o(e)}function o(t){s.inPlace(t,[u,d],"-",i)}function i(t,e){return t[1]}var a=t("ee").get("events"),s=t("wrap-function")(a,!0),c=t("gos"),f=XMLHttpRequest,u="addEventListener",d="removeEventListener";e.exports=a,"getPrototypeOf"in Object?(r(document),r(window),r(f.prototype)):f.prototype.hasOwnProperty(u)&&(o(window),o(f.prototype)),a.on(u+"-start",function(t,e){var n=t[1];if(null!==n&&("function"==typeof n||"object"==typeof n)){var r=c(n,"nr@wrapped",function(){function t(){if("function"==typeof n.handleEvent)return n.handleEvent.apply(n,arguments)}var e={object:t,"function":n}[typeof n];return e?s(e,"fn-",null,e.name||"anonymous"):n});this.wrapped=t[1]=r}}),a.on(d+"-start",function(t){t[1]=this.wrapped||t[1]})},{}],8:[function(t,e,n){function r(t,e,n){var r=t[e];"function"==typeof r&&(t[e]=function(){var t=i(arguments),e={};o.emit(n+"before-start",[t],e);var a;e[m]&&e[m].dt&&(a=e[m].dt);var s=r.apply(this,t);return o.emit(n+"start",[t,a],s),s.then(function(t){return o.emit(n+"end",[null,t],s),t},function(t){throw o.emit(n+"end",[t],s),t})})}var o=t("ee").get("fetch"),i=t(33),a=t(32);e.exports=o;var s=window,c="fetch-",f=c+"body-",u=["arrayBuffer","blob","json","text","formData"],d=s.Request,p=s.Response,l=s.fetch,h="prototype",m="nr@context";d&&p&&l&&(a(u,function(t,e){r(d[h],e,f),r(p[h],e,f)}),r(s,"fetch",c),o.on(c+"end",function(t,e){var n=this;if(e){var r=e.headers.get("content-length");null!==r&&(n.rxSize=r),o.emit(c+"done",[null,e],n)}else o.emit(c+"done",[t],n)}))},{}],9:[function(t,e,n){var r=t("ee").get("history"),o=t("wrap-function")(r);e.exports=r;var i=window.history&&window.history.constructor&&window.history.constructor.prototype,a=window.history;i&&i.pushState&&i.replaceState&&(a=i),o.inPlace(a,["pushState","replaceState"],"-")},{}],10:[function(t,e,n){function r(t){function e(){f.emit("jsonp-end",[],l),t.removeEventListener("load",e,c(!1)),t.removeEventListener("error",n,c(!1))}function n(){f.emit("jsonp-error",[],l),f.emit("jsonp-end",[],l),t.removeEventListener("load",e,c(!1)),t.removeEventListener("error",n,c(!1))}var r=t&&"string"==typeof t.nodeName&&"script"===t.nodeName.toLowerCase();if(r){var o="function"==typeof t.addEventListener;if(o){var a=i(t.src);if(a){var d=s(a),p="function"==typeof d.parent[d.key];if(p){var l={};u.inPlace(d.parent,[d.key],"cb-",l),t.addEventListener("load",e,c(!1)),t.addEventListener("error",n,c(!1)),f.emit("new-jsonp",[t.src],l)}}}}}function o(){return"addEventListener"in window}function i(t){var e=t.match(d);return e?e[1]:null}function a(t,e){var n=t.match(l),r=n[1],o=n[3];return o?a(o,e[r]):e[r]}function s(t){var e=t.match(p);return e&&e.length>=3?{key:e[2],parent:a(e[1],window)}:{key:t,parent:window}}var c=t(23),f=t("ee").get("jsonp"),u=t("wrap-function")(f);if(e.exports=f,o()){var d=/[?&](?:callback|cb)=([^&#]+)/,p=/(.*)\.([^.]+)/,l=/^(\w+)(\.|$)(.*)$/,h=["appendChild","insertBefore","replaceChild"];Node&&Node.prototype&&Node.prototype.appendChild?u.inPlace(Node.prototype,h,"dom-"):(u.inPlace(HTMLElement.prototype,h,"dom-"),u.inPlace(HTMLHeadElement.prototype,h,"dom-"),u.inPlace(HTMLBodyElement.prototype,h,"dom-")),f.on("dom-start",function(t){r(t[0])})}},{}],11:[function(t,e,n){var r=t("ee").get("mutation"),o=t("wrap-function")(r),i=NREUM.o.MO;e.exports=r,i&&(window.MutationObserver=function(t){return this instanceof i?new i(o(t,"fn-")):i.apply(this,arguments)},MutationObserver.prototype=i.prototype)},{}],12:[function(t,e,n){function r(t){var e=i.context(),n=s(t,"executor-",e,null,!1),r=new f(n);return i.context(r).getCtx=function(){return e},r}var o=t("wrap-function"),i=t("ee").get("promise"),a=t("ee").getOrSetContext,s=o(i),c=t(32),f=NREUM.o.PR;e.exports=i,f&&(window.Promise=r,["all","race"].forEach(function(t){var e=f[t];f[t]=function(n){function r(t){return function(){i.emit("propagate",[null,!o],a,!1,!1),o=o||!t}}var o=!1;c(n,function(e,n){Promise.resolve(n).then(r("all"===t),r(!1))});var a=e.apply(f,arguments),s=f.resolve(a);return s}}),["resolve","reject"].forEach(function(t){var e=f[t];f[t]=function(t){var n=e.apply(f,arguments);return t!==n&&i.emit("propagate",[t,!0],n,!1,!1),n}}),f.prototype["catch"]=function(t){return this.then(null,t)},f.prototype=Object.create(f.prototype,{constructor:{value:r}}),c(Object.getOwnPropertyNames(f),function(t,e){try{r[e]=f[e]}catch(n){}}),o.wrapInPlace(f.prototype,"then",function(t){return function(){var e=this,n=o.argsToArray.apply(this,arguments),r=a(e);r.promise=e,n[0]=s(n[0],"cb-",r,null,!1),n[1]=s(n[1],"cb-",r,null,!1);var c=t.apply(this,n);return r.nextPromise=c,i.emit("propagate",[e,!0],c,!1,!1),c}}),i.on("executor-start",function(t){t[0]=s(t[0],"resolve-",this,null,!1),t[1]=s(t[1],"resolve-",this,null,!1)}),i.on("executor-err",function(t,e,n){t[1](n)}),i.on("cb-end",function(t,e,n){i.emit("propagate",[n,!0],this.nextPromise,!1,!1)}),i.on("propagate",function(t,e,n){this.getCtx&&!e||(this.getCtx=function(){if(t instanceof Promise)var e=i.context(t);return e&&e.getCtx?e.getCtx():this})}),r.toString=function(){return""+f})},{}],13:[function(t,e,n){var r=t("ee").get("raf"),o=t("wrap-function")(r),i="equestAnimationFrame";e.exports=r,o.inPlace(window,["r"+i,"mozR"+i,"webkitR"+i,"msR"+i],"raf-"),r.on("raf-start",function(t){t[0]=o(t[0],"fn-")})},{}],14:[function(t,e,n){function r(t,e,n){t[0]=a(t[0],"fn-",null,n)}function o(t,e,n){this.method=n,this.timerDuration=isNaN(t[1])?0:+t[1],t[0]=a(t[0],"fn-",this,n)}var i=t("ee").get("timer"),a=t("wrap-function")(i),s="setTimeout",c="setInterval",f="clearTimeout",u="-start",d="-";e.exports=i,a.inPlace(window,[s,"setImmediate"],s+d),a.inPlace(window,[c],c+d),a.inPlace(window,[f,"clearImmediate"],f+d),i.on(c+u,r),i.on(s+u,o)},{}],15:[function(t,e,n){function r(t,e){d.inPlace(e,["onreadystatechange"],"fn-",s)}function o(){var t=this,e=u.context(t);t.readyState>3&&!e.resolved&&(e.resolved=!0,u.emit("xhr-resolved",[],t)),d.inPlace(t,y,"fn-",s)}function i(t){x.push(t),m&&(E?E.then(a):w?w(a):(R=-R,O.data=R))}function a(){for(var t=0;t<x.length;t++)r([],x[t]);x.length&&(x=[])}function s(t,e){return e}function c(t,e){for(var n in t)e[n]=t[n];return e}t(7);var f=t("ee"),u=f.get("xhr"),d=t("wrap-function")(u),p=t(23),l=NREUM.o,h=l.XHR,m=l.MO,v=l.PR,w=l.SI,g="readystatechange",y=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"],x=[];e.exports=u;var b=window.XMLHttpRequest=function(t){var e=new h(t);try{u.emit("new-xhr",[e],e),e.addEventListener(g,o,p(!1))}catch(n){try{u.emit("internal-error",[n])}catch(r){}}return e};if(c(h,b),b.prototype=h.prototype,d.inPlace(b.prototype,["open","send"],"-xhr-",s),u.on("send-xhr-start",function(t,e){r(t,e),i(e)}),u.on("open-xhr-start",r),m){var E=v&&v.resolve();if(!w&&!v){var R=1,O=document.createTextNode(R);new m(a).observe(O,{characterData:!0})}}else f.on("fn-end",function(t){t[0]&&t[0].type===g||a()})},{}],16:[function(t,e,n){function r(t){if(!s(t))return null;var e=window.NREUM;if(!e.loader_config)return null;var n=(e.loader_config.accountID||"").toString()||null,r=(e.loader_config.agentID||"").toString()||null,f=(e.loader_config.trustKey||"").toString()||null;if(!n||!r)return null;var h=l.generateSpanId(),m=l.generateTraceId(),v=Date.now(),w={spanId:h,traceId:m,timestamp:v};return(t.sameOrigin||c(t)&&p())&&(w.traceContextParentHeader=o(h,m),w.traceContextStateHeader=i(h,v,n,r,f)),(t.sameOrigin&&!u()||!t.sameOrigin&&c(t)&&d())&&(w.newrelicHeader=a(h,m,v,n,r,f)),w}function o(t,e){return"00-"+e+"-"+t+"-01"}function i(t,e,n,r,o){var i=0,a="",s=1,c="",f="";return o+"@nr="+i+"-"+s+"-"+n+"-"+r+"-"+t+"-"+a+"-"+c+"-"+f+"-"+e}function a(t,e,n,r,o,i){var a="btoa"in window&&"function"==typeof window.btoa;if(!a)return null;var s={v:[0,1],d:{ty:"Browser",ac:r,ap:o,id:t,tr:e,ti:n}};return i&&r!==i&&(s.d.tk=i),btoa(JSON.stringify(s))}function s(t){return f()&&c(t)}function c(t){var e=!1,n={};if("init"in NREUM&&"distributed_tracing"in NREUM.init&&(n=NREUM.init.distributed_tracing),t.sameOrigin)e=!0;else if(n.allowed_origins instanceof Array)for(var r=0;r<n.allowed_origins.length;r++){var o=h(n.allowed_origins[r]);if(t.hostname===o.hostname&&t.protocol===o.protocol&&t.port===o.port){e=!0;break}}return e}function f(){return"init"in NREUM&&"distributed_tracing"in NREUM.init&&!!NREUM.init.distributed_tracing.enabled}function u(){return"init"in NREUM&&"distributed_tracing"in NREUM.init&&!!NREUM.init.distributed_tracing.exclude_newrelic_header}function d(){return"init"in NREUM&&"distributed_tracing"in NREUM.init&&NREUM.init.distributed_tracing.cors_use_newrelic_header!==!1}function p(){return"init"in NREUM&&"distributed_tracing"in NREUM.init&&!!NREUM.init.distributed_tracing.cors_use_tracecontext_headers}var l=t(29),h=t(18);e.exports={generateTracePayload:r,shouldGenerateTrace:s}},{}],17:[function(t,e,n){function r(t){var e=this.params,n=this.metrics;if(!this.ended){this.ended=!0;for(var r=0;r<p;r++)t.removeEventListener(d[r],this.listener,!1);return e.protocol&&"data"===e.protocol?void g("Ajax/DataUrl/Excluded"):void(e.aborted||(n.duration=a.now()-this.startTime,this.loadCaptureCalled||4!==t.readyState?null==e.status&&(e.status=0):i(this,t),n.cbTime=this.cbTime,s("xhr",[e,n,this.startTime,this.endTime,"xhr"],this)))}}function o(t,e){var n=c(e),r=t.params;r.hostname=n.hostname,r.port=n.port,r.protocol=n.protocol,r.host=n.hostname+":"+n.port,r.pathname=n.pathname,t.parsedOrigin=n,t.sameOrigin=n.sameOrigin}function i(t,e){t.params.status=e.status;var n=v(e,t.lastSize);if(n&&(t.metrics.rxSize=n),t.sameOrigin){var r=e.getResponseHeader("X-NewRelic-App-Data");r&&(t.params.cat=r.split(", ").pop())}t.loadCaptureCalled=!0}var a=t("loader");if(a.xhrWrappable&&!a.disabled){var s=t("handle"),c=t(18),f=t(16).generateTracePayload,u=t("ee"),d=["load","error","abort","timeout"],p=d.length,l=t("id"),h=t(24),m=t(22),v=t(19),w=t(23),g=t(25).recordSupportability,y=NREUM.o.REQ,x=window.XMLHttpRequest;a.features.xhr=!0,t(15),t(8),u.on("new-xhr",function(t){var e=this;e.totalCbs=0,e.called=0,e.cbTime=0,e.end=r,e.ended=!1,e.xhrGuids={},e.lastSize=null,e.loadCaptureCalled=!1,e.params=this.params||{},e.metrics=this.metrics||{},t.addEventListener("load",function(n){i(e,t)},w(!1)),h&&(h>34||h<10)||t.addEventListener("progress",function(t){e.lastSize=t.loaded},w(!1))}),u.on("open-xhr-start",function(t){this.params={method:t[0]},o(this,t[1]),this.metrics={}}),u.on("open-xhr-end",function(t,e){"loader_config"in NREUM&&"xpid"in NREUM.loader_config&&this.sameOrigin&&e.setRequestHeader("X-NewRelic-ID",NREUM.loader_config.xpid);var n=f(this.parsedOrigin);if(n){var r=!1;n.newrelicHeader&&(e.setRequestHeader("newrelic",n.newrelicHeader),r=!0),n.traceContextParentHeader&&(e.setRequestHeader("traceparent",n.traceContextParentHeader),n.traceContextStateHeader&&e.setRequestHeader("tracestate",n.traceContextStateHeader),r=!0),r&&(this.dt=n)}}),u.on("send-xhr-start",function(t,e){var n=this.metrics,r=t[0],o=this;if(n&&r){var i=m(r);i&&(n.txSize=i)}this.startTime=a.now(),this.listener=function(t){try{"abort"!==t.type||o.loadCaptureCalled||(o.params.aborted=!0),("load"!==t.type||o.called===o.totalCbs&&(o.onloadCalled||"function"!=typeof e.onload))&&o.end(e)}catch(n){try{u.emit("internal-error",[n])}catch(r){}}};for(var s=0;s<p;s++)e.addEventListener(d[s],this.listener,w(!1))}),u.on("xhr-cb-time",function(t,e,n){this.cbTime+=t,e?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled&&"function"==typeof n.onload||this.end(n)}),u.on("xhr-load-added",function(t,e){var n=""+l(t)+!!e;this.xhrGuids&&!this.xhrGuids[n]&&(this.xhrGuids[n]=!0,this.totalCbs+=1)}),u.on("xhr-load-removed",function(t,e){var n=""+l(t)+!!e;this.xhrGuids&&this.xhrGuids[n]&&(delete this.xhrGuids[n],this.totalCbs-=1)}),u.on("xhr-resolved",function(){this.endTime=a.now()}),u.on("addEventListener-end",function(t,e){e instanceof x&&"load"===t[0]&&u.emit("xhr-load-added",[t[1],t[2]],e)}),u.on("removeEventListener-end",function(t,e){e instanceof x&&"load"===t[0]&&u.emit("xhr-load-removed",[t[1],t[2]],e)}),u.on("fn-start",function(t,e,n){e instanceof x&&("onload"===n&&(this.onload=!0),("load"===(t[0]&&t[0].type)||this.onload)&&(this.xhrCbStart=a.now()))}),u.on("fn-end",function(t,e){this.xhrCbStart&&u.emit("xhr-cb-time",[a.now()-this.xhrCbStart,this.onload,e],e)}),u.on("fetch-before-start",function(t){function e(t,e){var n=!1;return e.newrelicHeader&&(t.set("newrelic",e.newrelicHeader),n=!0),e.traceContextParentHeader&&(t.set("traceparent",e.traceContextParentHeader),e.traceContextStateHeader&&t.set("tracestate",e.traceContextStateHeader),n=!0),n}var n,r=t[1]||{};"string"==typeof t[0]?n=t[0]:t[0]&&t[0].url?n=t[0].url:window.URL&&t[0]&&t[0]instanceof URL&&(n=t[0].href),n&&(this.parsedOrigin=c(n),this.sameOrigin=this.parsedOrigin.sameOrigin);var o=f(this.parsedOrigin);if(o&&(o.newrelicHeader||o.traceContextParentHeader))if("string"==typeof t[0]||window.URL&&t[0]&&t[0]instanceof URL){var i={};for(var a in r)i[a]=r[a];i.headers=new Headers(r.headers||{}),e(i.headers,o)&&(this.dt=o),t.length>1?t[1]=i:t.push(i)}else t[0]&&t[0].headers&&e(t[0].headers,o)&&(this.dt=o)}),u.on("fetch-start",function(t,e){this.params={},this.metrics={},this.startTime=a.now(),this.dt=e,t.length>=1&&(this.target=t[0]),t.length>=2&&(this.opts=t[1]);var n,r=this.opts||{},i=this.target;if("string"==typeof i?n=i:"object"==typeof i&&i instanceof y?n=i.url:window.URL&&"object"==typeof i&&i instanceof URL&&(n=i.href),o(this,n),"data"!==this.params.protocol){var s=(""+(i&&i instanceof y&&i.method||r.method||"GET")).toUpperCase();this.params.method=s,this.txSize=m(r.body)||0}}),u.on("fetch-done",function(t,e){if(this.endTime=a.now(),this.params||(this.params={}),"data"===this.params.protocol)return void g("Ajax/DataUrl/Excluded");this.params.status=e?e.status:0;var n;"string"==typeof this.rxSize&&this.rxSize.length>0&&(n=+this.rxSize);var r={txSize:this.txSize,rxSize:n,duration:a.now()-this.startTime};s("xhr",[this.params,r,this.startTime,this.endTime,"fetch"],this)})}},{}],18:[function(t,e,n){var r={};e.exports=function(t){if(t in r)return r[t];if(0===(t||"").indexOf("data:"))return{protocol:"data"};var e=document.createElement("a"),n=window.location,o={};e.href=t,o.port=e.port;var i=e.href.split("://");!o.port&&i[1]&&(o.port=i[1].split("/")[0].split("@").pop().split(":")[1]),o.port&&"0"!==o.port||(o.port="https"===i[0]?"443":"80"),o.hostname=e.hostname||n.hostname,o.pathname=e.pathname,o.protocol=i[0],"/"!==o.pathname.charAt(0)&&(o.pathname="/"+o.pathname);var a=!e.protocol||":"===e.protocol||e.protocol===n.protocol,s=e.hostname===document.domain&&e.port===n.port;return o.sameOrigin=a&&(!e.hostname||s),"/"===o.pathname&&(r[t]=o),o}},{}],19:[function(t,e,n){function r(t,e){var n=t.responseType;return"json"===n&&null!==e?e:"arraybuffer"===n||"blob"===n||"json"===n?o(t.response):"text"===n||""===n||void 0===n?o(t.responseText):void 0}var o=t(22);e.exports=r},{}],20:[function(t,e,n){function r(){}function o(t,e,n,r){return function(){return u.recordSupportability("API/"+e+"/called"),i(t+e,[f.now()].concat(s(arguments)),n?null:this,r),n?void 0:this}}var i=t("handle"),a=t(32),s=t(33),c=t("ee").get("tracer"),f=t("loader"),u=t(25),d=NREUM;"undefined"==typeof window.newrelic&&(newrelic=d);var p=["setPageViewName","setCustomAttribute","setErrorHandler","finished","addToTrace","inlineHit","addRelease"],l="api-",h=l+"ixn-";a(p,function(t,e){d[e]=o(l,e,!0,"api")}),d.addPageAction=o(l,"addPageAction",!0),d.setCurrentRouteName=o(l,"routeName",!0),e.exports=newrelic,d.interaction=function(){return(new r).get()};var m=r.prototype={createTracer:function(t,e){var n={},r=this,o="function"==typeof e;return i(h+"tracer",[f.now(),t,n],r),function(){if(c.emit((o?"":"no-")+"fn-start",[f.now(),r,o],n),o)try{return e.apply(this,arguments)}catch(t){throw c.emit("fn-err",[arguments,this,t],n),t}finally{c.emit("fn-end",[f.now()],n)}}}};a("actionText,setName,setAttribute,save,ignore,onEnd,getContext,end,get".split(","),function(t,e){m[e]=o(h,e)}),newrelic.noticeError=function(t,e){"string"==typeof t&&(t=new Error(t)),u.recordSupportability("API/noticeError/called"),i("err",[t,f.now(),!1,e])}},{}],21:[function(t,e,n){function r(t){if(NREUM.init){for(var e=NREUM.init,n=t.split("."),r=0;r<n.length-1;r++)if(e=e[n[r]],"object"!=typeof e)return;return e=e[n[n.length-1]]}}e.exports={getConfiguration:r}},{}],22:[function(t,e,n){e.exports=function(t){if("string"==typeof t&&t.length)return t.length;if("object"==typeof t){if("undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer&&t.byteLength)return t.byteLength;if("undefined"!=typeof Blob&&t instanceof Blob&&t.size)return t.size;if(!("undefined"!=typeof FormData&&t instanceof FormData))try{return JSON.stringify(t).length}catch(e){return}}}},{}],23:[function(t,e,n){var r=!1;try{var o=Object.defineProperty({},"passive",{get:function(){r=!0}});window.addEventListener("testPassive",null,o),window.removeEventListener("testPassive",null,o)}catch(i){}e.exports=function(t){return r?{passive:!0,capture:!!t}:!!t}},{}],24:[function(t,e,n){var r=0,o=navigator.userAgent.match(/Firefox[\/\s](\d+\.\d+)/);o&&(r=+o[1]),e.exports=r},{}],25:[function(t,e,n){function r(t,e){var n=[a,t,{name:t},e];return i("storeMetric",n,null,"api"),n}function o(t,e){var n=[s,t,{name:t},e];return i("storeEventMetrics",n,null,"api"),n}var i=t("handle"),a="sm",s="cm";e.exports={constants:{SUPPORTABILITY_METRIC:a,CUSTOM_METRIC:s},recordSupportability:r,recordCustom:o}},{}],26:[function(t,e,n){function r(){return s.exists&&performance.now?Math.round(performance.now()):(i=Math.max((new Date).getTime(),i))-a}function o(){return i}var i=(new Date).getTime(),a=i,s=t(34);e.exports=r,e.exports.offset=a,e.exports.getLastTimestamp=o},{}],27:[function(t,e,n){function r(t){return!(!t||!t.protocol||"file:"===t.protocol)}e.exports=r},{}],28:[function(t,e,n){function r(t,e){var n=t.getEntries();n.forEach(function(t){"first-paint"===t.name?l("timing",["fp",Math.floor(t.startTime)]):"first-contentful-paint"===t.name&&l("timing",["fcp",Math.floor(t.startTime)])})}function o(t,e){var n=t.getEntries();if(n.length>0){var r=n[n.length-1];if(f&&f<r.startTime)return;var o=[r],i=a({});i&&o.push(i),l("lcp",o)}}function i(t){t.getEntries().forEach(function(t){t.hadRecentInput||l("cls",[t])})}function a(t){var e=navigator.connection||navigator.mozConnection||navigator.webkitConnection;if(e)return e.type&&(t["net-type"]=e.type),e.effectiveType&&(t["net-etype"]=e.effectiveType),e.rtt&&(t["net-rtt"]=e.rtt),e.downlink&&(t["net-dlink"]=e.downlink),t}function s(t){if(t instanceof w&&!y){var e=Math.round(t.timeStamp),n={type:t.type};a(n),e<=h.now()?n.fid=h.now()-e:e>h.offset&&e<=Date.now()?(e-=h.offset,n.fid=h.now()-e):e=h.now(),y=!0,l("timing",["fi",e,n])}}function c(t){"hidden"===t&&(f=h.now(),l("pageHide",[f]))}if(!("init"in NREUM&&"page_view_timing"in NREUM.init&&"enabled"in NREUM.init.page_view_timing&&NREUM.init.page_view_timing.enabled===!1)){var f,u,d,p,l=t("handle"),h=t("loader"),m=t(31),v=t(23),w=NREUM.o.EV;if("PerformanceObserver"in window&&"function"==typeof window.PerformanceObserver){u=new PerformanceObserver(r);try{u.observe({entryTypes:["paint"]})}catch(g){}d=new PerformanceObserver(o);try{d.observe({entryTypes:["largest-contentful-paint"]})}catch(g){}p=new PerformanceObserver(i);try{p.observe({type:"layout-shift",buffered:!0})}catch(g){}}if("addEventListener"in document){var y=!1,x=["click","keydown","mousedown","pointerdown","touchstart"];x.forEach(function(t){document.addEventListener(t,s,v(!1))})}m(c)}},{}],29:[function(t,e,n){function r(){function t(){return e?15&e[n++]:16*Math.random()|0}var e=null,n=0,r=window.crypto||window.msCrypto;r&&r.getRandomValues&&(e=r.getRandomValues(new Uint8Array(31)));for(var o,i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx",a="",s=0;s<i.length;s++)o=i[s],"x"===o?a+=t().toString(16):"y"===o?(o=3&t()|8,a+=o.toString(16)):a+=o;return a}function o(){return a(16)}function i(){return a(32)}function a(t){function e(){return n?15&n[r++]:16*Math.random()|0}var n=null,r=0,o=window.crypto||window.msCrypto;o&&o.getRandomValues&&Uint8Array&&(n=o.getRandomValues(new Uint8Array(31)));for(var i=[],a=0;a<t;a++)i.push(e().toString(16));return i.join("")}e.exports={generateUuid:r,generateSpanId:o,generateTraceId:i}},{}],30:[function(t,e,n){function r(t,e){if(!o)return!1;if(t!==o)return!1;if(!e)return!0;if(!i)return!1;for(var n=i.split("."),r=e.split("."),a=0;a<r.length;a++)if(r[a]!==n[a])return!1;return!0}var o=null,i=null,a=/Version\/(\S+)\s+Safari/;if(navigator.userAgent){var s=navigator.userAgent,c=s.match(a);c&&s.indexOf("Chrome")===-1&&s.indexOf("Chromium")===-1&&(o="Safari",i=c[1])}e.exports={agent:o,version:i,match:r}},{}],31:[function(t,e,n){function r(t){function e(){t(s&&document[s]?document[s]:document[i]?"hidden":"visible")}"addEventListener"in document&&a&&document.addEventListener(a,e,o(!1))}var o=t(23);e.exports=r;var i,a,s;"undefined"!=typeof document.hidden?(i="hidden",a="visibilitychange",s="visibilityState"):"undefined"!=typeof document.msHidden?(i="msHidden",a="msvisibilitychange"):"undefined"!=typeof document.webkitHidden&&(i="webkitHidden",a="webkitvisibilitychange",s="webkitVisibilityState")},{}],32:[function(t,e,n){function r(t,e){var n=[],r="",i=0;for(r in t)o.call(t,r)&&(n[i]=e(r,t[r]),i+=1);return n}var o=Object.prototype.hasOwnProperty;e.exports=r},{}],33:[function(t,e,n){function r(t,e,n){e||(e=0),"undefined"==typeof n&&(n=t?t.length:0);for(var r=-1,o=n-e||0,i=Array(o<0?0:o);++r<o;)i[r]=t[e+r];return i}e.exports=r},{}],34:[function(t,e,n){e.exports={exists:"undefined"!=typeof window.performance&&window.performance.timing&&"undefined"!=typeof window.performance.timing.navigationStart}},{}],ee:[function(t,e,n){function r(){}function o(t){function e(t){return t&&t instanceof r?t:t?f(t,c,a):a()}function n(n,r,o,i,a){if(a!==!1&&(a=!0),!l.aborted||i){t&&a&&t(n,r,o);for(var s=e(o),c=m(n),f=c.length,u=0;u<f;u++)c[u].apply(s,r);var p=d[y[n]];return p&&p.push([x,n,r,s]),s}}function i(t,e){g[t]=m(t).concat(e)}function h(t,e){var n=g[t];if(n)for(var r=0;r<n.length;r++)n[r]===e&&n.splice(r,1)}function m(t){return g[t]||[]}function v(t){return p[t]=p[t]||o(n)}function w(t,e){l.aborted||u(t,function(t,n){e=e||"feature",y[n]=e,e in d||(d[e]=[])})}var g={},y={},x={on:i,addEventListener:i,removeEventListener:h,emit:n,get:v,listeners:m,context:e,buffer:w,abort:s,aborted:!1};return x}function i(t){return f(t,c,a)}function a(){return new r}function s(){(d.api||d.feature)&&(l.aborted=!0,d=l.backlog={})}var c="nr@context",f=t("gos"),u=t(32),d={},p={},l=e.exports=o();e.exports.getOrSetContext=i,l.backlog=d},{}],gos:[function(t,e,n){function r(t,e,n){if(o.call(t,e))return t[e];var r=n();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(t,e,{value:r,writable:!0,enumerable:!1}),r}catch(i){}return t[e]=r,r}var o=Object.prototype.hasOwnProperty;e.exports=r},{}],handle:[function(t,e,n){function r(t,e,n,r){o.buffer([t],r),o.emit(t,e,n)}var o=t("ee").get("handle");e.exports=r,r.ee=o},{}],id:[function(t,e,n){function r(t){var e=typeof t;return!t||"object"!==e&&"function"!==e?-1:t===window?0:a(t,i,function(){return o++})}var o=1,i="nr@id",a=t("gos");e.exports=r},{}],loader:[function(t,e,n){function r(){if(!S++){var t=T.info=NREUM.info,e=v.getElementsByTagName("script")[0];if(setTimeout(f.abort,3e4),!(t&&t.licenseKey&&t.applicationID&&e))return f.abort();c(R,function(e,n){t[e]||(t[e]=n)});var n=a();s("mark",["onload",n+T.offset],null,"api"),s("timing",["load",n]);var r=v.createElement("script");0===t.agent.indexOf("http://")||0===t.agent.indexOf("https://")?r.src=t.agent:r.src=h+"://"+t.agent,e.parentNode.insertBefore(r,e)}}function o(){"complete"===v.readyState&&i()}function i(){s("mark",["domContent",a()+T.offset],null,"api")}var a=t(26),s=t("handle"),c=t(32),f=t("ee"),u=t(30),d=t(27),p=t(21),l=t(23),h=p.getConfiguration("ssl")===!1?"http":"https",m=window,v=m.document,w="addEventListener",g="attachEvent",y=m.XMLHttpRequest,x=y&&y.prototype,b=!d(m.location);NREUM.o={ST:setTimeout,SI:m.setImmediate,CT:clearTimeout,XHR:y,REQ:m.Request,EV:m.Event,PR:m.Promise,MO:m.MutationObserver};var E=""+location,R={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net",agent:"js-agent.newrelic.com/nr-spa-1215.min.js"},O=y&&x&&x[w]&&!/CriOS/.test(navigator.userAgent),T=e.exports={offset:a.getLastTimestamp(),now:a,origin:E,features:{},xhrWrappable:O,userAgent:u,disabled:b};if(!b){t(20),t(28),v[w]?(v[w]("DOMContentLoaded",i,l(!1)),m[w]("load",r,l(!1))):(v[g]("onreadystatechange",o),m[g]("onload",r)),s("mark",["firstbyte",a.getLastTimestamp()],null,"api");var S=0}},{}],"wrap-function":[function(t,e,n){function r(t,e){function n(e,n,r,c,f){function nrWrapper(){var i,a,u,p;try{a=this,i=d(arguments),u="function"==typeof r?r(i,a):r||{}}catch(l){o([l,"",[i,a,c],u],t)}s(n+"start",[i,a,c],u,f);try{return p=e.apply(a,i)}catch(h){throw s(n+"err",[i,a,h],u,f),h}finally{s(n+"end",[i,a,p],u,f)}}return a(e)?e:(n||(n=""),nrWrapper[p]=e,i(e,nrWrapper,t),nrWrapper)}function r(t,e,r,o,i){r||(r="");var s,c,f,u="-"===r.charAt(0);for(f=0;f<e.length;f++)c=e[f],s=t[c],a(s)||(t[c]=n(s,u?c+r:r,o,c,i))}function s(n,r,i,a){if(!h||e){var s=h;h=!0;try{t.emit(n,r,i,e,a)}catch(c){o([c,n,r,i],t)}h=s}}return t||(t=u),n.inPlace=r,n.flag=p,n}function o(t,e){e||(e=u);try{e.emit("internal-error",t)}catch(n){}}function i(t,e,n){if(Object.defineProperty&&Object.keys)try{var r=Object.keys(t);return r.forEach(function(n){Object.defineProperty(e,n,{get:function(){return t[n]},set:function(e){return t[n]=e,e}})}),e}catch(i){o([i],n)}for(var a in t)l.call(t,a)&&(e[a]=t[a]);return e}function a(t){return!(t&&t instanceof Function&&t.apply&&!t[p])}function s(t,e){var n=e(t);return n[p]=t,i(t,n,u),n}function c(t,e,n){var r=t[e];t[e]=s(r,n)}function f(){for(var t=arguments.length,e=new Array(t),n=0;n<t;++n)e[n]=arguments[n];return e}var u=t("ee"),d=t(33),p="nr@original",l=Object.prototype.hasOwnProperty,h=!1;e.exports=r,e.exports.wrapFunction=s,e.exports.wrapInPlace=c,e.exports.argsToArray=f},{}]},{},["loader",2,17,5,3,4]); ;NREUM.loader_config={accountID:"2883957",trustKey:"2883957",agentID:"520756539",licenseKey:"NRJS-012b8030e06bfdc9233",applicationID:"520756539"} ;NREUM.info={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net",licenseKey:"NRJS-012b8030e06bfdc9233",applicationID:"520756539",sa:1} </script> <meta name="librarything_env" content="beta" /> <meta name="librarything_lang" content="" /> <meta name="librarything_product" content="lt2" /> <meta id="viewport" name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=5.0, user-scalable=1, viewport-fit=cover"> <!-- DNS Preconnect --> <link rel="preconnect" href="//image.librarything.com"/> <link rel="preconnect" href="//image.librarything.com" crossorigin/> <link rel="preconnect" href="//pics.cdn.librarything.com"/> <link rel="preconnect" href="//pics.cdn.librarything.com" crossorigin/> <link rel="preconnect" href="//images-na.ssl-images-amazon.com"/> <link rel="preconnect" href="//images-na.ssl-images-amazon.com" crossorigin/> <!-- DNS Prefetch --> <link rel="dns-prefetch" href="//ajax.googleapis.com"/> <link rel="dns-prefetch" href="//ssl.google-analytics.com"/> <link rel="dns-prefetch" href="//books.google.com"/> <link rel="icon" href="/favicon_lt_32.ico" sizes="any" /><link rel="icon" href="/favicon_lt.svg" type="image/svg+xml"><link rel="apple-touch-icon" href="/apple-touch-icon.png"> <!-- Base --> <meta name="description" content="LibraryThing catalogs yours books online, easily, quickly and for free."/> <meta name="keywords" content="librarything, library, thing, catalog your books, catalogue your books, book cataloging, library, free book catalog, catalogue"/> <meta name="language" content="en"/> <meta name="apple-itunes-app" content="app-id=948824489"/> <meta name="google-play-app" content="app-id=com.librarything.librarything"/> <!-- Facebook/Open Graph --> <meta property="fb:app_id" content="79305890602"/> <meta property="og:site_name" content="LibraryThing.com"/> <meta property="og:url" content="https://www.librarything.com"/> <meta property="og:title" content="How Libraries Can Use LibraryThing | LibraryThing"/> <meta property="og:type" content="website"/> <meta property="og:description" content="LibraryThing catalogs yours books online, easily, quickly and for free."/> <!-- Twitter --> <meta name="twitter:card" content="summary"/> <meta name="twitter:site" content="@LibraryThing"/> <meta name="twitter:title" content="How Libraries Can Use LibraryThing | LibraryThing"/> <meta name="twitter:description" content="LibraryThing catalogs yours books online, easily, quickly and for free."/> <!-- end of meta - print_sharedataA --> <link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://image.librarything.com/css/bootstrap-3.3.4.min.css?v=3" type="text/css" /><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_vars.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_main.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://image.librarything.com/css/lt2_tabs.css?v=3" type="text/css" /><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_forms.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt1.5_nav_bridge.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_main_grid.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_content.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_lt1_overrides.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_stylepicker_verdant_14.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_stylepicker_verdant_12.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_stylepicker_verdant_tight_12.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_stylepicker_system_14.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_stylepicker_system_15.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_stylepicker_georgia_14.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_stylepicker_system_large.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_stylepicker_atkinson_16.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/notifier_control.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://image.librarything.com/css/fontawesome6.4.2/css/all.min.css?v=3" type="text/css" /><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://image.librarything.com/css/lticon_fonts.css?v=3" type="text/css" /><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/jqueryui_autocomplete_lt2.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://image.librarything.com/css/toastify.css?v=3" type="text/css" /><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_toastify.css?v=5297" type="text/css"> <link loadpriority="high" data-bundle="lt2_deferred" rel="stylesheet" href="https://www.librarything.com//css/lt2_popup.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_deferred" rel="stylesheet" href="https://www.librarything.com//css/lt2_stylepicker.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_deferred" rel="stylesheet" href="https://www.librarything.com//css/lt_lightbox2020.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_deferred" rel="stylesheet" href="https://www.librarything.com//css/addbooks_express.css?v=5297" type="text/css"> <style data-bundle="translated_css" type="text/css" ver="5297"> spoiler:before { content:"Spoiler (click to see)" !important; } spoiler.spoiled:before { content: "Spoiler" !important; } </style><script fetchpriority="high" src="https://image.librarything.com/js/jquery-3.7.1.min.js?v=2"></script><script defer data-bundle="IE11_cssvars_polyfill">window.MSInputMethodContext && document.documentMode && document.write('<script src="https://cdn.jsdelivr.net/gh/nuxodin/ie11CustomProperties@4.1.0/ie11CustomProperties.min.js"><\x2fscript>');</script><script defer data-bundle="iOSSafari_100vh_pollyfill"> try { var lt = lt || {}; } catch(err){} iOSSafari_100vh_pollyfill_setVh = () => { const vh = parseFloat((window.innerHeight * 0.01).toFixed(2)); document.documentElement.style.setProperty('--vh', `${vh}px`); document.documentElement.style.setProperty('--vh100', `${window.innerHeight}px`); return vh; }; window.addEventListener('load', iOSSafari_100vh_pollyfill_setVh); </script><script defer data-bundle="translated_js" type="text/javascript" fetchpriority="high" version="5297"> try { var LibraryThing = LibraryThing || {}; } catch(er){} LibraryThing.translated_vars_key = ""; LibraryThing._isLT2 = 1; LibraryThing.lt2_popup_style = "legacy"; LibraryThing.is_signed_in = 0; LibraryThing.isDevBox = 0; LibraryThing.loaded_translated_vars = 1; LibraryThing.servers = LibraryThing.servers || {}; LibraryThing.servers.image = "https://image.librarything.com"; LibraryThing.servers.pics = "https://pics.cdn.librarything.com/"; LibraryThing.ltstrings = LibraryThing.ltstrings || {}; LibraryThing.ltstrings.yes = "Yes"; LibraryThing.ltstrings.no = "No"; LibraryThing.ltstrings.save = "Save"; LibraryThing.ltstrings.cancel = "Cancel"; LibraryThing.ltstrings.savereview = "Save Review"; LibraryThing.ltstrings.saving = "saving"; LibraryThing.ltstrings.loading = "Loading..."; LibraryThing.ltstrings.confirm = "Confirm?"; LibraryThing.ltstrings.rejectAndDeleteAuthor = "Reject and delete this author?"; LibraryThing.ltstrings.referrer = ""; LibraryThing.ltstrings.areyousure = "Are you sure?"; LibraryThing.ltstrings.areyousure_immediate = "This item will be deleted immediately. Are you sure you want to delete this item?"; LibraryThing.ltstrings.getting_help = "Getting help..."; LibraryThing.ltstrings.alt_cover_image = "Cover Image"; LibraryThing.ltstrings.close = "Close"; LibraryThing.ltstrings.show_more_elipses = "Show more..."; LibraryThing.ltstrings.show_more = "Show More"; LibraryThing.ltstrings.show_less = "Show Less"; LibraryThing.ltstrings.show_all = "Show All"; LibraryThing.ltstrings.see_more_elipses = "See more..."; LibraryThing.ltstrings.see_more = "See More"; LibraryThing.ltstrings.see_less = "See Less"; LibraryThing.ltstrings.see_all = "See All"; LibraryThing.ltstrings.attempting_size_calc = "Attempting to calculate size"; LibraryThing.ltstrings.approximately = "approximately"; LibraryThing.ltstrings.deleteinventory = "Clear all inventory information for this collection?"; LibraryThing.ltstrings.abx_addbook = "Add Book"; LibraryThing.ltstrings.genre_flag_confirmation = "Flag this genre as egregiously wrong?"; LibraryThing.ltstrings.loader_messagesA = [ "Still Loading...", "A lot of thinking happening...", "It seems we may be here a while...", "Maybe you should start a book...", "In fact, maybe you should start writing a book...", "We have hit a writers block but we are still working on it..." ]; LibraryThing.ltstrings.datatables = { "emptyTable": "No data available in table", "info": "Showing _START_ to _END_ of _TOTAL_ entries", "infoEmpty": "Showing 0 to 0 of 0 entries", "infoFiltered": "(filtered from _MAX_ total entries)", "lengthMenu": "Show _MENU_ entries", "loadingRecords": "Loading...", "processing": "Processing...", "search": "Search:", "zeroRecords": "No matching records found", "paginate": { "first": "First", "last": "Last", "next": "Next", "previous": "Previous" }, "aria": { "sortAscending": ": activate to sort column ascending", "sortDescending": ": activate to sort column descending" } }; LibraryThing.ltstrings.recs = { "filter": { "tagRemove": "Are you sure you want to enter tag remove mode?", "tagReset": "Are you sure you want to reset your default tags?", } }; </script><script loadpriority="high" data-bundle="lt2_core" src="https://image.librarything.com/js2/lt2_jsinit.js" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_core" src="https://image.librarything.com/js2/mmlog.js?v=2" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_core" src="https://image.librarything.com/js/modernizr_lt.3.6.0010.js?v=2" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_core" src="https://image.librarything.com/js/jquery.visible.js?v=2" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_core" src="https://www.librarything.com//js2/lt2_basics.js?v=5297" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_core" src="https://www.librarything.com//js2/lt2_main.js?v=5297" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_core" src="https://www.librarything.com//js2/autocomplete.js?v=5297" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_core" src="https://image.librarything.com/js2/toastify.js?v=2" type="text/javascript" language="Javascript"></script> </head><body data-gv="5297" data-product="lt2" data-lt2="1" data-observe-resizes data-fa_v="6" data-fa class="lt2 serifed_headers lt1nav about libraries ie6or7 ie7or8 ie ie7 " ><div id="skiptocontent"><a tabindex="0" href="#lt2_content">Skip to main content</a></div> <nav id="lt1_nav" role="navigation" aria-label="Main Navigation"><a class="anchor" name="top"></a><a class="anchor" name="t"></a><div id="masthead" class="ie6or7 ie7or8 ie ie7 "> <a title="Home" href="/" target="_top"> <img id="masthead_logo_wordmark2" src="https://image.librarything.com/pics/lt1wordmark_150w.png" srcset="https://image.librarything.com/pics/lt1wordmark_300w.png 2x, https://image.librarything.com/pics/lt1wordmark_450w.png 3x" alt="LibraryThing Home" /> <img id="masthead_lt_logo2" src="https://image.librarything.com/pics/ltlogo_square_fff_trans.png" srcset="https://image.librarything.com/pics/ltlogo_square_fff_trans@2x.png 2x, https://image.librarything.com/pics/ltlogo_square_fff_trans@3x.png 3x" alt="LibraryThing Home" /> </a> <nav id="tabs" role="region" aria-label="Main Navigation Choices"> <a class="sitenav_item g1" data-icon="" id="masttab_home" href="/" target="_top">Home</a><a class="sitenav_item g3" id="masttab_groups" href="/ngroups" target="_top">Groups</a><a class="sitenav_item g3 spacer_after" id="masttab_talk" href="/talk" target="_top">Talk</a><a class="sitenav_item g4" id="masttab_more" href="/more" target="_top">More</a><a class="sitenav_item g4" id="masttab_z" href="/zeitgeist" target="_top">Zeitgeist</a> <div class="sitenav_item g6" id="mobile_topmenu"> <i class="fas fa-bars"></i> <div class="navicon" id="lt2_navnotifications"> </div> </div> </nav> <div id="mobile_topmenu_content"> <a class="sitenav_item g1" data-icon="" id="masttab_home" href="/" target="_top">Home</a> <a class="sitenav_item g3" id="masttab_groups" href="/ngroups" target="_top">Groups</a> <a class="sitenav_item g3 spacer_after" id="masttab_talk" href="/talk" target="_top">Talk</a> <a class="sitenav_item g4" id="masttab_more" href="/more" target="_top">More</a> <a class="sitenav_item g4" id="masttab_z" href="/zeitgeist" target="_top">Zeitgeist</a><div class="separator"></div><a id="mastheadSigninLink" href="/" target="_top">Sign in / Join</a><a href="#" onclick="languagelist(0,0,0); return false;"><i class="fa-solid fa-globe"></i> English</a><a href="https://wiki.librarything.com/index.php/HelpThing:About_libraries" target="_top">Help</a> </div> <div id="mast_alt"> <div id="mastsearch"> <form action="/search.php" method="GET" target="_top" role="search" id="sbarform" name="sbarform"> <div id="mastsearch_container"> <input type="hidden" name="searchtype" value="newwork_titles"/> <input type="text" id="mastsearch_query" value="" placeholder="Search LibraryThing" name="term"> <img id="mastsearch_glass" tabindex=0 title="Search Site" alt="Search Site" src="https://image.librarything.com/pics/sbar_4.png" srcset="https://image.librarything.com/pics/sbar_4@2x.png 2x, https://image.librarything.com/pics/sbar_4@3x.png 3x" height="13px" width="12px" onclick="document.sbarform.submit();"/> </div> </form> </div> <div id="mastuser"> <ul> <li class="mastuseritem" data-id="userpad_signin"><a id="mastheadSigninLink" href="/" target="_top">Sign in / Join</a></li><li class="mastuseritem" data-id="userpad_langs"><a href="#" onclick="languagelist(0,0,0); return false;"><i class="fa-solid fa-globe"></i> English</a></li><li class="mastuseritem" data-id="userpad_help"><a href="https://wiki.librarything.com/index.php/HelpThing:About_libraries" target="_top">Help</a></li> </ul> </div> </div> <div id="mast_rule"></div> <ul id="languagechoice" style="display:none;" onmouseover="languagemenu=true;" onmouseout="languagemenu=false;setTimeout(function(){if (!languagemenu) {document.getElementById('languagechoice').style.display='none';}},1000);"></ul></div></nav><div id="lt2_maincontent" class="flex col3" data-content-product="lt2" ><a class="anchor" name="top"></a><a class="anchor" name="t"></a><nav id="lt_mainsidebar" class="lt2_sidebar lt_mainsidebar" ><div id="mobile_pagemenu"><div id="sidebar_control_name"><span id="sidebar_dropdownmenu_currentpage_name">Libraries</span><span class="sidebar_control_iconstack fa-stack fa-1x"> <i class="fas fa-copy fa-stack-1x"></i> <i class="sidebar_control_iconstack_caret fas fa-caret-down fa-stack-1x"></i> </span></div></div><div class="dyn_nav_menu" data-observe-resizes ><div class="sidebar_group aboutgroup"><div class="sidenav_subgroup lt2_nogrouptitle " id="sidenav_action_subgroup_itemA"><a id="lt2_sidebar_about" href="/about" class="sidebar_menu_item" ><span class="lt2_sidebar_accordion_title">About LibraryThing</span></a><a id="lt2_sidebar_privacy" href="/privacy" class="sidebar_menu_item" ><span class="lt2_sidebar_accordion_title">Privacy and TOS</span></a><a id="lt2_sidebar_press" href="/press" class="sidebar_menu_item" ><span class="lt2_sidebar_accordion_title">Press Information</span></a><a id="lt2_sidebar_whoweare" href="/whoweare.php" class="sidebar_menu_item" ><span class="lt2_sidebar_accordion_title">Who We Are</span></a><a id="lt2_sidebar_contact" href="/contact" class="sidebar_menu_item" ><span class="lt2_sidebar_accordion_title">Contact Us</span></a></div></div><div class="sidebar_group megroup"><h2 class="section_title">It's For You</h2><div class="sidenav_subgroup" id="sidenav_action_subgroup_itemA"><a id="lt2_sidebar_authors" href="/about/authors" class="sidebar_menu_item" ><span class="lt2_sidebar_accordion_title">Authors</span></a><a id="lt2_sidebar_libraries" href="/about/libraries" class="sidebar_menu_item selected" ><span class="lt2_sidebar_accordion_title">Libraries</span></a><a id="lt2_sidebar_publishers" href="/about/publishers" class="sidebar_menu_item" ><span class="lt2_sidebar_accordion_title">Publishers</span></a><a id="lt2_sidebar_organizations" href="/organizations" class="sidebar_menu_item" ><span class="lt2_sidebar_accordion_title">Organizations</span></a><a id="lt2_sidebar_bookstores" href="/about/bookstores" class="sidebar_menu_item" ><span class="lt2_sidebar_accordion_title">Bookstores</span></a></div></div></div></nav> <main data-observe-resizes id="lt2_content" class="with_sidebar" role="main"><div class="lt2_loading_indicator"></div> <div id="lt2_content_interior"> <a class="anchor" name="top"></a><a class="anchor" name="t"></a> <h1 class="first">How Libraries Can Use LibraryThing</h1> <p>We love libraries. Let us count the ways.</p> <h2>LibraryThing as an OPAC</h2> <div class="callout" > <a href="https://www.librarycat.org/" target="_blank"><img class="floatright" src="https://image.librarything.com/press/tclogo_blue_medium_540w.gif" width="150"></a> </div> <p><a href="/organizations.php">Small organizations and libraries</a> can use LibraryThing as a basic catalog for their collection. If you want a simple, powerful way to revamp your catalog for visitors and patrons, check out <a href="https://www.librarycat.org/">TinyCat</a>—LibraryThing's online catalog for tiny libraries, perfect for <a href="https://www.librarycat.org/forschools">schools</a>, <a href="https://www.librarycat.org/forschools">classrooms</a>, religious libraries, community organizations, and any library with 20,000 items or less.</p> <h2>Put social data in your OPAC</h2> <p>Fully integrate LibraryThing's social data into your catalog using <a href="/forlibraries/">LibraryThing for Libraries</a>. LTFL lets you add tag-based browsing, book recommendations, ratings, reviews, series data, awards information, stack maps, virtual shelf browsers, and more to your OPAC, by integrating with LibraryThing and its high-quality book data.</p> <h2>Library Anywhere</h2> <p>Make your existing OPAC instantly mobile, with <a href="https://www.libanywhere.com/">Library Anywhere</a> available through any device with a web-browsing feature. Patrons can search the catalog, renew books, place holds—whatever they can do with the regular OPAC.</p> <p>Libraries can display events, branches, contact-a-librarian information, and other mobile pages, or link out to your own existing pages.</p> <a class="text" href="https://www.librarything.com/forlibraries/"><img src="https://image.librarything.com/pics/about_screens_libraries.jpg" class="screenshot" width="400" height="285"></a> <p>Visit <a href="/forlibraries/">LibraryThing for Libraries</a> to learn more about social data and Library Anywhere.</p> <h2>Show off books with an LT widget</h2> <p>Use a free <a href="/widget">LibraryThing widget</a> to display new books or featured books on your library's website. You'll have to create a LibraryThing account, and add the books you want to display. Then use one of our widgets to generate code that you can just copy and paste into your website.</p> <h2>List your events on LibraryThing Local</h2> <p>Add your library to <a href="/local">LibraryThing Local</a>, then enter your upcoming events</a>. This not only lists your library and events on LibraryThing.com, but also makes the information available to all readers in our free iPhone app, <a href=https://blog.librarything.com/2010/01/local-books-iphone-application/">Local Books</a>.</p> <h2>Use our data</h2> <p>Any non-commercial entity can <a href="/api">use our APIs</a>, which are full of rich book-related data: using the ISBN, find other editions of a book, plus title or language information.</p> <h2>Connect to us</h2> <p>Want to provide data to LibraryThing? If your catalog has an open Z39.50 connection, email Chris (<span style="white-space: nowrap;">chrisc<img src="https://image.librarything.com/pics/squiggle.gif" width="13" height="13" hspace="3" alt="AT SIGN">librarything.com</span>) for details.</p> <h2>Contact Us</h2> <p>Contact us (<b>info@librarything.com</b>) with any questions.</p> <a name="bottom"></a></div></main><div id="helpdrawer" data-helpurl="https%3A%2F%2Fwiki.librarything.com%2Fapi.php%3Fformat%3Djson%26action%3Dparse%26origin%3D%2A%26servedby%3D1%26page%3DHelpThing%3AAbout_libraries" data-baseurl="https%3A%2F%2Fwiki.librarything.com%2Fapi.php%3Fformat%3Djson%26action%3Dparse%26origin%3D%2A%26servedby%3D1%26page%3D" ><a id="hdclose" href="#" onclick="lt.helpdrawer_close();return false;" class="greylink" title="Close Help"><i class="fa-solid fa-circle-xmark"></i></a><div id="hdc"></div></div><footer class="lt2_footer bluelink"><div class="lt2_footer_links controlitems"><a href="#" id="stylepicker_switch" onclick="lt.stylepick_switch();return false;"><i class="fas fa-text-size"></i> Change Style</a><a class="footer_displaymode" data-dmode="0" title="Toggle Desktop Version" href="#" onclick="return lt.desktopversion();"><span id="footer_desktop"><i class="fas fa-desktop"></i>Desktop View</span><span id="footer_mobile"><i class="far fa-mobile-alt"></i>Mobile View</span></a></div><div class="lt2_footer_links"><a href="/" target="_top">Home</a><a href="/about" target="_top">About</a><a href="/contact" target="_top">Contact</a><a href="/privacy" target="_top">Privacy</a><a href="https://wiki.librarything.com/index.php/HelpThing:About_libraries" target="_top">Help</a></div><div class="lt2_footer_links small"><a href="https://blog.librarything.com" target="_blank">Blog</a><a href="https://wiki.librarything.com">WikiThing</a><a href="/commonknowledge/">Common Knowledge</a><a href="/ner">Early Reviewers</a><a href="/legacylibraries">Legacy Libraries</a><a href="/local">Local</a><a href="/developer">APIs</a><a href="https://www.librarycat.org/">TinyCat <i class="lti lti-tinycat"></i></a></div></footer><div id="lt2_stylepicker"><div id="lt2_stylepicker_close" onclick="lt.stylepick_switch();"><i aria-label="Close" class="fas fa-times"></i></div><a href="#" title="verdant_14" data-style="verdant_14" onclick="lt.stylepick('verdant_14');return false;" class="stylepicker_item alwaysblue selected ">Verdana Standard</a><a href="#" title="verdant_12" data-style="verdant_12" onclick="lt.stylepick('verdant_12');return false;" class="stylepicker_item alwaysblue ">Verdana Small</a><a href="#" title="verdant_tight_12" data-style="verdant_tight_12" onclick="lt.stylepick('verdant_tight_12');return false;" class="stylepicker_item alwaysblue ">The Lorax</a><a href="#" title="system_14" data-style="system_14" onclick="lt.stylepick('system_14');return false;" class="stylepicker_item alwaysblue ">System Standard</a><a href="#" title="system_15" data-style="system_15" onclick="lt.stylepick('system_15');return false;" class="stylepicker_item alwaysblue ">System Large</a><a href="#" title="georgia_14" data-style="georgia_14" onclick="lt.stylepick('georgia_14');return false;" class="stylepicker_item alwaysblue ">Georgia</a><a href="#" title="system_large" data-style="system_large" onclick="lt.stylepick('system_large');return false;" class="stylepicker_item alwaysblue ">Large Text</a><a href="#" title="atkinson_16" data-style="atkinson_16" onclick="lt.stylepick('atkinson_16');return false;" class="stylepicker_item alwaysblue ">Atkinson</a></div><div id="gdpr_notice" class=""><button class="btn" id="gdpr_closebutton" onclick="gdpr_notice_clicked();return false;">I Agree</button><div id="gdpr_content">This site uses cookies to deliver our services, improve performance, for analytics, and (if not signed in) for advertising. By using LibraryThing you acknowledge that you have read and understand our <a href="/privacy" class="alwaysblue">Terms of Service and Privacy Policy</a>. Your use of the site and services is subject to these policies and terms.</div></div></div><div id="lt2_page_overlay"></div><div id="bottomscripts"><script loadpriority="high" data-bundle="lt2_deferred" src="https://image.librarything.com/js2/lt2_tabs.js?v=2" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_deferred" src="https://image.librarything.com/js/jquery.truncator.js?v=2" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_deferred" src="https://www.librarything.com//js/lt_utility.js?v=5297" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_deferred" src="https://image.librarything.com/js/jquery.easing.1.3.js?v=2" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_deferred" src="https://www.librarything.com//js2/lt2_popup.js?v=5297" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_deferred" src="https://image.librarything.com/js2/imagesloaded.pkgd.js?v=2" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_deferred" src="https://www.librarything.com//js2/lt_lightbox2020.js?v=5297" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_deferred" src="https://www.librarything.com//js2/lt_maxbox.js?v=5297" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_deferred" src="https://www.librarything.com//js2/addbooks_express.js?v=5297" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_deferred" src="https://www.librarything.com//js2/collections.js?v=5297" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_deferred" src="https://www.librarything.com//js2/ratings.js?v=5297" type="text/javascript" language="Javascript"></script> <script async src="https://www.googletagmanager.com/gtag/js?id=G-3FXSBC8C5V"></script> <script> window.lt2_prod = 'lt2'; window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} if (window.lt2_prod === 'talpa') { gtag('consent', 'default', { 'ad_storage': 'granted', 'ad_user_data': 'denied', 'ad_personalization': 'denied', 'analytics_storage': 'granted' }); } else { let consent_settingsA = {"ad_storage":"denied","analytics_storage":"denied"}; var consent_setting = 'denied'; gtag('consent', 'default', { 'ad_storage': consent_settingsA.ad_storage, 'ad_user_data': 'denied', 'ad_personalization': 'denied', 'analytics_storage': consent_settingsA.analytics_storage }); } gtag('js', new Date()); gtag('config', 'G-3FXSBC8C5V'); //gtag('config', 'LTNonMember'); // global_domain = </script> </div><script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'8eb1290bbbfc48ee',t:'MTczMzAzNjAwOS4wMDAwMDA='};var a=document.createElement('script');a.nonce='';a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>