153 lines
4.9 KiB
Markdown
153 lines
4.9 KiB
Markdown
|
|
# Change Log
|
|
|
|
## 1.1.1 (20200626)
|
|
### feature
|
|
- remove pandas library because it will make the package too large,
|
|
I write mTable calss to operate table data structure
|
|
- add sort function in nTableModel class which
|
|
make table can be sort by clicking table header!! cheer!!
|
|
- make installer package by pyistaller, but run "open kmanapp.app",<br>
|
|
always show:<br>
|
|
**LSOpenURLsWithRole() failed with error -10810 for the file /Users/mark/penv/kman/Release/kmanapp.app.**<br>
|
|
which spend me a great mount of time,<br>
|
|
and I baidu/bing/google all about discuss try to solve it,<br>
|
|
but problem still here! :cry: :cry: :cry:<br>
|
|
- modify some bugs let application more stabler
|
|
|
|
### learn lesson
|
|
- how to write a iterable object
|
|
|
|
|
|
## 1.1.0 (20200617)
|
|
### feature
|
|
- book information grabbed from douban / amazon
|
|
|
|
## 1.0.5 (20200613)
|
|
### feature
|
|
- backup clips after kman closed, check and read backup file when kman started
|
|
- import words from kindle, export filtered words to MD/CSV
|
|
|
|
### learn lesson
|
|
- create virtual envirement
|
|
```
|
|
> mkvirtualenv kmanenv
|
|
> workon kmanenv
|
|
virtual env lib in ~/.virtualenvs/kmanenv/
|
|
```
|
|
|
|
## 1.0.4 (20200604)
|
|
### feature
|
|
- refactoring kman.py
|
|
- creat constant class for all constant
|
|
- creat config dialog to do some constant configuration
|
|
- creat xman class for all clipping manipulation
|
|
- design config dialog & statusbar information
|
|
|
|
### learn lesson
|
|
- generate ui source(.py) use pyqtuic will 'import kmanapp\_rc',
|
|
so I need to use resouce file(.qrc) to manage resouce(icons),
|
|
and generator rcc binnay file, must kmanapp\_rc.py
|
|
command: pyside2-rcc -binary kmanapp.qrc -o kmanapp\_rc.py
|
|
- use QTime to check kindle kindle is connected or not
|
|
- implement table model which inherited from QAbstractTableModel, so
|
|
we can use **panda data structure**
|
|
|
|
## 1.0.3 (20200603)
|
|
### feature
|
|
- design GUI with qdesigner
|
|
- define toolbar action's slots
|
|
|
|
## 1.0.2 (20200530)
|
|
### feature
|
|
- remove duplication
|
|
- refactor some code
|
|
- optimize search feature
|
|
|
|
## learn lesson
|
|
- change dict keys between iteration, will throw RuntimeError:
|
|
dictionary changed size during iteration
|
|
- reference - http://www.cocoachina.com/articles/89748
|
|
- pyQt5 reference - https://www.learnpyqt.com/
|
|
|
|
## 1.0.1 (20200528)
|
|
### feature
|
|
- add search clip and some functions
|
|
|
|
### learn lesson
|
|
- assign value to a not exist key, will throw KeyError, too inflexible!!! perl much better
|
|
- use defaultdict to solve obove problem, note, defaultdict only create two layer key auto
|
|
```
|
|
a=defaultdict(dict)
|
|
a['1']['2'] = 1
|
|
|
|
b=defaultdict(dict)
|
|
b['1']['2']['3'] = 1 # ERROR
|
|
|
|
b['1']['2'] = {'3':1} # OK
|
|
```
|
|
- logging, file io, very strict indent!
|
|
- re.X(VERBOSE), different regular express between vim & python
|
|
- no c like i=x<0?m:n => python - i=m if x<0 else n
|
|
- json dict convert
|
|
- pylint check code, but most of suggest is unacceptable for me :smile:
|
|
- no c/c++/java/perl switch-case, not use two much if-elif-elif, use this to simplify:
|
|
```
|
|
suff = {'MD':'.md','CSV':'.csv','JSON':'.json'}
|
|
op = OUTPREF+suff[ft]
|
|
```
|
|
- assign value style is pithiness
|
|
```
|
|
(authinfo, dateinfo, content) = (s[0], s[1], s[2] if len(s)==3 else None)
|
|
```
|
|
- unittest error line number is not collect, **unitest bug**?
|
|
- **unitest testcase execution sequence is disorder, so must create test data for each case**
|
|
|
|
|
|
## 1.0.0 (20200526)
|
|
### create
|
|
- unittest
|
|
- abstract note/bookmark/highlight from kindle clipping
|
|
- formatter output to special file
|
|
|
|
---
|
|
|
|
# feature list (keep update)
|
|
- [x] first abstract from kindle hard / local directory for different OS
|
|
- [x] add GUI use QT
|
|
- [x] use thread to check kindle connection status
|
|
- import function:
|
|
- [x] local
|
|
- [x] kindle
|
|
- [x] duokan
|
|
- [x] amazon **not test**
|
|
- [x] link to douban and amazon
|
|
- export function:
|
|
- [ ] to [evernote](https://github.com/benhorvath/kindle2evernote/blob/master/kindle2evernote.py)
|
|
- [ ] to web html format
|
|
- [ ] pdf
|
|
- [ ] onenote
|
|
- [x] txt
|
|
- [x] markdown
|
|
- [ ] implement command line based on [argparse](https://www.jianshu.com/p/a41fbd4919f8)
|
|
- :x: mobi / epub reader
|
|
- [ ] import .azw3/.epub/.mobi file to kindle
|
|
- [ ] [convert](https://github.com/jianyun8023/convert-ebook) .epub -> .mobi <br>
|
|
- [ ] .azw3 -> .mobi
|
|
- [ ] .md -> .mobi
|
|
- [x] parse /Volumes/Kindle/system/vocabulary/vocab.db
|
|
- [ ] [hotkey](https://toolinbox.net/Klib/)
|
|
- [ ] write [tutorial](https://help.knotesapp.com/docs/tutorial/)
|
|
- [ ] search word in online dictionary
|
|
- [ ] chrome extension
|
|
- [ ] clean (sdr)
|
|
- [ ] sync modify to kindle device
|
|
- [ ] compare parse html info with xpath & beautisoap & regex
|
|
- [x] save export markdown file name with book name(treeview's item name),<br>
|
|
such as **<<印度漂浮的次大陆.md>>**
|
|
- [x] easily copy filter notes to clipboard
|
|
- [x] add right click menu for book info treeview item, so I can copy book info by select menu<br>
|
|
format: 1| :book: | [存在主义咖啡馆](href) | 作者/出版社/出版时间/阅读时间 书评
|
|
|
|
|