您的位置:

深入了解 calibreweb

一、从 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批量导入电子书的步骤:

  1. 备份数据
  2. 批量获取元数据
  3. 复制电子书文件到指定的文件夹(可选)
  4. 运行脚本
  5. 根据参数启动服务
<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 管理自己的电子书库。