logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

EBook::Tools::MSReader - Helper code for working with Microsoft Reader (.lit) e-books.

Author

       Zed Pobre <zed@debian.org>

Bugs And Limitations

       •   All  handling  happens  through ConvertLIT as an external helper.  Native Perl code may eventually be
           written to handle non-DRMed extraction.

       •   Unit tests are unwritten

Name

       EBook::Tools::MSReader - Helper code for working with Microsoft Reader (.lit) e-books.

Procedures

       All procedures are exportable, but none are exported by default.

   find_convertlit()
       Attempts to locate the convertlit executable by making a test execution on predicted locations (including
       just checking PATH) and looking in the EBook::Tools user configuration directory (see "userconfigdir()"
       in EBook::Tools.

       Returns the system command used for a successful invocation, or undef if nothing worked.

       This will use package variable $convertlit_cmd as its first guess, and set that variable to the return
       value as well.

   find_convertlit_keys($filename)
       Attempts to locate the convertlit "keys.txt" file by checking predicted filenames, both in the current
       working directory and in the EBook::Tools user configuration directory (see "userconfigdir()" in
       EBook::Tools.

       If $filename is provided, the file "basename-keys.txt" will also be checked in both locations.

       Returns the name of the first file found, or undef if nothing was found.

       This will use package variable $convertlit_keys as its first guess, and set that variable to the return
       value as well.

   system_convertlit(%args)
       Runs "convertlit" to extract or downconvert a MS Reader .lit file.  The procedures find_convertlit() and
       find_convertlit_keys() are both called to locate necessary helper files.

       Returns the return value from convertlit, or undef if convertlit or the input file could not be found, or
       neither output file nor directory is specified.

       Arguments

       •   "infile"

           The input filename.  If not specified or invalid, the procedure croaks.

       •   "outfile"

           The output filename.  If this is specified convertlit will perform a downconversion.

       •   "dir"

           The  output  directory.   If  this  is  specified,  and  "outfile" is not, convertlit will perform an
           extraction.  If both this and "outfile" are specified, convertlit  will  downconvert  and  place  the
           downconverted file into the specified directory.

       •   "keyfile"

           The  location  of  the  "keys.txt"  file  containing the encryption keys, if available.  This is only
           required if the ".lit" file is DRM-protected and package variable $convertlit_keys does not point  to
           the correct file.

Synopsis

        use EBook::Tools::MSReader qw(find_convertlit find_convertlit_keys
                                      system_convertlit);
        $EBook::Tools::MSReader::convertlit_cmd = '/opt/convertlit/clit';
        $EBook::Tools::MSReader::convertlit_keys = '/opt/convertlit/keys.txt';

        my $convertlit = find_convertlit();
        my $keyfile = find_convertlit_keys();
        system_convertlit(infile => 'myfile.lit',
                          dir => 'myfile-unpacked');

See Also