代码 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

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

bookhub -- 扁平化本地电子书管理与分享工具的更多相关文章

  1. Atitit 管理的模式扁平化管理 金字塔 直线型管理 垂直管理 水平管理 矩阵式管理 网状式样管理 多头管理 双头管理

    Atitit 管理的模式扁平化管理  金字塔 直线型管理 垂直管理 水平管理 矩阵式管理 网状式样管理 多头管理 双头管理 1.1. 矩阵管理 1 1.2. 相关信息 矩阵的历史 1 1.3. 基于“ ...

  2. HihoCoder1650 : 扁平化管理([Offer收割]编程练习赛38)(二分)

    描述 小Hi的公司包括CEO在内一共有N名员工.这N名员工的上下级关系形成树形结构,CEO处于树根,普通员工处于叶子节点. 现在公司希望管理扁平化,要求树形结构中的层级不超过L层.此外,假设A是B的直 ...

  3. IT传统组织结构及新型扁平化组织

    如今互联网企业正凶猛的改变人们衣食住行的方方面面,衣->淘宝,蘑菇街;食->大众点评,口碑;住->去哪,途牛:行->12306, 多次听到互联网的同行介绍他们就是要“快”,快速 ...

  4. 11款扁平化设计的 Twitter Bootstrap 主题和模板

    扁平化设计和 Bootstrap 框架是2013年网页设计领域的两大设计潮流.把这两者集合起来不是件容易的事情,使用下面这些主题和模板将节省我们的开发时间,因为我们可以修改已有的基础代码,而不是从零开 ...

  5. 苹果 Mac OS X Yosemite 10.10 新功能特性总结 - 扁平化、主打跨设备的无缝连通性

    苹果在2014.06.03凌晨的 WWDC 2014 大会上正式发布了最新的 OS X Yosemite 桌面操作系统和 iOS 8 移动系统.虽然整场发布会的重心都在软件上,并没有硬件亮相,但软件上 ...

  6. ace后台管理系统扁平化框架

    Bootstrap ACE后台管理界面模板(扁平化) 所属分类:后台模板 文件大小:1.22 MB 阅读:236697次 下载:55929次 来源:www.daimajiayuan.com 分享到:更 ...

  7. [转载]超赞!32款扁平化Photoshop PSD UI工具包(下)

    32款扁平化风格的UI工具包第二弹!上篇为大家分享了16款风格各异的UI Kits,下篇继续为大家呈上16款精美的UI工具包,全部都有Photoshop PSD文件可以下载哦,喜欢就赶紧收藏吧! 17 ...

  8. AppBox升级进行时 - 扁平化的权限设计

    AppBox 是基于 FineUI 的通用权限管理框架,包括用户管理.职称管理.部门管理.角色管理.角色权限管理等模块. AppBox v2.0中的权限实现 AppBox v2.0中权限管理中涉及三个 ...

  9. 问你觉得iOS7为什么要扁平化,扁平化和之前的比有什么优势

    问你觉得iOS7为什么要扁平化,扁平化和之前的比有什么优势 苹果首席设计师谈为何会在iOS上选择扁平风格http://ndnews.oeeee.com/html/201306/11/71078.htm ...

随机推荐

  1. BZOJ 2004 Bus 公交线路(矩阵)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2004 题意:小Z所在的城市有N个公交车站,排列在一条长(N-1)km的直线上,从左到右依 ...

  2. TeeChart显示三维的图形,使用Surface

    绘制一个球 根据公式x^2+y^2+z^2=R^2; 令x=RsinAcosB  y=RcosAcosB z=RsinB using System; using System.Collections. ...

  3. 函数buf_pool_get

    根据space ,offset 获取 buff pool的实例 下标 /**************************************************************** ...

  4. uva1262Password

    解码,暴力. 恬不知耻地把暴力题解放了上来,因为k比较小,直接暴力找到字符串第k大就可以了. 编码解码就是根据组合数学公式算出来它到底在哪. dfs返回bool就能使得找到字典序第k大字符串以后退出d ...

  5. Firefox和Chrome浏览器导出书签

    Chrome浏览器: 或者直接在地址栏中输入:“chrome://bookmarks/#1”也可以 Firefox浏览器:

  6. 数据库编程与C#编程互译

    今天有一段代码,先是用程序实现. 闲来无聊,又用存储过程实现了一次. 程序中实现. /// <summary> /// 根据区域和用户名获取可访问的国家 /// </summary& ...

  7. BZOJ_1025_[SHOI2009]_游戏_(素数表+最小公倍数+DP)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1025 分析 对于\(n\),转一圈回来之后其实是好几个环各转了整数圈.这些环中的数为\(1,2 ...

  8. Js获取日期时间及其它操作

    var myDate = new Date();myDate.getYear();        //获取当前年份(2位)myDate.getFullYear();    //获取完整的年份(4位,1 ...

  9. poj 2063 Investment

    题意:给定一个初始资金capital,然后给定d种投资方案,每种投资方案中有投资额value[i](是1000的倍数)和利息interest[i],每年的投资就可以拿到全部利息,然后累加起来继续投资利 ...

  10. PL/SQL中LOOP循环控制语句

    在PL/SQL中可以使用LOOP语句对数据进行循环处理,利用该语句可以循环执行指定的语句序列.常用的LOOP循环语句包含3种形式:基本的LOOP.WHILE...LOOP和FOR...LOOP. LO ...