• bookhub -- 扁平化本地电子书管理与分享工具


    代码 github 地址:https://github.com/JackonYang/bookhub

    初稿:

      

    1. 关键功能点

    1. 扫描本地电子书(扩展名 pdf/epub 等),将不重复的复制到特定目录(图书仓库)下。          -- 电子书去重
    2. 把书的名字、大小等信息写入数据库,与豆瓣关联,建立个人图书信息库。                          -- 为后续扩展提供基础
    3. 浏览、搜索、打开。基于图书信息库,搜索/浏览的维度更灵活。                                       -- 比全盘搜索 + 资源管理器方便很多
    4. 分享个人图书信息库。github 上开个仓库。可以自由参考、合并他人仓库。                         -- 扫一下硬盘,索要图书、勾搭同伴、发现好书
    5. 记录并分析阅读行为。数据存在本地,可以像图书信息一样分享。                                      -- 优化个人读书习惯,反思阅读过程更容易
    6. 如果把扩展名改成 avi/rmvb/ed2k 呢?                                                                     -- 敢分享者,真英雄。

    第 2 条是内部的实现方式,也是后续第 3-5 条功能的实现基础。

    2. 架构

    GUI 提供基本的本地电子书管理功能。书籍的详细信息管理、分享等,通过 Web 页面实现。

    GUI 与 Web 共用一个数据库。

    先只做 GUI,实现以下功能:

    1. 扫描电子书

    2. 浏览/搜索/打开 电子书

    3. 操作日志

    2.1 UI 层

    FrameOverView 和 Scanner 是 2 个用户可见的界面。

    其中,Scanner 暂时只支持命令行完成导入操作。

    后续提供 FrameScan 调用 Scanner,实现界面操作。

    Scanner 依赖于 Model 层 MediaRepo 的 add_file 方法,扫描到目标文件后,通过 add_file 方法加入仓库中。

    FrameOverView 使用 ObjectListView 实现,直接依赖于 Model 层的 BookMeta

    2.2 BookMeta

    类 ORM 的一个 Model,主要提供单条数据 getter/setter 的封装。

    MediaRepo 作为 BookMeta 的 Manager,封装数据库的查询/更新、文件系统的打开文件操作。

    2.3 MediaRepo

    管理数据库连接和文件系统。

    封装基本的增删改查操作。

    2.4 Logger

    记录详细操作信息,写入数据库。

  • 相关阅读:
    BZOJ3674:可持久化并查集加强版
    BZOJ3772:精神污染
    BZOJ3932:[CQOI2015]任务查询系统
    BZOJ3123:[SDOI2013]森林
    BZOJ1926:[SDOI2010]粟粟的书架
    029 列表类型内置方法
    02 Python爬虫之盗亦有道
    01 Python爬虫之Requests库入门
    028 字符串类型内置方法
    027 数字类型内置方法
  • 原文地址:https://www.cnblogs.com/misspy/p/3652222.html
Copyright © 2020-2023  润新知