diff --git a/oml/media/cbr.py b/oml/media/cbr.py index 244ee67..0735d32 100644 --- a/oml/media/cbr.py +++ b/oml/media/cbr.py @@ -66,10 +66,30 @@ def cover_cbz(path): data = None return data +def get_pages(path): + files = [] + format = detect_format(path) + if format == 'cbz': + try: + z = zipfile.ZipFile(path) + except zipfile.BadZipFile: + logger.debug('invalid cbz file %s', path) + return data + files = [f.filename for f in z.filelist] + elif format == 'cbr': + try: + from unrar import rarfile + rar = rarfile.RarFile(path) + files = rar.namelist() + except: + pass + files = filter_images(files) + return len(files) + def info(path): data = {} data['title'] = os.path.splitext(os.path.basename(path))[0] - #data['pages'] = fixme read rar to count pages + data['pages'] = get_pages(path) return data