]> xmof Git - DeDRM.git/commitdiff
Support multiple input Kindle files
authordunesmopy <dunes.mopy@gmail.com>
Sat, 4 Feb 2017 20:25:12 +0000 (12:25 -0800)
committerGitHub <noreply@github.com>
Sat, 4 Feb 2017 20:25:12 +0000 (12:25 -0800)
Sample bulk/batch usage:

    @echo off
    setlocal

    SET IN_DIR=%USERPROFILE%\My Documents\My Kindle Content
    SET DEST_DIR=%IN_DIR%_drmfree
    SET KEY_FILE=mykeyfile.k4i

    mkdir "%DEST_DIR%
    k4mobidedrm.py -k %KEY_FILE% "%IN_DIR%" "%DEST_DIR%

    echo done, see %DEST_DIR%
    cd /d "%DEST_DIR%"
    start .

    endlocal

DeDRM_Windows_Application/DeDRM_App/DeDRM_lib/lib/k4mobidedrm.py

index c3e475cdfeb854d6e3a6c3202514805dd0ec468f..321c5965f0c12841191e38230ddf38c53318bb99 100644 (file)
@@ -3,8 +3,8 @@
 
 from __future__ import with_statement
 
-# k4mobidedrm.py, version 5.3
-# Copyright © 2009-2015 by ApprenticeHarper et al.
+# k4mobidedrm.py, version 5.5
+# Copyright © 2009-2017 by ApprenticeHarper et al.
 
 # engine to remove drm from Kindle and Mobipocket ebooks
 # for personal use for archiving and converting your ebooks
@@ -57,6 +57,7 @@ from __future__ import with_statement
 #  5.2 - Fixed error in command line processing of unicode arguments
 #  5.3 - Changed Android support to allow passing of backup .ab files
 #  5.4 - Recognise KFX files masquerading as azw, even if we can't decrypt them yet.
+#  5.5 - Support multiple input files
 
 __version__ = '5.4'
 
@@ -64,6 +65,7 @@ __version__ = '5.4'
 import sys, os, re
 import csv
 import getopt
+import glob
 import re
 import traceback
 import time
@@ -287,7 +289,7 @@ def decryptBook(infile, outdir, kDatabaseFiles, androidFiles, serials, pids):
 def usage(progname):
     print u"Removes DRM protection from Mobipocket, Amazon KF8, Amazon Print Replica and Amazon Topaz ebooks"
     print u"Usage:"
-    print u"    {0} [-k <kindle.k4i>] [-p <comma separated PIDs>] [-s <comma separated Kindle serial numbers>] [ -a <AmazonSecureStorage.xml|backup.ab> ] <infile> <outdir>".format(progname)
+    print u"    {0} [-k <kindle.k4i>] [-p <comma separated PIDs>] [-s <comma separated Kindle serial numbers>] [ -a <AmazonSecureStorage.xml|backup.ab> ] <infile, infiles, or indir> <outdir>".format(progname)
 
 #
 # Main
@@ -307,8 +309,7 @@ def cli_main():
         usage(progname)
         sys.exit(2)
 
-    infile = args[0]
-    outdir = args[1]
+    outdir = args.pop()
     kDatabaseFiles = []
     androidFiles = []
     serials = []
@@ -335,7 +336,17 @@ def cli_main():
     # try with built in Kindle Info files if not on Linux
     k4 = not sys.platform.startswith('linux')
 
-    return decryptBook(infile, outdir, kDatabaseFiles, androidFiles, serials, pids)
+    if len(args) == 1:
+        arg = args[0]
+        if os.path.isdir(arg):
+            args = glob.glob(os.path.join(arg, '*.azw'))
+
+    for infile in args:
+        result = decryptBook(infile, outdir, kDatabaseFiles, androidFiles, serials, pids)
+        if result != 0:
+            print u'Error with %r' % infile
+    # return last result only
+    return result
 
 
 if __name__ == '__main__':