Example #1
0
 def get_comics_from_collection(self, stream):
     from calibre.libunzip import extract as zipextract
     tdir = PersistentTemporaryDirectory('_comic_collection')
     zipextract(stream, tdir)
     comics = []
     with CurrentDir(tdir):
         if not os.path.exists('comics.txt'):
             raise ValueError(
                 ('%s is not a valid comic collection'
                  ' no comics.txt was found in the file') % stream.name)
         with open('comics.txt', 'rb') as f:
             raw = f.read()
         if raw.startswith(codecs.BOM_UTF16_BE):
             raw = raw.decode('utf-16-be')[1:]
         elif raw.startswith(codecs.BOM_UTF16_LE):
             raw = raw.decode('utf-16-le')[1:]
         elif raw.startswith(codecs.BOM_UTF8):
             raw = raw.decode('utf-8')[1:]
         else:
             raw = raw.decode('utf-8')
         for line in raw.splitlines():
             line = line.strip()
             if not line:
                 continue
             fname, title = line.partition(':')[0], line.partition(':')[-1]
             fname = fname.replace('#', '_')
             fname = os.path.join(tdir, *fname.split('/'))
             if not title:
                 title = os.path.basename(fname).rpartition('.')[0]
             if os.access(fname, os.R_OK):
                 comics.append([title, fname])
     if not comics:
         raise ValueError('%s has no comics' % stream.name)
     return comics
Example #2
0
 def get_comics_from_collection(self, stream):
     from calibre.libunzip import extract as zipextract
     tdir = PersistentTemporaryDirectory('_comic_collection')
     zipextract(stream, tdir)
     comics = []
     with CurrentDir(tdir):
         if not os.path.exists('comics.txt'):
             raise ValueError((
                 '%s is not a valid comic collection'
                 ' no comics.txt was found in the file')
                     %stream.name)
         raw = open('comics.txt', 'rb').read()
         if raw.startswith(codecs.BOM_UTF16_BE):
             raw = raw.decode('utf-16-be')[1:]
         elif raw.startswith(codecs.BOM_UTF16_LE):
             raw = raw.decode('utf-16-le')[1:]
         elif raw.startswith(codecs.BOM_UTF8):
             raw = raw.decode('utf-8')[1:]
         else:
             raw = raw.decode('utf-8')
         for line in raw.splitlines():
             line = line.strip()
             if not line:
                 continue
             fname, title = line.partition(':')[0], line.partition(':')[-1]
             fname = fname.replace('#', '_')
             fname = os.path.join(tdir, *fname.split('/'))
             if not title:
                 title = os.path.basename(fname).rpartition('.')[0]
             if os.access(fname, os.R_OK):
                 comics.append([title, fname])
     if not comics:
         raise ValueError('%s has no comics'%stream.name)
     return comics
Example #3
0
def docx_exploder(path, tdir, question=lambda x:True):
    zipextract(path, tdir)
    from calibre.ebooks.docx.dump import pretty_all_xml_in_dir
    pretty_all_xml_in_dir(tdir)
    for f in walk(tdir):
        if os.path.basename(f) == 'document.xml':
            return f
    raise Error('Invalid book: Could not find document.xml')
Example #4
0
def process_epub(input_file, output_file):
    from calibre import CurrentDir
    from calibre.libunzip import extract as zipextract
    from calibre.ptempfile import TemporaryDirectory
    from calibre.utils.logging import Log

    from calibre_plugins.modify_epub.container import ExtendedContainer

    input_file = os.path.abspath(input_file)
    output_file = os.path.abspath(output_file)

    # Extract the epub into a temp directory
    with TemporaryDirectory('fb2-hyphens') as tdir:
        with CurrentDir(tdir):
            zipextract(input_file, tdir)

            # Use our own simplified wrapper around an ePub that will
            # preserve the file structure and css
            container = ExtendedContainer(tdir, Log())
            is_modified = process_epub_file(container)
            if is_modified:
                container.write(output_file)
Example #5
0
def process_epub(input_file, output_file):
    from calibre import CurrentDir
    from calibre.libunzip import extract as zipextract
    from calibre.ptempfile import TemporaryDirectory
    from calibre.utils.logging import Log

    from calibre_plugins.modify_epub.container import ExtendedContainer

    input_file = os.path.abspath(input_file)
    output_file = os.path.abspath(output_file)

    # Extract the epub into a temp directory
    with TemporaryDirectory("fb2-hyphens") as tdir:
        with CurrentDir(tdir):
            zipextract(input_file, tdir)

            # Use our own simplified wrapper around an ePub that will
            # preserve the file structure and css
            container = ExtendedContainer(tdir, Log())
            is_modified = process_epub_file(container)
            if is_modified:
                container.write(output_file)
Example #6
0
def zip_exploder(path, tdir, question=lambda x:True):
    zipextract(path, tdir)
    for f in walk(tdir):
        if f.lower().endswith('.opf'):
            return f
    raise Error('Invalid book: Could not find .opf')
Example #7
0
def zip_exploder(path, tdir, question=lambda x:True):
    zipextract(path, tdir)
    for f in walk(tdir):
        if f.lower().endswith('.opf'):
            return f
    raise Error('Invalid book: Could not find .opf')