From 4d7556e919c2cec6b71ff9a12f217c2b834c46f0 Mon Sep 17 00:00:00 2001 From: Apprentice Harper Date: Fri, 5 Aug 2016 17:24:44 +0100 Subject: [PATCH] Fix for another unknown Topaz token. --- .../DeDRM.app/Contents/Resources/__init__.py | 4 +++- .../Contents/Resources/convert2xml.py | 12 ++++++++++++ .../DeDRM.app/Contents/Resources/wineutils.py | 2 +- .../DeDRM_App/DeDRM_lib/DeDRM_App.pyw | 3 ++- .../DeDRM_App/DeDRM_lib/lib/__init__.py | 4 +++- .../DeDRM_App/DeDRM_lib/lib/convert2xml.py | 12 ++++++++++++ .../DeDRM_App/DeDRM_lib/lib/wineutils.py | 2 +- DeDRM_calibre_plugin/DeDRM_plugin.zip | Bin 353289 -> 353399 bytes DeDRM_calibre_plugin/DeDRM_plugin/__init__.py | 4 +++- .../DeDRM_plugin/convert2xml.py | 12 ++++++++++++ .../DeDRM_plugin/wineutils.py | 2 +- FAQs.md | 13 ++++++++----- 12 files changed, 58 insertions(+), 12 deletions(-) diff --git a/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/__init__.py b/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/__init__.py index 7908e6b..cde2673 100644 --- a/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/__init__.py +++ b/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/__init__.py @@ -51,6 +51,8 @@ __docformat__ = 'restructuredtext en' # 6.4.2 - Fix for more new tags in Topaz ebooks and very small Topaz ebooks # 6.4.3 - Fix for error that only appears when not in debug mode # Also includes fix for Macs with bonded ethernet ports +# 6.4.4 - Fix for some more 'new' tags in Topaz ebooks. +# Also fix an error in wineutils.py """ @@ -58,7 +60,7 @@ Decrypt DRMed ebooks. """ PLUGIN_NAME = u"DeDRM" -PLUGIN_VERSION_TUPLE = (6, 4, 3) +PLUGIN_VERSION_TUPLE = (6, 4, 4) PLUGIN_VERSION = u".".join([unicode(str(x)) for x in PLUGIN_VERSION_TUPLE]) # Include an html helpfile in the plugin's zipfile with the following name. RESOURCE_NAME = PLUGIN_NAME + '_Help.htm' diff --git a/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/convert2xml.py b/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/convert2xml.py index 443dd82..3413eda 100644 --- a/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/convert2xml.py +++ b/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/convert2xml.py @@ -391,6 +391,18 @@ class PageParser(object): 'startID' : (0, 'number', 1, 1), 'startID.page' : (1, 'number', 0, 0), 'startID.id' : (1, 'number', 0, 0), + + 'median_d' : (1, 'number', 0, 0), + 'median_h' : (1, 'number', 0, 0), + 'median_firsty' : (1, 'number', 0, 0), + 'median_lasty' : (1, 'number', 0, 0), + + 'num_footers_maybe' : (1, 'number', 0, 0), + 'num_footers_yes' : (1, 'number', 0, 0), + 'num_headers_maybe' : (1, 'number', 0, 0), + 'num_headers_yes' : (1, 'number', 0, 0), + + 'tracking' : (1, 'number', 0, 0), } diff --git a/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/wineutils.py b/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/wineutils.py index fff8016..0485e5e 100644 --- a/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/wineutils.py +++ b/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/wineutils.py @@ -31,7 +31,7 @@ def WineGetKeys(scriptpath, extension, wineprefix=""): cmdline = u"WINEPREFIX=\"{2}\" wine python.exe \"{0}\" \"{1}\"".format(scriptpath,outdirpath,wineprefix) else: cmdline = u"wine python.exe \"{0}\" \"{1}\"".format(scriptpath,outdirpath) - print u"{0} v{1}: Command line: “{2}”".format(PLUGIN_NAME, PLUGIN_VERSION, cmdline) + print u"{0} v{1}: Command line: '{2}'".format(PLUGIN_NAME, PLUGIN_VERSION, cmdline) try: cmdline = cmdline.encode(sys.getfilesystemencoding()) diff --git a/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/DeDRM_App.pyw b/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/DeDRM_App.pyw index 3221ecf..18c9da3 100644 --- a/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/DeDRM_App.pyw +++ b/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/DeDRM_App.pyw @@ -25,8 +25,9 @@ # 6.4.1 - Fix for new tags in Topaz ebooks # 6.4.2 - Fix for new tags in Topaz ebooks, and very small Topaz ebooks # 6.4.3 - Version bump to match plugin & Mac app +# 6.4.4 - Fix for some new tags in Topaz ebooks -__version__ = '6.4.3' +__version__ = '6.4.4' import sys import os, os.path diff --git a/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/lib/__init__.py b/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/lib/__init__.py index 7908e6b..cde2673 100644 --- a/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/lib/__init__.py +++ b/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/lib/__init__.py @@ -51,6 +51,8 @@ __docformat__ = 'restructuredtext en' # 6.4.2 - Fix for more new tags in Topaz ebooks and very small Topaz ebooks # 6.4.3 - Fix for error that only appears when not in debug mode # Also includes fix for Macs with bonded ethernet ports +# 6.4.4 - Fix for some more 'new' tags in Topaz ebooks. +# Also fix an error in wineutils.py """ @@ -58,7 +60,7 @@ Decrypt DRMed ebooks. """ PLUGIN_NAME = u"DeDRM" -PLUGIN_VERSION_TUPLE = (6, 4, 3) +PLUGIN_VERSION_TUPLE = (6, 4, 4) PLUGIN_VERSION = u".".join([unicode(str(x)) for x in PLUGIN_VERSION_TUPLE]) # Include an html helpfile in the plugin's zipfile with the following name. RESOURCE_NAME = PLUGIN_NAME + '_Help.htm' diff --git a/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/lib/convert2xml.py b/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/lib/convert2xml.py index 443dd82..3413eda 100644 --- a/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/lib/convert2xml.py +++ b/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/lib/convert2xml.py @@ -391,6 +391,18 @@ class PageParser(object): 'startID' : (0, 'number', 1, 1), 'startID.page' : (1, 'number', 0, 0), 'startID.id' : (1, 'number', 0, 0), + + 'median_d' : (1, 'number', 0, 0), + 'median_h' : (1, 'number', 0, 0), + 'median_firsty' : (1, 'number', 0, 0), + 'median_lasty' : (1, 'number', 0, 0), + + 'num_footers_maybe' : (1, 'number', 0, 0), + 'num_footers_yes' : (1, 'number', 0, 0), + 'num_headers_maybe' : (1, 'number', 0, 0), + 'num_headers_yes' : (1, 'number', 0, 0), + + 'tracking' : (1, 'number', 0, 0), } diff --git a/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/lib/wineutils.py b/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/lib/wineutils.py index fff8016..0485e5e 100644 --- a/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/lib/wineutils.py +++ b/DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/lib/wineutils.py @@ -31,7 +31,7 @@ def WineGetKeys(scriptpath, extension, wineprefix=""): cmdline = u"WINEPREFIX=\"{2}\" wine python.exe \"{0}\" \"{1}\"".format(scriptpath,outdirpath,wineprefix) else: cmdline = u"wine python.exe \"{0}\" \"{1}\"".format(scriptpath,outdirpath) - print u"{0} v{1}: Command line: “{2}”".format(PLUGIN_NAME, PLUGIN_VERSION, cmdline) + print u"{0} v{1}: Command line: '{2}'".format(PLUGIN_NAME, PLUGIN_VERSION, cmdline) try: cmdline = cmdline.encode(sys.getfilesystemencoding()) diff --git a/DeDRM_calibre_plugin/DeDRM_plugin.zip b/DeDRM_calibre_plugin/DeDRM_plugin.zip index ef70c60e16ffa17c4b79875f93c0b0e71bcf7155..7cb560a187a9c16c117a049a7a543842059eae45 100644 GIT binary patch delta 16697 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 delta 16762 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 diff --git a/DeDRM_calibre_plugin/DeDRM_plugin/__init__.py b/DeDRM_calibre_plugin/DeDRM_plugin/__init__.py index 7908e6b..cde2673 100644 --- a/DeDRM_calibre_plugin/DeDRM_plugin/__init__.py +++ b/DeDRM_calibre_plugin/DeDRM_plugin/__init__.py @@ -51,6 +51,8 @@ __docformat__ = 'restructuredtext en' # 6.4.2 - Fix for more new tags in Topaz ebooks and very small Topaz ebooks # 6.4.3 - Fix for error that only appears when not in debug mode # Also includes fix for Macs with bonded ethernet ports +# 6.4.4 - Fix for some more 'new' tags in Topaz ebooks. +# Also fix an error in wineutils.py """ @@ -58,7 +60,7 @@ Decrypt DRMed ebooks. """ PLUGIN_NAME = u"DeDRM" -PLUGIN_VERSION_TUPLE = (6, 4, 3) +PLUGIN_VERSION_TUPLE = (6, 4, 4) PLUGIN_VERSION = u".".join([unicode(str(x)) for x in PLUGIN_VERSION_TUPLE]) # Include an html helpfile in the plugin's zipfile with the following name. RESOURCE_NAME = PLUGIN_NAME + '_Help.htm' diff --git a/DeDRM_calibre_plugin/DeDRM_plugin/convert2xml.py b/DeDRM_calibre_plugin/DeDRM_plugin/convert2xml.py index 443dd82..3413eda 100644 --- a/DeDRM_calibre_plugin/DeDRM_plugin/convert2xml.py +++ b/DeDRM_calibre_plugin/DeDRM_plugin/convert2xml.py @@ -391,6 +391,18 @@ class PageParser(object): 'startID' : (0, 'number', 1, 1), 'startID.page' : (1, 'number', 0, 0), 'startID.id' : (1, 'number', 0, 0), + + 'median_d' : (1, 'number', 0, 0), + 'median_h' : (1, 'number', 0, 0), + 'median_firsty' : (1, 'number', 0, 0), + 'median_lasty' : (1, 'number', 0, 0), + + 'num_footers_maybe' : (1, 'number', 0, 0), + 'num_footers_yes' : (1, 'number', 0, 0), + 'num_headers_maybe' : (1, 'number', 0, 0), + 'num_headers_yes' : (1, 'number', 0, 0), + + 'tracking' : (1, 'number', 0, 0), } diff --git a/DeDRM_calibre_plugin/DeDRM_plugin/wineutils.py b/DeDRM_calibre_plugin/DeDRM_plugin/wineutils.py index fff8016..0485e5e 100644 --- a/DeDRM_calibre_plugin/DeDRM_plugin/wineutils.py +++ b/DeDRM_calibre_plugin/DeDRM_plugin/wineutils.py @@ -31,7 +31,7 @@ def WineGetKeys(scriptpath, extension, wineprefix=""): cmdline = u"WINEPREFIX=\"{2}\" wine python.exe \"{0}\" \"{1}\"".format(scriptpath,outdirpath,wineprefix) else: cmdline = u"wine python.exe \"{0}\" \"{1}\"".format(scriptpath,outdirpath) - print u"{0} v{1}: Command line: “{2}”".format(PLUGIN_NAME, PLUGIN_VERSION, cmdline) + print u"{0} v{1}: Command line: '{2}'".format(PLUGIN_NAME, PLUGIN_VERSION, cmdline) try: cmdline = cmdline.encode(sys.getfilesystemencoding()) diff --git a/FAQs.md b/FAQs.md index 7720000..72f8ac6 100644 --- a/FAQs.md +++ b/FAQs.md @@ -11,7 +11,7 @@ When your ebooks have DRM you are unable to convert the ebook from one format to ## So how can I remove DRM from my ebooks? Just download and use these tools, that's all! Uh, almost. There are a few, uh, provisos, a, a couple of quid pro quos. * The tools don't work on all ebooks. For example, they don't work on any ebooks from Apple's iBooks store. -* You must own the ebook - the tools won't work on library ebooks or rented ebooks. +* You must own the ebook - the tools won't work on library ebooks or rented ebooks or books from a friend. * You must not use these tools to give your ebooks to a hundred of your closest friends. Or to a million strangers. Authors need to sell books to be able to write more books. Don't be mean to the authors. * Do NOT use Adobe Digital Editions 3.0 or later to download your ePubs. ADE 3.0 and later can use a new encryption scheme that the tools can't handle. While major ebook stores aren't using the new scheme yet, using ADE 2.0.1 will ensure that your ebooks are downloaded using the old scheme. Once a book has been downloaded with the new scheme, it's IMPOSSIBLE to re-download using the old scheme (without buying it again). @@ -32,7 +32,7 @@ Install calibre. Install the DeDRM\_plugin in calibre. Install the Obok\_plugin You are trying to add the tools archive (e.g. DeDRM\_tools\_6.4.3.zip) instead of the plugin. The tools archive is not the plugin. It is a collection of DRM removal tools which includes the plugin. You must unzip the archive, and install the calibre plugin (DeDRM\_plugin.zip) from a folder called “DeDRM\_calibre_plugin” in the unzipped archive. ### I’ve unzipped the tools archive, but I can’t find the calibre plugin when I try to add them to calibre. I use Windows. -You should select the zip file that is in the “DeDRM\_calibre\_plugin” folder, not any files inside the plugin’s zip archive. Make sure you are selecting from the folder that you created when you right unzipped the tools archive and not selecting a file inside the still-zipped tools archive. +You should select the zip file that is in the “DeDRM\_calibre\_plugin” folder, not any files inside the plugin’s zip archive. Make sure you are selecting from the folder that you created when you unzipped the tools archive and not selecting a file inside the still-zipped tools archive. (The problem is that Windows will allow apps to browse inside zip archives without needing to unzip them first. If there are zip archives inside the main zip archives, Windows will show them as unzipped as well. So what happens is people will unzip the DeDRM\_tools\_X.X.X.zip to a folder, but when using calibre they will actually navigate to the still zipped file by mistake and cannot tell they have done so because they do not have file extensions showing. So to the unwary Windows user, it appears that the zip archive was unzipped and that everything inside it was unzipped as well so there is no way to install the plugins. @@ -42,6 +42,10 @@ We strongly recommend renaming the DeDRM\_tools\_X.X.X.zip archive (after extrac ### I've installed ActiveState Python and PyCrypto, but the Windows application won't run. What have I done wrong? Nothing. There's a bug in the current ActiveState Python Windows installer that puts the Tcl code in the wrong place. See [this comment of mine at ActiveState community](https://community.activestate.com/node/19090). Just move the Tcl code and the Windows app should run. +## The Macintosh Application +### I can't open the Macintosh Application. Some message about it not being signed or something. +Try right-clicking and select open. That might give you the option to open it anyway. Otherwise you'll need to change your security settings to allow unsigned applications to run. You can probably change these back after running it for the first time. + # Using the Tools ## I can’t get the tools to work on my rented or library ebooks. Support for removing DRM from rented or library ebooks is not provided. @@ -77,6 +81,8 @@ If you cannot read the ebook on your current device or installed software, the t ## I have installed the calibre plugin, and the book is not already in calibre, but the DRM does not get removed. It is a Kindle book. If you are on Windows 8 and using the Windows 8 AppStore Kindle app, you must download and install the Kindle for PC application directly from the Amazon website. The tools do not work with the Windows 8 AppStore Kindle app. +If you are on Windows, using the Kindle for PC application, and your windows user name has accented or other non-ASCII characters in it, this might cause the plugin to fail. Create a new user account with an ASCII-only username. Install and register Kindle for PC there, and see if things work running calibre and the plugin in that user account. + If this book is from an eInk Kindle, you must enter the serial number into the configuration dialog. The serial number is sixteen characters long, and is case-sensitive. If this book is from Kindle for Mac or Kindle for PC, you must have the Kindle Software installed on the same computer as your copy of calibre. @@ -92,9 +98,6 @@ If the book is from Kindle for PC or Kindle for Mac and you think you are doing 1. Re-register Kindle for PC(Mac) with your Amazon account 1. Download the ebook again. Do not use the files you have downloaded previously. -## I use the Macintosh application, but the DRM does not get removed. It is a Kindle book it used to work before I reinstalled Kindle for Mac. -You need to delete the Kindle for Mac key that the Macintosh app has stored, so that it will generate the new key from your new installation of Kindle for Mac. You can do this in the application settings, or just delete the file ~/Library/Preferences/com.apprenticealf.dedrm/Local Kindle Key.k4i (where ~ is your home folder). - ## Some of my books had their DRM removed, but some still say that they have DRM and will not convert. There are several possible reasons why only some books get their DRM removed. * You still don’t have the DRM removal tools working correctly, but some of your books didn’t have DRM in the first place.