一、从 calibre 库导入书籍
Calibre为电子书管理软件,可以管理电子书、转换格式、发布到Kindle等电子书阅读设备。而 calibreweb 是建立在 Calibre 基础上可以在局域内通过网页浏览和管理电子书库的web端。
calibreweb提供了一个方便的方式来为你的电子书实现在线阅读。calibre库中的电子书可以通过多种方式导入到calibreweb中,包括手动上传和通过文件夹监控。
<p>def add_books(self, paths: List[Union[str, Path]],
metadata: Optional[Dict[str, Any]] = None) -> List[str]:
"""
Add one or more books to the database from the location specified by the given path.
Automatically adds new authors, tags and series.
Returns a list of new book ids.
The function does not rewrite existing books.
If a book already exists in the database, it is not added again.
:returns: list of ids of newly added books
"""
</code></pre>
也就是说,我们可以通过调用 add_books()
函数将电子书添加到数据库中,这个函数的一些参数可以用来设置元数据(如标题、作者、出版社等)。
二、calibreweb自带的阅读器
为了实现更好的用户体验,并避免依赖第三方阅读器,CalibreWeb自带了一个在线阅读器。它允许用户选择阅读器主题、上传笔记、高亮文本、从本地上传字体等。
下面是一个例子,在此处呈现用户指定的电子书:
<div class="reader-container">
<div class="reader-headline">
<h2 id="book-title" class="title"></h2>
<div class="author-line">
<span id="book-authors" class="author"></span>
<span id="book-series" class="series"></span>
<span id="book-series-number" class="seriesNumber"></span>
</div>
</div>
<div class="reader-content-container">
<div id="reader-content" class="reader-content"></div>
</div>
</div>
<script>
$(() => initReader(/*args*/));
</script>
三、批量导入电子书
如果你的电子书库非常庞大,单个导入书籍可能太过麻烦,那么可以考虑使用批量导入书籍的功能。
CalibreWeb内置了一个简单的命令行工具bulkmeta用来支持批量获取元数据。以下是使用bulkmeta批量导入电子书的步骤:
- 备份数据
- 批量获取元数据
- 复制电子书文件到指定的文件夹(可选)
- 运行脚本
- 根据参数启动服务
<p>python bulkmeta.py --reset_tags True
--confirm_updates True
--authors_dup_filenames True
--exclude_tags "tags_to_exclude"
--download_covers True
--min_words 100
--workers 2
--metadata_source "douban"
--batch_size 100
--add "<path_to_books_directory>"</code></pre>
四、CalibreWeb无法从豆瓣获取电子书的元数据
豆瓣api子键 id
需要与它执行人的timestring唯一匹配,否则将返回错误状态码。使用豆瓣API时需要有相应的权限和API Key。如果你没有针对豆瓣获取信息的API Key,那么你可以自行刮削并获得所有必要的信息,否则你可以参考另一篇文章介绍的知识点以便自己使用豆瓣API获取电子书元数据。
五、获取电子书元数据失败
有时候在尝试导入一本电子书时,CalibreWeb会无法获取电子书的元数据。这可能是因为电子书没有isbn或者其他原因所致。在这种情况下,你可以手动编辑元数据,将书名、作者、封面等信息加入元数据中,以方便管理。
<p>def set_metadata(self, book_id: int, metadata: dict) -> bool:
"""
Set the metadata of a book
:param book_id: The book id
:param metadata: The metadata to set
:return: Whether the metadata was successfully set
"""
</code></pre>
可以通过调用 set_metadata()
函数为所需的图书设置元数据。这个函数的第二个参数应该是一个字典,其中包含键值对,包括书的标题、作者、出版社等属性。
六、结语
在本文中,我们分别介绍了 CalibreWeb 的多种功能,例如导入书籍、在线阅读、批量导入书籍、获取元数据失败等。相信通过本文的介绍,你已经对 CalibreWeb 有了更深入的了解,并且能够更好地运用 CalibreWeb 管理自己的电子书库。