← 返回
数据分析 中文

libby-book-monitor

Track book availability on Libby/OverDrive libraries. Search library catalogues, manage a watchlist, and get notified when books are added. Use for "libby",...
追踪Libby/OverDrive图书馆的图书可借状态。搜索馆藏目录,管理关注清单,并在新书入库时收到通知。
alexpolonsky
数据分析 clawhub v1.0.0 1 版本 99862.4 Key: 无需
★ 0
Stars
📥 726
下载
💾 12
安装
1
版本
#latest

概述

Libby/OverDrive Book Monitor

Track book availability on Libby/OverDrive libraries. Search catalogues, manage a watchlist, and get notified when books are added to your library's collection.

> Disclaimer: This is an unofficial tool, not affiliated with or endorsed by OverDrive/Libby. Catalogue data queries APIs that power the website and may not reflect actual availability. This tool does NOT borrow books or place holds. Provided "as is" without warranty of any kind.

Quick Start

# Search a library catalogue
python3 {baseDir}/scripts/libby-book-monitor.py search telaviv "Project Hail Mary"

# Add a book to your watchlist
python3 {baseDir}/scripts/libby-book-monitor.py watch "Kafka on the Shore" --author "Haruki Murakami"

# Check your watchlist against the API
python3 {baseDir}/scripts/libby-book-monitor.py check

# Show your watchlist
python3 {baseDir}/scripts/libby-book-monitor.py list

Commands

CommandDescription
----------------------
search Search a library catalogue by title/author
watch </code></td><td>Add a book to the watchlist</td></tr><tr><td><code>unwatch <title></code></td><td>Remove a book from the watchlist</td></tr><tr><td><code>list</code></td><td>Show the watchlist with status</td></tr><tr><td><code>check</code></td><td>Check all watchlist books against the API</td></tr></tbody></table><h2>Options</h2><table><thead><tr><th>Option</th><th>Commands</th><th>Description</th></tr></thead><tbody><tr><td>--------</td><td>----------</td><td>-------------</td></tr><tr><td><code>--profile <name></code></td><td>all</td><td>Separate watchlist per user</td></tr><tr><td><code>--author <name></code></td><td>watch</td><td>Specify book author</td></tr><tr><td><code>--library <code></code></td><td>watch</td><td>Library code (default: from config)</td></tr><tr><td><code>--notify</code></td><td>check</td><td>Only print newly found books (for cron)</td></tr><tr><td><code>--data-dir <path></code></td><td>all</td><td>Custom data directory</td></tr></tbody></table><h2>Profiles</h2><p>Use <code>--profile</code> to maintain separate watchlists for different people:</p><pre><code>python3 {baseDir}/scripts/libby-book-monitor.py --profile jane watch "Dune" python3 {baseDir}/scripts/libby-book-monitor.py --profile bob check --notify </code></pre><h2>Configuration</h2><p>Default library is <code>telaviv</code> Israel Digital. Edit <code>~/.libby-book-monitor/config.json</code> to change:</p><pre><code>{ "default_library": "nypl", "libraries": { "nypl": "New York Public Library" } } </code></pre><p>The library code is the subdomain from your library's OverDrive site (e.g., <code>nypl.overdrive.com</code> -> <code>nypl</code>).</p><h2>Cron Integration</h2><p>Run a daily check that only outputs when books are newly found:</p><pre><code>python3 {baseDir}/scripts/libby-book-monitor.py --profile jane check --notify </code></pre><p>If any new books are found, send the results to the user.</p><h2>Notes</h2><ul><li>Works with non-Latin scripts (Hebrew, Arabic, CJK, etc.)</li><li>Books are considered "found" when <code>isOwned: true</code> in the API response</li><li>1-second delay between API calls when checking multiple books</li><li>No external dependencies (Python stdlib only)</li><li>Data stored in <code>~/.libby-book-monitor/</code> (configurable via <code>--data-dir</code> or <code>$LIBBY_BOOK_MONITOR_DATA</code>)</li></ul></div> </div> </div> <div id="tab-versions" class="detail-content"> <div class="detail-section"> <h2>版本历史</h2> <p style="margin-bottom:12px;font-size:14px;color:#94a3b8;">共 1 个版本</p> <ul class="version-list"> <li> <div> <span class="version-tag">v1.0.0</span> <span style="font-size:11px;color:#5b6abf;margin-left:8px;background:#eef0ff;padding:1px 8px;border-radius:10px;">当前</span> </div> <div style="font-size:12px;color:#94a3b8;"> 2026-03-29 12:59 安全 安全 </div> </li> </ul> </div> </div> <div id="tab-security" class="detail-content"> <div class="detail-section"> <h2>安全检测</h2> <div class="sec-grid"> <div class="sec-card"> <h4>腾讯云安全 (Keen)</h4> <div class="sec-status sec-safe"> 安全,无风险 </div> <a href="https://tix.qq.com/search/skill?keyword=06d60080514477b6661ef29fa4b3ebb3" target="_blank">查看报告</a> </div> <div class="sec-card"> <h4>腾讯云安全 (Sanbu)</h4> <div class="sec-status sec-safe"> 安全,无风险 </div> <a href="https://static.cloudsec.tencent.com/html-report-v2/2026/05/25/399163_2f949e1bf7179799d338b4a05a157e67.html?q-sign-algorithm=sha1&q-ak=AKID8JMG1bzBC1dz96qNhssfFftujT1NCoFi&q-sign-time=1781389048%3B1812925048&q-key-time=1781389048%3B1812925048&q-header-list=host&q-url-param-list=&q-signature=3ff442a3804c93f7e8ec55734f077c5115d1ca92" target="_blank">查看报告</a> </div> </div> </div> </div> <!-- Recommended Skills --> <div style="margin-top:24px;"> <h2 style="font-size:18px;font-weight:600;margin-bottom:16px;">🔗 相关推荐</h2> <div class="rec-grid"> <div class="rec-card"> <span class="badge-cat" style="margin-bottom:8px;display:inline-block;">developer-tools</span> <h3><a href="/s/jlm-coffee">Jlm Coffee</a></h3> <div class="rec-owner">alexpolonsky</div> <div class="rec-desc">根据名称、设施、评分和营业时间搜索耶路撒冷特色咖啡店。当用户询问“耶路撒冷咖啡”、“耶路撒冷咖啡馆”等问题时使用。</div> <div class="rec-stats"> <span style="color:#f39c12;">★ 0</span> <span style="color:#5b6abf;">📥 729</span> </div> </div> <div class="rec-card"> <span class="badge-cat" style="margin-bottom:8px;display:inline-block;">data-analysis</span> <h3><a href="/s/akshare-stock">A股量化 AkShare</a></h3> <div class="rec-owner">mbpz</div> <div class="rec-desc">A股量化数据分析工具,基于AkShare库获取A股行情、财务数据、板块信息等。用于回答关于A股股票查询、行情数据、财务分析、选股等问题。</div> <div class="rec-stats"> <span style="color:#f39c12;">★ 165</span> <span style="color:#5b6abf;">📥 60,092</span> </div> </div> <div class="rec-card"> <span class="badge-cat" style="margin-bottom:8px;display:inline-block;">data-analysis</span> <h3><a href="/s/data-analysis">Data Analysis</a></h3> <div class="rec-owner">ivangdavila</div> <div class="rec-desc">{"answer":"数据分析与可视化。查询数据库、生成报告、自动化电子表格,将原始数据转化为清晰可行的见解。适用于:(1) 您……"}</div> <div class="rec-stats"> <span style="color:#f39c12;">★ 198</span> <span style="color:#5b6abf;">📥 65,168</span> </div> </div> </div> </div> </div> <script> document.addEventListener('DOMContentLoaded',function(){ document.querySelectorAll('.detail-tab').forEach(function(btn){ btn.addEventListener('click',function(e){ var tab = this.getAttribute('data-tab'); document.querySelectorAll('.detail-tab').forEach(function(b){b.classList.remove('active')}); document.querySelectorAll('.detail-content').forEach(function(c){c.classList.remove('active')}); this.classList.add('active'); var el = document.getElementById('tab-'+tab); if(el) el.classList.add('active'); }); }); }); </script> <div class="footer"> <p>Skill工具集 © 2026</p> </div></body> </html>