diff options
-rw-r--r-- | LICENSE.txt | 2 | ||||
-rwxr-xr-x | kcc-c2e.py | 39 | ||||
-rwxr-xr-x | kcc-c2p.py | 29 | ||||
-rw-r--r-- | kcc.iss | 2 | ||||
-rwxr-xr-x | kcc.py | 124 | ||||
-rw-r--r-- | kcc/KCC_gui.py | 80 | ||||
-rw-r--r-- | kcc/__init__.py | 2 | ||||
-rw-r--r-- | kcc/cbxarchive.py | 4 | ||||
-rwxr-xr-x | kcc/comic2ebook.py | 4 | ||||
-rw-r--r-- | kcc/comic2panel.py | 4 | ||||
-rw-r--r-- | kcc/dualmetafix.py | 2 | ||||
-rwxr-xr-x | kcc/image.py | 4 | ||||
-rw-r--r-- | kcc/pdfjpgextract.py | 4 | ||||
-rw-r--r-- | kcc/shared.py | 61 | ||||
-rwxr-xr-x | setup.py | 4 |
15 files changed, 157 insertions, 208 deletions
diff --git a/LICENSE.txt b/LICENSE.txt index c32421a..b0eadda 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,7 +1,7 @@ ISC LICENSE Copyright (c) 2012-2014 Ciro Mattia Gonano <ciromattia@gmail.com> -Copyright (c) 2013-2014 Paweł Jastrzębski <pawelj@iosphe.re> +Copyright (c) 2013-2015 Paweł Jastrzębski <pawelj@iosphe.re> Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the diff --git a/kcc-c2e.py b/kcc-c2e.py index bbc22b2..5bc3680 100755 --- a/kcc-c2e.py +++ b/kcc-c2e.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # Copyright (c) 2012-2014 Ciro Mattia Gonano <ciromattia@gmail.com> -# Copyright (c) 2013-2014 Pawel Jastrzebski <pawelj@iosphe.re> +# Copyright (c) 2013-2015 Pawel Jastrzebski <pawelj@iosphe.re> # # Permission to use, copy, modify, and/or distribute this software for # any purpose with or without fee is hereby granted, provided that the @@ -20,7 +20,7 @@ __version__ = '4.3.1' __license__ = 'ISC' -__copyright__ = '2012-2014, Ciro Mattia Gonano <ciromattia@gmail.com>, Pawel Jastrzebski <pawelj@iosphe.re>' +__copyright__ = '2012-2015, Ciro Mattia Gonano <ciromattia@gmail.com>, Pawel Jastrzebski <pawelj@iosphe.re>' __docformat__ = 'restructuredtext en' import sys @@ -28,39 +28,8 @@ if sys.version_info[0] != 3: print('ERROR: This is Python 3 script!') exit(1) -# Dependency check -missing = [] -try: - # noinspection PyUnresolvedReferences - import psutil - if tuple(map(int, ('2.0.0'.split(".")))) > tuple(map(int, psutil.version_info)): - missing.append('psutil 2.0.0+') -except ImportError: - missing.append('psutil 2.0.0+') -try: - # noinspection PyUnresolvedReferences - import PIL - if tuple(map(int, ('2.7.0'.split(".")))) > tuple(map(int, (PIL.PILLOW_VERSION.split(".")))): - missing.append('Pillow 2.7.0+') -except ImportError: - missing.append('Pillow 2.7.0+') -try: - # noinspection PyUnresolvedReferences - import slugify -except ImportError: - missing.append('python-slugify') -if len(missing) > 0: - try: - # noinspection PyUnresolvedReferences - import tkinter - # noinspection PyUnresolvedReferences - import tkinter.messagebox - importRoot = tkinter.Tk() - importRoot.withdraw() - tkinter.messagebox.showerror('KCC - Error', 'ERROR: ' + ', '.join(missing) + ' is not installed!') - except ImportError: - print('ERROR: ' + ', '.join(missing) + ' is not installed!') - exit(1) +from kcc.shared import dependencyCheck +dependencyCheck(2) from multiprocessing import freeze_support from kcc.comic2ebook import main diff --git a/kcc-c2p.py b/kcc-c2p.py index 7388f7f..53216a4 100755 --- a/kcc-c2p.py +++ b/kcc-c2p.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # Copyright (c) 2012-2014 Ciro Mattia Gonano <ciromattia@gmail.com> -# Copyright (c) 2013-2014 Pawel Jastrzebski <pawelj@iosphe.re> +# Copyright (c) 2013-2015 Pawel Jastrzebski <pawelj@iosphe.re> # # Permission to use, copy, modify, and/or distribute this software for # any purpose with or without fee is hereby granted, provided that the @@ -20,7 +20,7 @@ __version__ = '4.3.1' __license__ = 'ISC' -__copyright__ = '2012-2014, Ciro Mattia Gonano <ciromattia@gmail.com>, Pawel Jastrzebski <pawelj@iosphe.re>' +__copyright__ = '2012-2015, Ciro Mattia Gonano <ciromattia@gmail.com>, Pawel Jastrzebski <pawelj@iosphe.re>' __docformat__ = 'restructuredtext en' import sys @@ -28,33 +28,14 @@ if sys.version_info[0] != 3: print('ERROR: This is Python 3 script!') exit(1) -# Dependency check -missing = [] -try: - # noinspection PyUnresolvedReferences - import PIL - if tuple(map(int, ('2.7.0'.split(".")))) > tuple(map(int, (PIL.PILLOW_VERSION.split(".")))): - missing.append('Pillow 2.7.0+') -except ImportError: - missing.append('Pillow 2.7.0+') -if len(missing) > 0: - try: - # noinspection PyUnresolvedReferences - import tkinter - # noinspection PyUnresolvedReferences - import tkinter.messagebox - importRoot = tkinter.Tk() - importRoot.withdraw() - tkinter.messagebox.showerror('KCC - Error', 'ERROR: ' + ', '.join(missing) + ' is not installed!') - except ImportError: - print('ERROR: ' + ', '.join(missing) + ' is not installed!') - exit(1) +from kcc.shared import dependencyCheck +dependencyCheck(1) from multiprocessing import freeze_support from kcc.comic2panel import main if __name__ == "__main__": freeze_support() - print(('comic2ebook v%(__version__)s. Written by Ciro Mattia Gonano and Pawel Jastrzebski.' % globals())) + print(('comic2panel v%(__version__)s. Written by Ciro Mattia Gonano and Pawel Jastrzebski.' % globals())) main(sys.argv[1:]) sys.exit(0) \ No newline at end of file diff --git a/kcc.iss b/kcc.iss index f40959d..f05ab56 100644 --- a/kcc.iss +++ b/kcc.iss @@ -12,7 +12,7 @@ AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} -AppCopyright=Copyright (C) 2012-2014 Ciro Mattia Gonano and Paweł Jastrzębski +AppCopyright=Copyright (C) 2012-2015 Ciro Mattia Gonano and Paweł Jastrzębski DefaultDirName={pf}\{#MyAppName} DefaultGroupName={#MyAppName} AllowNoIcons=yes diff --git a/kcc.py b/kcc.py index f7fc51f..119cd13 100755 --- a/kcc.py +++ b/kcc.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # Copyright (c) 2012-2014 Ciro Mattia Gonano <ciromattia@gmail.com> -# Copyright (c) 2013-2014 Pawel Jastrzebski <pawelj@iosphe.re> +# Copyright (c) 2013-2015 Pawel Jastrzebski <pawelj@iosphe.re> # # Permission to use, copy, modify, and/or distribute this software for # any purpose with or without fee is hereby granted, provided that the @@ -20,16 +20,16 @@ __version__ = '4.3.1' __license__ = 'ISC' -__copyright__ = '2012-2014, Ciro Mattia Gonano <ciromattia@gmail.com>, Pawel Jastrzebski <pawelj@iosphe.re>' +__copyright__ = '2012-2015, Ciro Mattia Gonano <ciromattia@gmail.com>, Pawel Jastrzebski <pawelj@iosphe.re>' __docformat__ = 'restructuredtext en' import sys -import os if sys.version_info[0] != 3: print('ERROR: This is Python 3 script!') exit(1) # OS specific PATH variable workarounds +import os if sys.platform.startswith('darwin') and 'RESOURCEPATH' not in os.environ: os.environ['PATH'] = os.path.dirname(os.path.abspath(__file__)) + '/other/:' + os.environ['PATH'] elif sys.platform.startswith('win'): @@ -49,123 +49,23 @@ elif sys.platform.startswith('win'): os.environ['PATH'] = os.path.dirname(os.path.abspath(__file__)) + '/other/;' + os.environ['PATH'] os.chdir(os.path.dirname(os.path.abspath(__file__))) -# Dependency check -missing = [] -try: - # noinspection PyUnresolvedReferences - from PyQt5 import QtCore, QtNetwork, QtWidgets - if tuple(map(int, ('5.2.0'.split(".")))) > tuple(map(int, (QtCore.qVersion().split(".")))): - missing.append('PyQt5 5.2.0+') -except ImportError: - missing.append('PyQt5 5.2.0+') -try: - # noinspection PyUnresolvedReferences - import psutil - if tuple(map(int, ('2.0.0'.split(".")))) > tuple(map(int, psutil.version_info)): - missing.append('psutil 2.0.0+') -except ImportError: - missing.append('psutil 2.0.0+') -try: - # noinspection PyUnresolvedReferences - import PIL - if tuple(map(int, ('2.7.0'.split(".")))) > tuple(map(int, (PIL.PILLOW_VERSION.split(".")))): - missing.append('Pillow 2.7.0+') -except ImportError: - missing.append('Pillow 2.7.0+') -try: - # noinspection PyUnresolvedReferences - import slugify -except ImportError: - missing.append('python-slugify') -if len(missing) > 0: - try: - # noinspection PyUnresolvedReferences - import tkinter - # noinspection PyUnresolvedReferences - import tkinter.messagebox - importRoot = tkinter.Tk() - importRoot.withdraw() - tkinter.messagebox.showerror('KCC - Error', 'ERROR: ' + ', '.join(missing) + ' is not installed!') - except ImportError: - print('ERROR: ' + ', '.join(missing) + ' is not installed!') - exit(1) +from kcc.shared import dependencyCheck +dependencyCheck(3) from multiprocessing import freeze_support from kcc import KCC_gui - -# Implementing detection of already running KCC instance and forwarding argv to it -class QApplicationMessaging(QtWidgets.QApplication): - messageFromOtherInstance = QtCore.pyqtSignal(bytes) - - def __init__(self, argv): - QtWidgets.QApplication.__init__(self, argv) - self._key = 'KCC' - self._timeout = 1000 - self._locked = False - socket = QtNetwork.QLocalSocket(self) - socket.connectToServer(self._key, QtCore.QIODevice.WriteOnly) - if not socket.waitForConnected(self._timeout): - self._server = QtNetwork.QLocalServer(self) - # noinspection PyUnresolvedReferences - self._server.newConnection.connect(self.handleMessage) - self._server.listen(self._key) - else: - self._locked = True - socket.disconnectFromServer() - - def __del__(self): - if not self._locked: - self._server.close() - - def event(self, e): - if e.type() == QtCore.QEvent.FileOpen: - self.messageFromOtherInstance.emit(bytes(e.file(), 'UTF-8')) - return True - else: - return QtWidgets.QApplication.event(self, e) - - def isRunning(self): - return self._locked - - def handleMessage(self): - socket = self._server.nextPendingConnection() - if socket.waitForReadyRead(self._timeout): - self.messageFromOtherInstance.emit(socket.readAll().data()) - - def sendMessage(self, message): - socket = QtNetwork.QLocalSocket(self) - socket.connectToServer(self._key, QtCore.QIODevice.WriteOnly) - socket.waitForConnected(self._timeout) - socket.write(bytes(message, 'UTF-8')) - socket.waitForBytesWritten(self._timeout) - socket.disconnectFromServer() - - -# Adding signals to QMainWindow -class QMainWindowKCC(QtWidgets.QMainWindow): - progressBarTick = QtCore.pyqtSignal(str) - modeConvert = QtCore.pyqtSignal(int) - addMessage = QtCore.pyqtSignal(str, str, bool) - addTrayMessage = QtCore.pyqtSignal(str, str) - showDialog = QtCore.pyqtSignal(str, str) - hideProgressBar = QtCore.pyqtSignal() - forceShutdown = QtCore.pyqtSignal() - dialogAnswer = QtCore.pyqtSignal(int) - - if __name__ == "__main__": freeze_support() - KCCAplication = QApplicationMessaging(sys.argv) + KCCAplication = KCC_gui.QApplicationMessaging(sys.argv) if KCCAplication.isRunning(): if len(sys.argv) > 1: KCCAplication.sendMessage(sys.argv[1]) - sys.exit(0) else: KCCAplication.sendMessage('ARISE') - sys.exit(0) - KCCWindow = QMainWindowKCC() - KCCUI = KCC_gui.KCCGUI(KCCAplication, KCCWindow) - if len(sys.argv) > 1: - KCCUI.handleMessage(sys.argv[1]) - sys.exit(KCCAplication.exec_()) + else: + KCCWindow = KCC_gui.QMainWindowKCC() + KCCUI = KCC_gui.KCCGUI(KCCAplication, KCCWindow) + if len(sys.argv) > 1: + KCCUI.handleMessage(sys.argv[1]) + sys.exit(KCCAplication.exec_()) diff --git a/kcc/KCC_gui.py b/kcc/KCC_gui.py index 9e18389..42eb9b9 100644 --- a/kcc/KCC_gui.py +++ b/kcc/KCC_gui.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # # Copyright (c) 2012-2014 Ciro Mattia Gonano <ciromattia@gmail.com> -# Copyright (c) 2013-2014 Pawel Jastrzebski <pawelj@iosphe.re> +# Copyright (c) 2013-2015 Pawel Jastrzebski <pawelj@iosphe.re> # # Permission to use, copy, modify, and/or distribute this software for # any purpose with or without fee is hereby granted, provided that the @@ -19,7 +19,7 @@ __version__ = '4.3.1' __license__ = 'ISC' -__copyright__ = '2012-2014, Ciro Mattia Gonano <ciromattia@gmail.com>, Pawel Jastrzebski <pawelj@iosphe.re>' +__copyright__ = '2012-2015, Ciro Mattia Gonano <ciromattia@gmail.com>, Pawel Jastrzebski <pawelj@iosphe.re>' __docformat__ = 'restructuredtext en' import os @@ -33,12 +33,11 @@ from shutil import move from http.server import BaseHTTPRequestHandler, HTTPServer from socketserver import ThreadingMixIn from subprocess import STDOUT, PIPE -from PyQt5 import QtGui, QtCore, QtWidgets +from PyQt5 import QtGui, QtCore, QtWidgets, QtNetwork from xml.dom.minidom import parse -from html.parser import HTMLParser from psutil import Popen, Process from copy import copy -from .shared import md5Checksum +from .shared import md5Checksum, HTMLStripper from . import comic2ebook from . import KCC_rc_web if sys.platform.startswith('darwin'): @@ -49,6 +48,64 @@ else: from . import KCC_ui +class QApplicationMessaging(QtWidgets.QApplication): + messageFromOtherInstance = QtCore.pyqtSignal(bytes) + + def __init__(self, argv): + QtWidgets.QApplication.__init__(self, argv) + self._key = 'KCC' + self._timeout = 1000 + self._locked = False + socket = QtNetwork.QLocalSocket(self) + socket.connectToServer(self._key, QtCore.QIODevice.WriteOnly) + if not socket.waitForConnected(self._timeout): + self._server = QtNetwork.QLocalServer(self) + # noinspection PyUnresolvedReferences + self._server.newConnection.connect(self.handleMessage) + self._server.listen(self._key) + else: + self._locked = True + socket.disconnectFromServer() + + def __del__(self): + if not self._locked: + self._server.close() + + def event(self, e): + if e.type() == QtCore.QEvent.FileOpen: + self.messageFromOtherInstance.emit(bytes(e.file(), 'UTF-8')) + return True + else: + return QtWidgets.QApplication.event(self, e) + + def isRunning(self): + return self._locked + + def handleMessage(self): + socket = self._server.nextPendingConnection() + if socket.waitForReadyRead(self._timeout): + self.messageFromOtherInstance.emit(socket.readAll().data()) + + def sendMessage(self, message): + socket = QtNetwork.QLocalSocket(self) + socket.connectToServer(self._key, QtCore.QIODevice.WriteOnly) + socket.waitForConnected(self._timeout) + socket.write(bytes(message, 'UTF-8')) + socket.waitForBytesWritten(self._timeout) + socket.disconnectFromServer() + + +class QMainWindowKCC(QtWidgets.QMainWindow): + progressBarTick = QtCore.pyqtSignal(str) + modeConvert = QtCore.pyqtSignal(int) + addMessage = QtCore.pyqtSignal(str, str, bool) + addTrayMessage = QtCore.pyqtSignal(str, str) + showDialog = QtCore.pyqtSignal(str, str) + hideProgressBar = QtCore.pyqtSignal() + forceShutdown = QtCore.pyqtSignal() + dialogAnswer = QtCore.pyqtSignal(int) + + class Icons: def __init__(self): self.deviceKindle = QtGui.QIcon() @@ -76,19 +133,6 @@ class Icons: self.programIcon.addPixmap(QtGui.QPixmap(":/Icon/icons/comic2ebook.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) -class HTMLStripper(HTMLParser): - def __init__(self): - HTMLParser.__init__(self) - self.reset() - self.fed = [] - - def handle_data(self, d): - self.fed.append(d) - - def get_data(self): - return ''.join(self.fed) - - class WebServerHandler(BaseHTTPRequestHandler): # noinspection PyAttributeOutsideInit, PyArgumentList def do_GET(self): diff --git a/kcc/__init__.py b/kcc/__init__.py index 49174f8..72fa985 100644 --- a/kcc/__init__.py +++ b/kcc/__init__.py @@ -1,4 +1,4 @@ __version__ = '4.3.1' __license__ = 'ISC' -__copyright__ = '2012-2014, Ciro Mattia Gonano <ciromattia@gmail.com>, Pawel Jastrzebski <pawelj@iosphe.re>' +__copyright__ = '2012-2015, Ciro Mattia Gonano <ciromattia@gmail.com>, Pawel Jastrzebski <pawelj@iosphe.re>' __docformat__ = 'restructuredtext en' \ No newline at end of file diff --git a/kcc/cbxarchive.py b/kcc/cbxarchive.py index 6a7c598..cdca253 100644 --- a/kcc/cbxarchive.py +++ b/kcc/cbxarchive.py @@ -1,5 +1,5 @@ # Copyright (c) 2012-2014 Ciro Mattia Gonano <ciromattia@gmail.com> -# Copyright (c) 2013-2014 Pawel Jastrzebski <pawelj@iosphe.re> +# Copyright (c) 2013-2015 Pawel Jastrzebski <pawelj@iosphe.re> # # Permission to use, copy, modify, and/or distribute this software for # any purpose with or without fee is hereby granted, provided that the @@ -17,7 +17,7 @@ # __license__ = 'ISC' -__copyright__ = '2012-2014, Ciro Mattia Gonano <ciromattia@gmail.com>, Pawel Jastrzebski <pawelj@iosphe.re>' +__copyright__ = '2012-2015, Ciro Mattia Gonano <ciromattia@gmail.com>, Pawel Jastrzebski <pawelj@iosphe.re>' __docformat__ = 'restructuredtext en' import sys diff --git a/kcc/comic2ebook.py b/kcc/comic2ebook.py index 7401e45..dfd0702 100755 --- a/kcc/comic2ebook.py +++ b/kcc/comic2ebook.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # # Copyright (c) 2012-2014 Ciro Mattia Gonano <ciromattia@gmail.com> -# Copyright (c) 2013-2014 Pawel Jastrzebski <pawelj@iosphe.re> +# Copyright (c) 2013-2015 Pawel Jastrzebski <pawelj@iosphe.re> # # Permission to use, copy, modify, and/or distribute this software for # any purpose with or without fee is hereby granted, provided that the @@ -20,7 +20,7 @@ __version__ = '4.3.1' __license__ = 'ISC' -__copyright__ = '2012-2014, Ciro Mattia Gonano <ciromattia@gmail.com>, Pawel Jastrzebski <pawelj@iosphe.re>' +__copyright__ = '2012-2015, Ciro Mattia Gonano <ciromattia@gmail.com>, Pawel Jastrzebski <pawelj@iosphe.re>' __docformat__ = 'restructuredtext en' import os diff --git a/kcc/comic2panel.py b/kcc/comic2panel.py index 3b42258..22c783f 100644 --- a/kcc/comic2panel.py +++ b/kcc/comic2panel.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # # Copyright (c) 2012-2014 Ciro Mattia Gonano <ciromattia@gmail.com> -# Copyright (c) 2013-2014 Pawel Jastrzebski <pawelj@iosphe.re> +# Copyright (c) 2013-2015 Pawel Jastrzebski <pawelj@iosphe.re> # # Permission to use, copy, modify, and/or distribute this software for # any purpose with or without fee is hereby granted, provided that the @@ -20,7 +20,7 @@ __version__ = '4.3.1' __license__ = 'ISC' -__copyright__ = '2012-2014, Ciro Mattia Gonano <ciromattia@gmail.com>, Pawel Jastrzebski <pawelj@iosphe.re>' +__copyright__ = '2012-2015, Ciro Mattia Gonano <ciromattia@gmail.com>, Pawel Jastrzebski <pawelj@iosphe.re>' __docformat__ = 'restructuredtext en' import os diff --git a/kcc/dualmetafix.py b/kcc/dualmetafix.py index 1c80b58..5889d68 100644 --- a/kcc/dualmetafix.py +++ b/kcc/dualmetafix.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # # Based on initial version of DualMetaFix. Copyright (C) 2013 Kevin Hendricks -# Changes for KCC Copyright (C) 2014 Pawel Jastrzebski <pawelj@iosphe.re> +# Changes for KCC Copyright (C) 2014-2015 Pawel Jastrzebski <pawelj@iosphe.re> # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/kcc/image.py b/kcc/image.py index 212feda..9eff741 100755 --- a/kcc/image.py +++ b/kcc/image.py @@ -1,7 +1,7 @@ # Copyright (C) 2010 Alex Yatskov # Copyright (C) 2011 Stanislav (proDOOMman) Kosolapov <prodoomman@gmail.com> # Copyright (c) 2012-2014 Ciro Mattia Gonano <ciromattia@gmail.com> -# Copyright (c) 2013-2014 Pawel Jastrzebski <pawelj@iosphe.re> +# Copyright (c) 2013-2015 Pawel Jastrzebski <pawelj@iosphe.re> # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -18,7 +18,7 @@ __version__ = '4.3.1' __license__ = 'ISC' -__copyright__ = '2012-2014, Ciro Mattia Gonano <ciromattia@gmail.com>, Pawel Jastrzebski <pawelj@iosphe.re>' +__copyright__ = '2012-2015, Ciro Mattia Gonano <ciromattia@gmail.com>, Pawel Jastrzebski <pawelj@iosphe.re>' __docformat__ = 'restructuredtext en' import os diff --git a/kcc/pdfjpgextract.py b/kcc/pdfjpgextract.py index 4531fa7..7ebae06 100644 --- a/kcc/pdfjpgextract.py +++ b/kcc/pdfjpgextract.py @@ -1,5 +1,5 @@ # Copyright (c) 2012-2014 Ciro Mattia Gonano <ciromattia@gmail.com> -# Copyright (c) 2013-2014 Pawel Jastrzebski <pawelj@iosphe.re> +# Copyright (c) 2013-2015 Pawel Jastrzebski <pawelj@iosphe.re> # # Based upon the code snippet by Ned Batchelder # (http://nedbatchelder.com/blog/200712/extracting_jpgs_from_pdfs.html) @@ -20,7 +20,7 @@ # __license__ = 'ISC' -__copyright__ = '2012-2014, Ciro Mattia Gonano <ciromattia@gmail.com>, Pawel Jastrzebski <pawelj@iosphe.re>' +__copyright__ = '2012-2015, Ciro Mattia Gonano <ciromattia@gmail.com>, Pawel Jastrzebski <pawelj@iosphe.re>' __docformat__ = 'restructuredtext en' import os diff --git a/kcc/shared.py b/kcc/shared.py index dbbdd44..b8c7334 100644 --- a/kcc/shared.py +++ b/kcc/shared.py @@ -1,5 +1,5 @@ # Copyright (c) 2012-2014 Ciro Mattia Gonano <ciromattia@gmail.com> -# Copyright (c) 2013-2014 Pawel Jastrzebski <pawelj@iosphe.re> +# Copyright (c) 2013-2015 Pawel Jastrzebski <pawelj@iosphe.re> # # Permission to use, copy, modify, and/or distribute this software for # any purpose with or without fee is hereby granted, provided that the @@ -17,11 +17,27 @@ # __license__ = 'ISC' -__copyright__ = '2012-2014, Ciro Mattia Gonano <ciromattia@gmail.com>, Pawel Jastrzebski <pawelj@iosphe.re>' +__copyright__ = '2012-2015, Ciro Mattia Gonano <ciromattia@gmail.com>, Pawel Jastrzebski <pawelj@iosphe.re>' __docformat__ = 'restructuredtext en' import os from hashlib import md5 +from html.parser import HTMLParser + + +class HTMLStripper(HTMLParser): + def __init__(self): + HTMLParser.__init__(self) + self.reset() + self.strict = False + self.convert_charrefs = True + self.fed = [] + + def handle_data(self, d): + self.fed.append(d) + + def get_data(self): + return ''.join(self.fed) def getImageFileName(imgfile): @@ -57,4 +73,43 @@ def md5Checksum(filePath): def check7ZFile(filePath): with open(filePath, 'rb') as fh: header = fh.read(6) - return header == b"7z\xbc\xaf'\x1c" \ No newline at end of file + return header == b"7z\xbc\xaf'\x1c" + + +# noinspection PyUnresolvedReferences +def dependencyCheck(level): + missing = [] + if level > 2: + try: + from PyQt5 import QtCore, QtNetwork, QtWidgets + if tuple(map(int, ('5.2.0'.split(".")))) > tuple(map(int, (QtCore.qVersion().split(".")))): + missing.append('PyQt5 5.2.0+') + except ImportError: + missing.append('PyQt5 5.2.0+') + if level > 1: + try: + import psutil + if tuple(map(int, ('2.0.0'.split(".")))) > tuple(map(int, psutil.version_info)): + missing.append('psutil 2.0.0+') + except ImportError: + missing.append('psutil 2.0.0+') + try: + import slugify + except ImportError: + missing.append('python-slugify') + try: + import PIL + if tuple(map(int, ('2.7.0'.split(".")))) > tuple(map(int, (PIL.PILLOW_VERSION.split(".")))): + missing.append('Pillow 2.7.0+') + except ImportError: + missing.append('Pillow 2.7.0+') + if len(missing) > 0: + try: + import tkinter + import tkinter.messagebox + importRoot = tkinter.Tk() + importRoot.withdraw() + tkinter.messagebox.showerror('KCC - Error', 'ERROR: ' + ', '.join(missing) + ' is not installed!') + except ImportError: + print('ERROR: ' + ', '.join(missing) + ' is not installed!') + exit(1) \ No newline at end of file diff --git a/setup.py b/setup.py index 9476d3e..99bd3f5 100755 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ if platform == "darwin": CFBundleName=NAME, CFBundleShortVersionString=VERSION, CFBundleGetInfoString=NAME + " " + VERSION + - ", written 2012-2014 by Ciro Mattia Gonano and Pawel Jastrzebski", + ", written 2012-2015 by Ciro Mattia Gonano and Pawel Jastrzebski", CFBundleExecutable=NAME, CFBundleIdentifier='com.github.ciromattia.kcc', CFBundleSignature='dplt', @@ -81,7 +81,7 @@ elif platform == "win32": windows=[{"script": MAIN, "dest_base": "KCC", "version": VERSION, - "copyright": "Ciro Mattia Gonano, Pawel Jastrzebski © 2014", + "copyright": "Ciro Mattia Gonano, Pawel Jastrzebski © 2012-2015", "legal_copyright": "ISC License (ISCL)", "product_version": VERSION, "product_name": "Kindle Comic Converter", |