1
0
mirror of https://github.com/ciromattia/kcc synced 2026-06-08 15:40:29 +00:00

Added metadata editor

This commit is contained in:
Paweł Jastrzębski
2015-02-08 11:53:55 +01:00
parent cb76504acb
commit 2fc21c33e2
12 changed files with 4683 additions and 3063 deletions
+94 -1
View File
@@ -33,10 +33,13 @@ from xml.dom.minidom import parse
from psutil import Popen, Process
from copy import copy
from distutils.version import StrictVersion
from xml.sax.saxutils import escape
from .shared import md5Checksum, HTMLStripper
from . import __version__
from . import comic2ebook
from . import KCC_rc_web
from . import __version__
from . import metadata
from . import KCC_MetaEditor_ui
if sys.platform.startswith('darwin'):
from . import KCC_ui_osx as KCC_ui
elif sys.platform.startswith('linux'):
@@ -604,6 +607,34 @@ class KCCGUI(KCC_ui.Ui_KCC):
GUI.JobList.addItem(fname)
GUI.JobList.scrollToBottom()
def selectFileMetaEditor(self):
if self.UnRAR:
if self.sevenza:
fname = QtWidgets.QFileDialog.getOpenFileName(MW, 'Select file', self.lastPath,
'Comic (*.cbz *.cbr *.cb7)')
else:
fname = QtWidgets.QFileDialog.getOpenFileName(MW, 'Select file', self.lastPath,
'Comic (*.cbz *.cbr)')
else:
if self.sevenza:
fname = QtWidgets.QFileDialog.getOpenFileName(MW, 'Select file', self.lastPath,
'Comic (*.cbz *.cb7)')
else:
fname = QtWidgets.QFileDialog.getOpenFileName(MW, 'Select file', self.lastPath,
'Comic (*.cbz)')
if fname[0] != '':
if sys.platform.startswith('win'):
fname = fname[0].replace('/', '\\')
else:
fname = fname[0]
self.lastPath = os.path.abspath(os.path.join(fname, os.pardir))
try:
self.editor.loadData(fname)
except:
self.showDialog('Failed to parse metadata!', 'error')
else:
self.editor.ui.exec_()
def clearJobs(self):
GUI.JobList.clear()
@@ -618,6 +649,7 @@ class KCCGUI(KCC_ui.Ui_KCC):
MW.setMinimumSize(QtCore.QSize(420, 287))
MW.resize(420, 287)
GUI.BasicModeButton.setEnabled(True)
GUI.EditorButton.setEnabled(True)
GUI.AdvModeButton.setEnabled(True)
GUI.BasicModeButton.setStyleSheet('font-weight:Bold;')
GUI.AdvModeButton.setStyleSheet('font-weight:Normal;')
@@ -647,6 +679,7 @@ class KCCGUI(KCC_ui.Ui_KCC):
MW.setMinimumSize(QtCore.QSize(420, 365))
MW.resize(420, 365)
GUI.BasicModeButton.setEnabled(True)
GUI.EditorButton.setEnabled(True)
GUI.AdvModeButton.setEnabled(True)
GUI.BasicModeButton.setStyleSheet('font-weight:Normal;')
GUI.AdvModeButton.setStyleSheet('font-weight:Bold;')
@@ -676,6 +709,7 @@ class KCCGUI(KCC_ui.Ui_KCC):
MW.setMinimumSize(QtCore.QSize(420, 397))
MW.resize(420, 397)
GUI.BasicModeButton.setEnabled(False)
GUI.EditorButton.setEnabled(True)
GUI.AdvModeButton.setEnabled(False)
GUI.BasicModeButton.setStyleSheet('font-weight:Normal;')
GUI.AdvModeButton.setStyleSheet('font-weight:Normal;')
@@ -706,6 +740,7 @@ class KCCGUI(KCC_ui.Ui_KCC):
status = True
if self.currentMode != 3:
GUI.BasicModeButton.setEnabled(status)
GUI.EditorButton.setEnabled(status)
GUI.AdvModeButton.setEnabled(status)
if self.currentMode != 1:
GUI.FormatBox.setEnabled(status)
@@ -901,6 +936,7 @@ class KCCGUI(KCC_ui.Ui_KCC):
elif command.isdigit():
GUI.ProgressBar.setMaximum(int(command) - 1)
GUI.BasicModeButton.hide()
GUI.EditorButton.hide()
GUI.AdvModeButton.hide()
GUI.ProgressBar.reset()
GUI.ProgressBar.show()
@@ -956,6 +992,7 @@ class KCCGUI(KCC_ui.Ui_KCC):
def hideProgressBar(self):
GUI.ProgressBar.hide()
GUI.BasicModeButton.show()
GUI.EditorButton.show()
GUI.AdvModeButton.show()
def saveSettings(self, event):
@@ -1073,6 +1110,7 @@ class KCCGUI(KCC_ui.Ui_KCC):
MW = KCCWindow
GUI = self
self.setupUi(MW)
self.editor = KCCGUI_MetaEditor()
self.icons = Icons()
self.webContent = KCC_rc_web.WebContent()
self.settings = QtCore.QSettings('KindleComicConverter', 'KindleComicConverter')
@@ -1216,6 +1254,7 @@ class KCCGUI(KCC_ui.Ui_KCC):
GUI.DirectoryButton.clicked.connect(self.selectDir)
GUI.ClearButton.clicked.connect(self.clearJobs)
GUI.FileButton.clicked.connect(self.selectFile)
GUI.EditorButton.clicked.connect(self.selectFileMetaEditor)
GUI.ConvertButton.clicked.connect(self.convertStart)
GUI.GammaSlider.valueChanged.connect(self.changeGamma)
GUI.NoRotateBox.stateChanged.connect(self.toggleNoSplitRotate)
@@ -1278,3 +1317,57 @@ class KCCGUI(KCC_ui.Ui_KCC):
MW.setWindowTitle("Kindle Comic Converter " + __version__)
MW.show()
MW.raise_()
class KCCGUI_MetaEditor(KCC_MetaEditor_ui.Ui_MetaEditorDialog):
def loadData(self, file):
self.parser = metadata.MetadataParser(file)
if self.parser.compressor == 'rar':
self.EditorFrame.setEnabled(False)
self.OKButton.setEnabled(False)
self.StatusLabel.setText('CBR metadata are read-only.')
else:
self.EditorFrame.setEnabled(True)
self.OKButton.setEnabled(True)
self.StatusLabel.setText('Separate authors with a comma.')
self.SeriesLine.setText(self.parser.data['Series'])
self.VolumeLine.setText(self.parser.data['Volume'])
self.NumberLine.setText(self.parser.data['Number'])
self.WriterLine.setText(', '.join(self.parser.data['Writers']))
self.PencillerLine.setText(', '.join(self.parser.data['Pencillers']))
self.InkerLine.setText(', '.join(self.parser.data['Inkers']))
self.ColoristLine.setText(', '.join(self.parser.data['Colorists']))
self.MUidLine.setText(self.parser.data['MUid'])
def saveData(self):
for field in (self.VolumeLine, self.NumberLine, self.MUidLine):
if field.text().isnumeric() or self.cleanData(field.text()) == '':
self.parser.data[field.objectName()[:-4]] = self.cleanData(field.text())
else:
self.StatusLabel.setText(field.objectName()[:-4] + ' field must be a number.')
break
else:
self.parser.data['Series'] = self.cleanData(self.SeriesLine.text())
for field in (self.WriterLine, self.PencillerLine, self.InkerLine, self.ColoristLine):
values = self.cleanData(field.text()).split(',')
tmpData = []
for value in values:
if self.cleanData(value) != '':
tmpData.append(self.cleanData(value))
self.parser.data[field.objectName()[:-4] + 's'] = tmpData
try:
self.parser.saveXML()
except:
GUI.showDialog('Failed to save metadata!', 'error')
self.ui.close()
def cleanData(self, s):
return escape(s.strip())
def __init__(self):
self.ui = QtWidgets.QDialog()
self.parser = None
self.setupUi(self.ui)
self.ui.setWindowFlags(self.ui.windowFlags() & ~QtCore.Qt.WindowContextHelpButtonHint)
self.OKButton.clicked.connect(self.saveData)
self.CancelButton.clicked.connect(self.ui.close)