Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Aug 3rd, 2012  |  syntax: None  |  size: 0.85 KB  |  hits: 13  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. #!/usr/bin/perl -- # -*- Perl -*-
  2.  
  3. # Fixes the bookid identifier in Linux Journal EPUB files.
  4. # No warranty. YMMV. etc.
  5.  
  6. use strict;
  7. use English;
  8. use Cwd qw(abs_path);
  9. use File::Temp qw(tempdir);
  10.  
  11. my $ZIP = "zip";
  12. my $UNZIP = "unzip";
  13. my $JAVA = "java";
  14. my $EPUBCHECK = "/usr/local/epubcheck-1.2/epubcheck-1.2.jar";
  15.  
  16. my $usage = "Usage: $0 dljxxx[.epub]\n";
  17. my $EPUB = shift @ARGV || die $usage;
  18.  
  19. $EPUB = abs_path($EPUB);
  20. $EPUB =~ s/\.epub$//;
  21.  
  22. my $ID = $EPUB;
  23. $ID =~ s/^.*\///;
  24.  
  25. my $NPUB = "$EPUB-patched.epub";
  26.  
  27. my $tmp = tempdir('CLEANUP' => 1);
  28.  
  29. chdir ($tmp);
  30. system ("$UNZIP -q $EPUB.epub");
  31. my $content = "OEBPS/content.opf";
  32. open (F, $content) || die "Unexpected archive format.";
  33. read (F, $_, -s $content);
  34. close (F);
  35.  
  36. system ("$ZIP -q0X $NPUB mimetype");
  37. system ("$ZIP -qXr9D $NPUB *");
  38.  
  39. if (defined($EPUBCHECK)) {
  40.     system ("JAVA -jar $EPUBCHECK $NPUB");
  41. }