kindle manager

This commit is contained in:
douboer
2020-07-06 13:00:52 +08:00
parent 967afcc740
commit 97b7d29861
5 changed files with 246 additions and 219 deletions

4
cui.win.bat Normal file
View File

@@ -0,0 +1,4 @@
pyside2-uic mainwindow.ui -o mainwindow.py
pyside2-rcc kmanapp.qrc -o kmanapp_rc.py
cp -fr *py *md *ico *qrc *ui ~/penv/kman/

68
kmanapp.win.spec Normal file
View File

@@ -0,0 +1,68 @@
# -*- mode: python ; coding: utf-8 -*-
'''
import sys
import os
frozen = 'not'
basedir = ''
if getattr(sys, 'frozen', False):
# we are running in a bundle
frozen = 'ever so'
basedir = sys._MEIPASS
os.chdir(basedir)
else:
# we are running in a normal Python environment
#basedir = os.path.dirname(os.path.abspath(__file__))
pass
print('basedir - {}'.format(basedir))
'''
block_cipher = None
a = Analysis(['kman.py',
'kmanapp.py',
'kmanapp_rc.py',
'mainwindow.py',
'parseweb.py',],
pathex=[
'D:\\penvprj\\kman',
'c:\\users\\admin\\envs\\kman\\lib\\site-packages',
'c:\\Users\\admin\\Envs\\kman\\Lib\\site-packages\\shiboken2',
'c:\\users\\admin\\envs\\kman\\lib\\site-packages\\PySide2',
],
#pathex=[basedir],
binaries=[],
datas=[('backup','backup'),
('My Clippings.txt','.'),
('vocab.db','.'),
('downimg','downimg'),
('*.md','.')],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
[],
exclude_binaries=True,
name='kmanapp',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
console=False, icon='kmanapp.ico')
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
upx_exclude=[],
name='kmanapp')

View File

@@ -1,153 +1,129 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
################################################################################ # Form implementation generated from reading ui file 'mainwindow.ui',
## Form generated from reading UI file 'mainwindow.ui' # licensing of 'mainwindow.ui' applies.
## #
## Created by: Qt User Interface Compiler version 5.15.0 # Created: Mon Jul 6 12:48:48 2020
## # by: pyside2-uic running on PySide2 5.12.6
## WARNING! All changes made in this file will be lost when recompiling UI file! #
################################################################################ # WARNING! All changes made in this file will be lost!
from PySide2.QtCore import (QCoreApplication, QDate, QDateTime, QMetaObject, from PySide2 import QtCore, QtGui, QtWidgets
QObject, QPoint, QRect, QSize, QTime, QUrl, Qt)
from PySide2.QtGui import (QBrush, QColor, QConicalGradient, QCursor, QFont,
QFontDatabase, QIcon, QKeySequence, QLinearGradient, QPalette, QPainter,
QPixmap, QRadialGradient)
from PySide2.QtWidgets import *
import kmanapp_rc
class Ui_MainWindow(object): class Ui_MainWindow(object):
def setupUi(self, MainWindow): def setupUi(self, MainWindow):
if not MainWindow.objectName(): MainWindow.setObjectName("MainWindow")
MainWindow.setObjectName(u"MainWindow")
MainWindow.resize(774, 410) MainWindow.resize(774, 410)
MainWindow.setIconSize(QSize(40, 40)) MainWindow.setIconSize(QtCore.QSize(40, 40))
self.actionimportlocal = QAction(MainWindow) self.centralwidget = QtWidgets.QWidget(MainWindow)
self.actionimportlocal.setObjectName(u"actionimportlocal") self.centralwidget.setObjectName("centralwidget")
icon = QIcon() self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
icon.addFile(u":/icons/downr.png", QSize(), QIcon.Normal, QIcon.Off) self.gridLayout.setObjectName("gridLayout")
self.actionimportlocal.setIcon(icon) self.horizontalLayout = QtWidgets.QHBoxLayout()
self.actionimportkindle = QAction(MainWindow) self.horizontalLayout.setObjectName("horizontalLayout")
self.actionimportkindle.setObjectName(u"actionimportkindle") self.searchLabel = QtWidgets.QLabel(self.centralwidget)
icon1 = QIcon() self.searchLabel.setObjectName("searchLabel")
icon1.addFile(u":/icons/kindle.png", QSize(), QIcon.Normal, QIcon.Off)
self.actionimportkindle.setIcon(icon1)
self.actionconfig = QAction(MainWindow)
self.actionconfig.setObjectName(u"actionconfig")
icon2 = QIcon()
icon2.addFile(u":/icons/config.png", QSize(), QIcon.Normal, QIcon.Off)
self.actionconfig.setIcon(icon2)
self.actionflush = QAction(MainWindow)
self.actionflush.setObjectName(u"actionflush")
icon3 = QIcon()
icon3.addFile(u":/icons/refresh.png", QSize(), QIcon.Normal, QIcon.Off)
self.actionflush.setIcon(icon3)
self.actionwords = QAction(MainWindow)
self.actionwords.setObjectName(u"actionwords")
icon4 = QIcon()
icon4.addFile(u":/icons/books.png", QSize(), QIcon.Normal, QIcon.Off)
self.actionwords.setIcon(icon4)
self.actionstatistic = QAction(MainWindow)
self.actionstatistic.setObjectName(u"actionstatistic")
icon5 = QIcon()
icon5.addFile(u":/icons/statistics.png", QSize(), QIcon.Normal, QIcon.Off)
self.actionstatistic.setIcon(icon5)
self.actionhomepage = QAction(MainWindow)
self.actionhomepage.setObjectName(u"actionhomepage")
icon6 = QIcon()
icon6.addFile(u":/icons/web.png", QSize(), QIcon.Normal, QIcon.Off)
self.actionhomepage.setIcon(icon6)
self.actionabout = QAction(MainWindow)
self.actionabout.setObjectName(u"actionabout")
icon7 = QIcon()
icon7.addFile(u":/icons/question.png", QSize(), QIcon.Normal, QIcon.Off)
self.actionabout.setIcon(icon7)
self.actionsearch = QAction(MainWindow)
self.actionsearch.setObjectName(u"actionsearch")
icon8 = QIcon()
icon8.addFile(u":/icons/Pixadex.png", QSize(), QIcon.Normal, QIcon.Off)
self.actionsearch.setIcon(icon8)
self.actionexport = QAction(MainWindow)
self.actionexport.setObjectName(u"actionexport")
icon9 = QIcon()
icon9.addFile(u":/icons/md2.png", QSize(), QIcon.Normal, QIcon.Off)
self.actionexport.setIcon(icon9)
self.centralwidget = QWidget(MainWindow)
self.centralwidget.setObjectName(u"centralwidget")
self.gridLayout = QGridLayout(self.centralwidget)
self.gridLayout.setObjectName(u"gridLayout")
self.horizontalLayout = QHBoxLayout()
self.horizontalLayout.setObjectName(u"horizontalLayout")
self.searchLabel = QLabel(self.centralwidget)
self.searchLabel.setObjectName(u"searchLabel")
self.horizontalLayout.addWidget(self.searchLabel) self.horizontalLayout.addWidget(self.searchLabel)
self.searchLineEdit = QtWidgets.QLineEdit(self.centralwidget)
self.searchLineEdit = QLineEdit(self.centralwidget) self.searchLineEdit.setObjectName("searchLineEdit")
self.searchLineEdit.setObjectName(u"searchLineEdit")
self.horizontalLayout.addWidget(self.searchLineEdit) self.horizontalLayout.addWidget(self.searchLineEdit)
self.searchComboBox = QtWidgets.QComboBox(self.centralwidget)
self.searchComboBox = QComboBox(self.centralwidget) self.searchComboBox.setCurrentText("")
self.searchComboBox.setObjectName(u"searchComboBox") self.searchComboBox.setObjectName("searchComboBox")
self.horizontalLayout.addWidget(self.searchComboBox) self.horizontalLayout.addWidget(self.searchComboBox)
self.searchToolButton = QtWidgets.QToolButton(self.centralwidget)
self.searchToolButton = QToolButton(self.centralwidget) icon = QtGui.QIcon()
self.searchToolButton.setObjectName(u"searchToolButton") icon.addPixmap(QtGui.QPixmap(":/icons/search.jpeg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
icon10 = QIcon() self.searchToolButton.setIcon(icon)
icon10.addFile(u":/icons/search.jpeg", QSize(), QIcon.Normal, QIcon.Off) self.searchToolButton.setObjectName("searchToolButton")
self.searchToolButton.setIcon(icon10)
self.horizontalLayout.addWidget(self.searchToolButton) self.horizontalLayout.addWidget(self.searchToolButton)
self.gridLayout.addLayout(self.horizontalLayout, 0, 0, 1, 1) self.gridLayout.addLayout(self.horizontalLayout, 0, 0, 1, 1)
self.splitter_2 = QtWidgets.QSplitter(self.centralwidget)
self.splitter_2 = QSplitter(self.centralwidget) self.splitter_2.setOrientation(QtCore.Qt.Horizontal)
self.splitter_2.setObjectName(u"splitter_2") self.splitter_2.setObjectName("splitter_2")
self.splitter_2.setOrientation(Qt.Horizontal) self.treeView = QtWidgets.QTreeView(self.splitter_2)
self.treeView = QTreeView(self.splitter_2) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding)
self.treeView.setObjectName(u"treeView")
sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0) sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0) sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.treeView.sizePolicy().hasHeightForWidth()) sizePolicy.setHeightForWidth(self.treeView.sizePolicy().hasHeightForWidth())
self.treeView.setSizePolicy(sizePolicy) self.treeView.setSizePolicy(sizePolicy)
self.treeView.setMaximumSize(QSize(401, 16777215)) self.treeView.setMaximumSize(QtCore.QSize(401, 16777215))
self.splitter_2.addWidget(self.treeView) self.treeView.setObjectName("treeView")
self.treeView.header().setVisible(False) self.treeView.header().setVisible(False)
self.splitter = QSplitter(self.splitter_2) self.splitter = QtWidgets.QSplitter(self.splitter_2)
self.splitter.setObjectName(u"splitter") self.splitter.setOrientation(QtCore.Qt.Vertical)
self.splitter.setOrientation(Qt.Vertical) self.splitter.setObjectName("splitter")
self.tableView = QTableView(self.splitter) self.tableView = QtWidgets.QTableView(self.splitter)
self.tableView.setObjectName(u"tableView") sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Expanding)
sizePolicy1 = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0)
sizePolicy1.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0)
sizePolicy1.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.tableView.sizePolicy().hasHeightForWidth())
sizePolicy1.setHeightForWidth(self.tableView.sizePolicy().hasHeightForWidth()) self.tableView.setSizePolicy(sizePolicy)
self.tableView.setSizePolicy(sizePolicy1) self.tableView.setObjectName("tableView")
self.splitter.addWidget(self.tableView) self.textEdit = QtWidgets.QTextBrowser(self.splitter)
self.textEdit = QTextBrowser(self.splitter) self.textEdit.setObjectName("textEdit")
self.textEdit.setObjectName(u"textEdit")
self.splitter.addWidget(self.textEdit)
self.splitter_2.addWidget(self.splitter)
self.gridLayout.addWidget(self.splitter_2, 1, 0, 1, 1) self.gridLayout.addWidget(self.splitter_2, 1, 0, 1, 1)
MainWindow.setCentralWidget(self.centralwidget) MainWindow.setCentralWidget(self.centralwidget)
self.statusbar = QStatusBar(MainWindow) self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName(u"statusbar") self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar) MainWindow.setStatusBar(self.statusbar)
self.menuBar = QMenuBar(MainWindow) self.menuBar = QtWidgets.QMenuBar(MainWindow)
self.menuBar.setObjectName(u"menuBar") self.menuBar.setGeometry(QtCore.QRect(0, 0, 774, 22))
self.menuBar.setGeometry(QRect(0, 0, 774, 22)) self.menuBar.setObjectName("menuBar")
MainWindow.setMenuBar(self.menuBar) MainWindow.setMenuBar(self.menuBar)
self.toolBar = QToolBar(MainWindow) self.toolBar = QtWidgets.QToolBar(MainWindow)
self.toolBar.setObjectName(u"toolBar") self.toolBar.setObjectName("toolBar")
MainWindow.addToolBar(Qt.TopToolBarArea, self.toolBar) MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar)
self.actionimportlocal = QtWidgets.QAction(MainWindow)
icon1 = QtGui.QIcon()
icon1.addPixmap(QtGui.QPixmap(":/icons/downr.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.actionimportlocal.setIcon(icon1)
self.actionimportlocal.setObjectName("actionimportlocal")
self.actionimportkindle = QtWidgets.QAction(MainWindow)
icon2 = QtGui.QIcon()
icon2.addPixmap(QtGui.QPixmap(":/icons/kindle.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.actionimportkindle.setIcon(icon2)
self.actionimportkindle.setObjectName("actionimportkindle")
self.actionconfig = QtWidgets.QAction(MainWindow)
icon3 = QtGui.QIcon()
icon3.addPixmap(QtGui.QPixmap(":/icons/config.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.actionconfig.setIcon(icon3)
self.actionconfig.setObjectName("actionconfig")
self.actionflush = QtWidgets.QAction(MainWindow)
icon4 = QtGui.QIcon()
icon4.addPixmap(QtGui.QPixmap(":/icons/refresh.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.actionflush.setIcon(icon4)
self.actionflush.setObjectName("actionflush")
self.actionwords = QtWidgets.QAction(MainWindow)
icon5 = QtGui.QIcon()
icon5.addPixmap(QtGui.QPixmap(":/icons/books.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.actionwords.setIcon(icon5)
self.actionwords.setObjectName("actionwords")
self.actionstatistic = QtWidgets.QAction(MainWindow)
icon6 = QtGui.QIcon()
icon6.addPixmap(QtGui.QPixmap(":/icons/statistics.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.actionstatistic.setIcon(icon6)
self.actionstatistic.setObjectName("actionstatistic")
self.actionhomepage = QtWidgets.QAction(MainWindow)
icon7 = QtGui.QIcon()
icon7.addPixmap(QtGui.QPixmap(":/icons/web.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.actionhomepage.setIcon(icon7)
self.actionhomepage.setObjectName("actionhomepage")
self.actionabout = QtWidgets.QAction(MainWindow)
icon8 = QtGui.QIcon()
icon8.addPixmap(QtGui.QPixmap(":/icons/question.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.actionabout.setIcon(icon8)
self.actionabout.setObjectName("actionabout")
self.actionsearch = QtWidgets.QAction(MainWindow)
icon9 = QtGui.QIcon()
icon9.addPixmap(QtGui.QPixmap(":/icons/Pixadex.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.actionsearch.setIcon(icon9)
self.actionsearch.setObjectName("actionsearch")
self.actionexport = QtWidgets.QAction(MainWindow)
icon10 = QtGui.QIcon()
icon10.addPixmap(QtGui.QPixmap(":/icons/md2.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.actionexport.setIcon(icon10)
self.actionexport.setObjectName("actionexport")
self.toolBar.addAction(self.actionimportkindle) self.toolBar.addAction(self.actionimportkindle)
self.toolBar.addAction(self.actionimportlocal) self.toolBar.addAction(self.actionimportlocal)
self.toolBar.addSeparator() self.toolBar.addSeparator()
@@ -163,56 +139,33 @@ class Ui_MainWindow(object):
self.toolBar.addAction(self.actionflush) self.toolBar.addAction(self.actionflush)
self.retranslateUi(MainWindow) self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
QMetaObject.connectSlotsByName(MainWindow)
# setupUi
def retranslateUi(self, MainWindow): def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"Kindle Management", None)) MainWindow.setWindowTitle(QtWidgets.QApplication.translate("MainWindow", "Kindle Management", None, -1))
self.actionimportlocal.setText(QCoreApplication.translate("MainWindow", u"importlocal", None)) self.searchLabel.setText(QtWidgets.QApplication.translate("MainWindow", "Search", None, -1))
#if QT_CONFIG(tooltip) self.searchLineEdit.setPlaceholderText(QtWidgets.QApplication.translate("MainWindow", "可按书名、作者、内容搜索笔记", None, -1))
self.actionimportlocal.setToolTip(QCoreApplication.translate("MainWindow", u"import clipping file from local clipping file", None)) self.searchToolButton.setText(QtWidgets.QApplication.translate("MainWindow", "...", None, -1))
#endif // QT_CONFIG(tooltip) self.toolBar.setWindowTitle(QtWidgets.QApplication.translate("MainWindow", "toolBar", None, -1))
self.actionimportkindle.setText(QCoreApplication.translate("MainWindow", u"importkindle", None)) self.actionimportlocal.setText(QtWidgets.QApplication.translate("MainWindow", "importlocal", None, -1))
#if QT_CONFIG(tooltip) self.actionimportlocal.setToolTip(QtWidgets.QApplication.translate("MainWindow", "import clipping file from local clipping file", None, -1))
self.actionimportkindle.setToolTip(QCoreApplication.translate("MainWindow", u"import clipping file from kindle", None)) self.actionimportkindle.setText(QtWidgets.QApplication.translate("MainWindow", "importkindle", None, -1))
#endif // QT_CONFIG(tooltip) self.actionimportkindle.setToolTip(QtWidgets.QApplication.translate("MainWindow", "import clipping file from kindle", None, -1))
self.actionconfig.setText(QCoreApplication.translate("MainWindow", u"config", None)) self.actionconfig.setText(QtWidgets.QApplication.translate("MainWindow", "config", None, -1))
#if QT_CONFIG(tooltip) self.actionconfig.setToolTip(QtWidgets.QApplication.translate("MainWindow", "configuration", None, -1))
self.actionconfig.setToolTip(QCoreApplication.translate("MainWindow", u"configuration", None)) self.actionflush.setText(QtWidgets.QApplication.translate("MainWindow", "refresh", None, -1))
#endif // QT_CONFIG(tooltip) self.actionflush.setToolTip(QtWidgets.QApplication.translate("MainWindow", "refresh import file/quick import from kindle", None, -1))
self.actionflush.setText(QCoreApplication.translate("MainWindow", u"refresh", None)) self.actionwords.setText(QtWidgets.QApplication.translate("MainWindow", "words", None, -1))
#if QT_CONFIG(tooltip) self.actionwords.setToolTip(QtWidgets.QApplication.translate("MainWindow", "words", None, -1))
self.actionflush.setToolTip(QCoreApplication.translate("MainWindow", u"refresh import file/quick import from kindle", None)) self.actionstatistic.setText(QtWidgets.QApplication.translate("MainWindow", "statistic", None, -1))
#endif // QT_CONFIG(tooltip) self.actionstatistic.setToolTip(QtWidgets.QApplication.translate("MainWindow", "statistics reading habbit", None, -1))
self.actionwords.setText(QCoreApplication.translate("MainWindow", u"words", None)) self.actionhomepage.setText(QtWidgets.QApplication.translate("MainWindow", "homepage", None, -1))
#if QT_CONFIG(tooltip) self.actionhomepage.setToolTip(QtWidgets.QApplication.translate("MainWindow", "redirect to my homepage", None, -1))
self.actionwords.setToolTip(QCoreApplication.translate("MainWindow", u"words", None)) self.actionabout.setText(QtWidgets.QApplication.translate("MainWindow", "about", None, -1))
#endif // QT_CONFIG(tooltip) self.actionabout.setToolTip(QtWidgets.QApplication.translate("MainWindow", "open about dialog", None, -1))
self.actionstatistic.setText(QCoreApplication.translate("MainWindow", u"statistic", None)) self.actionsearch.setText(QtWidgets.QApplication.translate("MainWindow", "search", None, -1))
#if QT_CONFIG(tooltip) self.actionsearch.setToolTip(QtWidgets.QApplication.translate("MainWindow", "search note", None, -1))
self.actionstatistic.setToolTip(QCoreApplication.translate("MainWindow", u"statistics reading habbit", None)) self.actionexport.setText(QtWidgets.QApplication.translate("MainWindow", "export", None, -1))
#endif // QT_CONFIG(tooltip) self.actionexport.setToolTip(QtWidgets.QApplication.translate("MainWindow", "export to file", None, -1))
self.actionhomepage.setText(QCoreApplication.translate("MainWindow", u"homepage", None))
#if QT_CONFIG(tooltip)
self.actionhomepage.setToolTip(QCoreApplication.translate("MainWindow", u"redirect to my homepage", None))
#endif // QT_CONFIG(tooltip)
self.actionabout.setText(QCoreApplication.translate("MainWindow", u"about", None))
#if QT_CONFIG(tooltip)
self.actionabout.setToolTip(QCoreApplication.translate("MainWindow", u"open about dialog", None))
#endif // QT_CONFIG(tooltip)
self.actionsearch.setText(QCoreApplication.translate("MainWindow", u"search", None))
#if QT_CONFIG(tooltip)
self.actionsearch.setToolTip(QCoreApplication.translate("MainWindow", u"search note", None))
#endif // QT_CONFIG(tooltip)
self.actionexport.setText(QCoreApplication.translate("MainWindow", u"export", None))
#if QT_CONFIG(tooltip)
self.actionexport.setToolTip(QCoreApplication.translate("MainWindow", u"export to file", None))
#endif // QT_CONFIG(tooltip)
self.searchLabel.setText(QCoreApplication.translate("MainWindow", u"Search", None))
self.searchLineEdit.setPlaceholderText(QCoreApplication.translate("MainWindow", u"\u53ef\u6309\u4e66\u540d\u3001\u4f5c\u8005\u3001\u5185\u5bb9\u641c\u7d22\u7b14\u8bb0", None))
self.searchComboBox.setCurrentText("")
self.searchToolButton.setText(QCoreApplication.translate("MainWindow", u"...", None))
self.toolBar.setWindowTitle(QCoreApplication.translate("MainWindow", u"toolBar", None))
# retranslateUi
import kmanapp_rc

2
rel.win.bat Normal file
View File

@@ -0,0 +1,2 @@
rm -fr build dist release
pyinstaller --distpath Release -D kmanapp.win.spec

View File

@@ -1,2 +1,2 @@
PySide2==5.15.0 PySide2==5.12.6
requests==2.23.0 requests==2.23.0