bookhub -- 扁平化本地电子书管理与分享工具
2024-10-18 20:44:48
代码 github 地址:https://github.com/JackonYang/bookhub
初稿:
1. 关键功能点
- 扫描本地电子书(扩展名 pdf/epub 等),将不重复的复制到特定目录(图书仓库)下。 -- 电子书去重
- 把书的名字、大小等信息写入数据库,与豆瓣关联,建立个人图书信息库。 -- 为后续扩展提供基础
- 浏览、搜索、打开。基于图书信息库,搜索/浏览的维度更灵活。 -- 比全盘搜索 + 资源管理器方便很多
- 分享个人图书信息库。github 上开个仓库。可以自由参考、合并他人仓库。 -- 扫一下硬盘,索要图书、勾搭同伴、发现好书
- 记录并分析阅读行为。数据存在本地,可以像图书信息一样分享。 -- 优化个人读书习惯,反思阅读过程更容易
- 如果把扩展名改成 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
记录详细操作信息,写入数据库。
最新文章
- Mac中使用port升级gcc版本
- Asp.net NVelocity 模版引擎
- 小tip:纯CSS让overflow:auto页面滚动条出现时不跳动
- javascript双击事件取消默认的两次单击事件
- bzoj3514
- iOS常见的设计模式
- Codeforces 551E - GukiZ and GukiZiana(分块)
- 5个最佳免费Linux杀毒软件
- PrintWriter 和 BufferedWriter 写入文件.
- [每日一题] 11gOCP 1z0-052 :2013-09-4 block header grows............................................A33
- linux select 网络模型
- .29-浅析webpack源码之Resolver.prototype.resolve
- 【Alpha】阶段总结报告
- Docker教程:Docker镜像导出及迁移
- .Net Framework项目引用.NetStandard标准库出现版本冲突解决办法
- Css实现手机端页面强制横屏的方法示例
- 原 HTML5+规范:barcode(条码扫描)
- scrapy框架学习第一天
- hdu3038How Many Answers Are Wrong(带权并查集)
- 001.Amoeba读写分离部署