From 7b45d2128c1ba1536907e73934304da4cfd29e29 Mon Sep 17 00:00:00 2001 From: Zhuoyun Wei Date: Wed, 18 Apr 2018 04:54:53 -0400 Subject: [PATCH 1/4] Don't mask ImportError if dependencies are not met --- DeDRM_calibre_plugin/DeDRM_plugin/kfxdedrm.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DeDRM_calibre_plugin/DeDRM_plugin/kfxdedrm.py b/DeDRM_calibre_plugin/DeDRM_plugin/kfxdedrm.py index 8885e09..c2b9bb1 100644 --- a/DeDRM_calibre_plugin/DeDRM_plugin/kfxdedrm.py +++ b/DeDRM_calibre_plugin/DeDRM_plugin/kfxdedrm.py @@ -15,9 +15,9 @@ except ImportError: from StringIO import StringIO try: - import ion -except: from calibre_plugins.dedrm import ion +except ImportError: + import ion __license__ = 'GPL v3' From 4f1e9fcf43b70cfb2032bf2959c5a170bc3b2225 Mon Sep 17 00:00:00 2001 From: Zhuoyun Wei Date: Wed, 18 Apr 2018 04:57:07 -0400 Subject: [PATCH 2/4] Use pylzma as a fallback --- DeDRM_calibre_plugin/DeDRM_plugin/ion.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/DeDRM_calibre_plugin/DeDRM_plugin/ion.py b/DeDRM_calibre_plugin/DeDRM_plugin/ion.py index c100191..40433ca 100644 --- a/DeDRM_calibre_plugin/DeDRM_plugin/ion.py +++ b/DeDRM_calibre_plugin/DeDRM_plugin/ion.py @@ -23,13 +23,17 @@ from Crypto.Util.py3compat import bchr, bord try: # lzma library from calibre 2.35.0 or later import lzma.lzma1 as calibre_lzma -except: +except ImportError: calibre_lzma = None try: import lzma - except: + except ImportError: # Need pip backports.lzma on Python <3.3 - from backports import lzma + try: + from backports import lzma + except ImportError: + # Windows-friendly choice: pylzma wheels + import pylzma as lzma TID_NULL = 0 From 12ce977d7920dfc717075751b62ffa573f3ce649 Mon Sep 17 00:00:00 2001 From: Zhuoyun Wei Date: Wed, 18 Apr 2018 04:58:45 -0400 Subject: [PATCH 3/4] Propagate changes --- .../DeDRM.app/Contents/Resources/ion.py | 10 +++++++--- .../DeDRM.app/Contents/Resources/kfxdedrm.py | 4 ++-- .../DeDRM_App/DeDRM_lib/lib/ion.py | 10 +++++++--- .../DeDRM_App/DeDRM_lib/lib/kfxdedrm.py | 4 ++-- 4 files changed, 18 insertions(+), 10 deletions(-) diff --git a/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/ion.py b/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/ion.py index c100191..40433ca 100644 --- a/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/ion.py +++ b/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/ion.py @@ -23,13 +23,17 @@ from Crypto.Util.py3compat import bchr, bord try: # lzma library from calibre 2.35.0 or later import lzma.lzma1 as calibre_lzma -except: +except ImportError: calibre_lzma = None try: import lzma - except: + except ImportError: # Need pip backports.lzma on Python <3.3 - from backports import lzma + try: + from backports import lzma + except ImportError: + # Windows-friendly choice: pylzma wheels + import pylzma as lzma TID_NULL = 0 diff --git a/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/kfxdedrm.py b/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/kfxdedrm.py index 8885e09..c2b9bb1 100644 --- a/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/kfxdedrm.py +++ b/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/kfxdedrm.py @@ -15,9 +15,9 @@ except ImportError: from StringIO import StringIO try: - import ion -except: from calibre_plugins.dedrm import ion +except ImportError: + import ion __license__ = 'GPL v3' diff --git a/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/lib/ion.py b/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/lib/ion.py index c100191..40433ca 100644 --- a/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/lib/ion.py +++ b/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/lib/ion.py @@ -23,13 +23,17 @@ from Crypto.Util.py3compat import bchr, bord try: # lzma library from calibre 2.35.0 or later import lzma.lzma1 as calibre_lzma -except: +except ImportError: calibre_lzma = None try: import lzma - except: + except ImportError: # Need pip backports.lzma on Python <3.3 - from backports import lzma + try: + from backports import lzma + except ImportError: + # Windows-friendly choice: pylzma wheels + import pylzma as lzma TID_NULL = 0 diff --git a/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/lib/kfxdedrm.py b/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/lib/kfxdedrm.py index 8885e09..c2b9bb1 100644 --- a/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/lib/kfxdedrm.py +++ b/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/lib/kfxdedrm.py @@ -15,9 +15,9 @@ except ImportError: from StringIO import StringIO try: - import ion -except: from calibre_plugins.dedrm import ion +except ImportError: + import ion __license__ = 'GPL v3' From 599f33171f4b036b36949a09b9cc87aeb9b9d3ae Mon Sep 17 00:00:00 2001 From: Zhuoyun Wei Date: Wed, 18 Apr 2018 05:09:33 -0400 Subject: [PATCH 4/4] Document LZMA support on Windows --- ReadMe_First.txt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/ReadMe_First.txt b/ReadMe_First.txt index 7bb375b..9727b3b 100644 --- a/ReadMe_First.txt +++ b/ReadMe_First.txt @@ -107,6 +107,15 @@ In addition, Windows Users need PyCrypto: Once Windows users have installed Python 2.7, and the matching PyCrypto, they are ready to run the DeDRM application or individual scripts. +For (experimental) KFX support, you also need LZMA support. LZMA is built-in +in Python 3.3+ but not present in Python 2. Choices are backports.lzma and +pylzma, both of which need compiling. Compiling Python extensions on Windows +requires Visual Studio and is a PITA. The recommended way is to install wheels +(binary) directly. + +Windows binary wheels for backports.lzma and pylzma could be found here: + +https://www.lfd.uci.edu/~gohlke/pythonlibs/ Apple's iBooks FairPlay DRM