Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zoroqi/ember
Parse kindle's clippings.txt file
https://github.com/zoroqi/ember
Last synced: 3 months ago
JSON representation
Parse kindle's clippings.txt file
- Host: GitHub
- URL: https://github.com/zoroqi/ember
- Owner: zoroqi
- License: apache-2.0
- Created: 2022-07-12T06:09:37.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2022-09-10T13:01:49.000Z (over 2 years ago)
- Last Synced: 2024-08-02T20:45:01.034Z (6 months ago)
- Language: Go
- Size: 13.7 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- my-awesome - zoroqi/ember - 09 star:0.0k fork:0.0k Parse kindle's clippings.txt file (Go)
README
# ember
主要用来解析 kindle 的 "My Clippings.txt" 文件的工具.
"My Clippings.txt" 文件格式
```
书名 (作者)
标注索引和方式 | 标注时间内容
======
```解析结果会生成两部分
```
// 具体解析后的标注
type Clipping struct {
Book string // 书名
Text string // 高亮或笔记
Time time.Time // 时间
LocationStart int // 标注的起始坐标, 当坐标只有一个值得时候 0
LocationEnd int // 标注的结束坐标,
Type ClippingType // 枚举: highlight,note,bookmark
}
// 未解析的块结构
type Block struct {
num int
Book string
Index string
Text string
Err error
}
```提供两个工具
1. cli, 直接以 json 输出
1. 可以使用 jq 进行过滤或定制化输出
2. 输出所有笔记内容 `./cli -f clipping.txt | jq '.[] | select(.Type == "note") | {"Book":.Book,"Text":.Text}'`
2. specialcli, 一个简单的交互, 提供我自己的特殊格式输出示例:
```go
clippingText, err := os.Open(*clippingFile)
if err != nil {
fmt.Println(err)
return
}
clips, errBlock := ember.ParseClippings(clippingText)
for _, clip := range clips {
fmt.Println(clip)
}
```具体的解析方式和系统语言, 书籍格式有关; 时间都需要进行特殊处理. 我只有中文和英文两种数据格式, 就只写了两种, 提供样例数据可以提供追加解析