kindle paperwhite 笔记按名分类

Cool Idea

kindle 是我最喜欢的设备之一,入手一年以来,在上面我已经阅读了将近70本书,而又喜欢原版的系统(因为可以接受各种推送。如浏览网页直接 推送到kindle上等),刷了多看又卸载掉。kindle的原书笔记很丑。而且按照标记笔记时间进行排列。要是我同时读的有多本,标记的也有多本呢?那笔记会十分混乱。所以决定写下代码,帮助我进行分类。

之前在CSDN写过C++的,版本称为1.0吧,不过有bug就是中文字符什么的。

现在更新pyhon2.0版。

 

创作过程

1.分析 kindle 原装笔记格式

  1. 每条笔记都以书名起始,”==========”结束
  2. 书名和内容之间有两行空格

 

行者无疆 (余秋雨)
- 您在位置 #1635-1636的标注 | 添加于 2014年8月26日星期二 下午11:33:04

看城市潜力,拥挤的市中心不是标志。市中心是一个旋涡,把衰草污浊旋到了外缘。真正的潜力忽闪在小巷的窗台下,近郊的庭园里。
==========
行者无疆 (余秋雨)
- 您在位置 #1642-1643的标注 | 添加于 2014年8月26日星期二 下午11:33:33

这就像写作,当形容词如女郎盛妆、排比句如情人并肩,那就一定尚未进入文章之道。文章的极致如老街疏桐,桐下旧座,座间闲谈,精致散漫。 城市这篇文章,也是这样。
==========

 

 

2.具体实现

  1. 每次读取书名,如果书名不存在,将其存入字典(py为dic,c++为map)
  2. 读完书名读两行,因为一行为日期,一行为空行。
  3. 用字典去寻找title对应下标index,将当前的笔记内容存入对应的content

 

3.Fix bugs

  1. 每次读取content应该去除末尾换行符’\n’,否则判断和’==========’是否相等总为False
  2. 第一次读取title的时候,会读取\xef\xbb\xbf 三个字符,这是UTF引入的BOM来表示自身编码。去除即可。
  3. 修复linux下换行符引起的无限循环的问题(2015.4.7 )

 

使用方法

windows下:将 kindle 笔记 My Clippings.txt放于 e盘根目录下,运行代码后,会在e盘生成result.txt

linux下:自行修改路径,看备注直接使用当前路径也可以。

展示结果

the result of kindle note distribution

 

Code

最终代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

#kindle note v2.1
#author: hrwhisper
#date:   2015.4.7

MyClippingsPath='e:\\My Clippings.txt' #My Clippings.txt   =>linux当前目录
OutPutPath='e:\\result.txt'            #result.txt         =>linux

title,content,dic=[],[],{'a':0}
with open(MyClippingsPath,'r') as f:
    line = f.readline().strip('\xef\xbb\xbf')
    while line :
        index=dic.get(line,-1)
        if index == -1:
            index = dic[line]=len(title)           
            title.append(line)
            content.append('')

        f.readline() #time
        f.readline() #blank line
        
        while True:  #content start
            line = f.readline().strip() 
            if line == '==========' : break #content end
            content[index]+=line
        content[index]+='\n'*3
        line = f.readline() #next clipping title

with open(OutPutPath,'w') as f:
    for i , titleName in enumerate(title):
        f.write(titleName+'\n\n')
        f.write(content[dic[titleName]]) 
        f.write('\n\n==========\n\n')
    
print 'ok'

 

本博客若无特殊说明则由 hrwhisper 原创发布
转载请点名出处:细语呢喃 > kindle paperwhite 笔记按名分类
本文地址:https://www.hrwhisper.me/kindle-paperwhite-reading-note-classify-by-book-title/

听说长得好看的已经打赏了

OtherCodes, 技术改变生活 , , . permalink.

10 thoughts on “kindle paperwhite 笔记按名分类

Leave a Reply

Your email address will not be published. Required fields are marked *