# kindle manager
---
> ### 找不到趁手的APP,本意自写自用兼练手,零星写了几天觉得得心应手,也许可以做的更好吧


## CHANGE LOG
[ChangeLog](changelog.md) 这里记录迭代过程,及过程中记录的一些功能的想法,
以及python使用中的一些问题lession learning
## 版权等问题
1. 对于自己笔记涉及的书,会去douban/amazon,爬取少量bookinfo,不知算不算侵权
1. 所有code系本人码出,如有借用,会在注释中以refrence说明
1. 其他问题,望告知, [gavin's mail address](douboer@gmail.com)
1. 所有内容解析都采用正则实现,没有使用xpath,beautifulsoap,据说regexp更快, 当然对我来说生产效率的原因,有兴趣可以看代码
1. 不得不说python的数据结构比perl难用一些,不过defaultdict用趁手了,也还可以
## 使用说明
一些功能,比如douban信息关联,都是临时想到,所以,后补充吧
大体功能:
1. 读取kindle/本地笔记,获取标注和剪贴文章。
1. 读取kindle/本地单词,获取标注和剪贴文章。
1. 按书本标题作者搜索,默认模糊搜索,并输出markdown格式标注
1. 一些导入导出及回写等功能
## 类图

## GUI设计





## 格式说明
在`My Clippings.txt`中,有3种类型
### 书签 ###
格式为:
```
庆余年(精校版) (猫腻)^M
- 您在位置 #33260 的书签 | 添加于 2020年1月12日星期日 下午10:37:10^M
^M
^M
```
### 标注 ###
格式为:
```
薛兆丰经济学讲义 (薛兆丰)^M
- 您在位置 #1408-1410的标注 | 添加于 2020年1月13日星期一 上午8:11:05^M
^M
么到底什么叫边际?边际就是“新增”带来的“新增”。 例如,边际成本就是每新增一个单位产品所需要付出的新增成本;边际收入是每多卖一个产品能够带来的新增收入;边际产量是每新增一份投入所带来的新增产量;边际效用是每消耗一个单位的商品所能带来>的新增享受。^M
```
### 笔记 ###
笔记比较特殊,笔记是与标注连在一起的。表示该笔记是在该标注上完成的。
```
薛兆丰经济学讲义 (薛兆丰)^M
- 您在位置 #4284-4286的标注 | 添加于 2020年1月30日星期四 上午10:23:58^M
^M
一个国家很大,贫富有差距,并非每个学校和家长都能负担得起这样标准的校车。标准太高,就会逼着很多学校,尤其是农村的学校放弃提供校车,家长们就只能使用安全性能更低的交通工具,比如自己骑自行车或雇用黑车等,结果是孩子们享受到的安全保障反而降低了。^M
==========^M
薛兆丰经济学讲义 (薛兆丰)^M
- 您在位置 #4286 的笔记 | 添加于 2020年1月30日星期四 上午10:26:10^M
^M
是山寨 假货 问题^M
==========^M
薛兆丰经济学讲义 (薛兆丰)^M
- 您在位置 #4286 的笔记 | 添加于 2020年1月30日星期四 上午10:26:31^M
^M
山寨 假货 问题^M
```
### 剪贴文章 ###
```
Book Title\n
- 剪贴文章 位置N | 已添加至 sometime\n
\n
剪贴文章内容\n
每一个摘录都用`==========\n`分割开。
```
## 内容提取
### 书名
```
薛兆丰经济学讲义 (薛兆丰)^M
vi re:
^.\([^(]\+\)(
```
### 作者
```
庆余年(精校版) (猫腻)^M
vi re:
([^()]\{-})^M$
```
### 位置/页码/添加时间
```
- 您在位置 #4286 的笔记 | 添加于 2020年1月30日星期四 上午10:26:31^M
vi re:
#\(\d\+-\{0,1}\d\+\).\+\(\d\{4}年\d\{1,2}月\d\{1,2}日\)\(星期.\) \(..\)\(\d\{1,2}:\d\{1,2}:\d\{1,2}\)
```
```
group1 - 页码
group2 - xxxx年xx月xx日
group3 - 星期
group4 - 上下午
group5 - 时间
```
## 数据结构
### dict data structure
```
book =
{
"bookname_xxx": {
"author": "李",
"section1636": {
"content": "张",
"day": "2020年4月3日",
"meridiem": "下午",
"position": "311-311",
"time": "3:00:53",
"type": "HL",
"week": "星期五"
},
"section1651": {
"content": "治",
"day": "2020年4月3日",
"meridiem": "下午",
"position": "514",
"time": "3:43:50",
"type": "NT",
"week": "星期五"
},
"section1814": {
"content": null,
"day": "2020年4月12日",
"meridiem": "下午",
"position": "5186",
"time": "2:20:12",
"type": "BM",
"week": "星期日"
},
...
},
...
}
```
### Markdown文本 ###
```
TYPE | bookname | author | marktime | content
--|--|--|--|--
xx|xx|xx|xx|xx
```