extract cover from cbr,cbz
This commit is contained in:
parent
58689cd4ff
commit
8fdda01d4d
3 changed files with 49 additions and 3 deletions
|
@ -10,7 +10,7 @@ import ox
|
||||||
|
|
||||||
from . import pdf
|
from . import pdf
|
||||||
from . import cbr
|
from . import cbr
|
||||||
cbz = cbr
|
from . import cbz
|
||||||
from . import epub
|
from . import epub
|
||||||
from . import txt
|
from . import txt
|
||||||
from . import opf
|
from . import opf
|
||||||
|
@ -34,8 +34,10 @@ def metadata(f, from_=None):
|
||||||
data['size'] = os.stat(f).st_size
|
data['size'] = os.stat(f).st_size
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if ext in ('cbr', 'cbz'):
|
if ext in ('cbr', ):
|
||||||
info = cbr.info(f)
|
info = cbr.info(f)
|
||||||
|
elif ext in ('cbz', ):
|
||||||
|
info = cbz.info(f)
|
||||||
elif ext in ('epub', 'kepub'):
|
elif ext in ('epub', 'kepub'):
|
||||||
info = epub.info(f)
|
info = epub.info(f)
|
||||||
data['extension'] = 'epub'
|
data['extension'] = 'epub'
|
||||||
|
|
|
@ -2,11 +2,23 @@
|
||||||
|
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import ox
|
||||||
|
|
||||||
def cover(path):
|
def cover(path):
|
||||||
data = None
|
data = None
|
||||||
#open rar file and extract first page here
|
#open rar file and extract first page here
|
||||||
|
try:
|
||||||
|
from unrar import rarfile
|
||||||
|
rar = rarfile.RarFile(path)
|
||||||
|
for cover in ox.sorted_strings(rar.namelist()):
|
||||||
|
try:
|
||||||
|
data = rar.read(cover)
|
||||||
|
except:
|
||||||
|
data = None
|
||||||
|
finally:
|
||||||
|
return data
|
||||||
|
except:
|
||||||
|
data = None
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def info(path):
|
def info(path):
|
||||||
|
|
32
oml/media/cbz.py
Normal file
32
oml/media/cbz.py
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import os
|
||||||
|
import zipfile
|
||||||
|
|
||||||
|
import ox
|
||||||
|
|
||||||
|
def cover(path):
|
||||||
|
data = None
|
||||||
|
logger.debug('cover %s', path)
|
||||||
|
data = None
|
||||||
|
try:
|
||||||
|
z = zipfile.ZipFile(path)
|
||||||
|
except zipfile.BadZipFile:
|
||||||
|
logger.debug('invalid zbc file %s', path)
|
||||||
|
return data
|
||||||
|
files = [f.filename for f in z.filelist]
|
||||||
|
if files:
|
||||||
|
for cover in ox.sortedstrings(files):
|
||||||
|
try:
|
||||||
|
data = z.read(cover)
|
||||||
|
except:
|
||||||
|
data = None
|
||||||
|
finally:
|
||||||
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
def info(path):
|
||||||
|
data = {}
|
||||||
|
data['title'] = os.path.splitext(os.path.basename(path))[0]
|
||||||
|
#data['pages'] = fixme read rar to count pages
|
||||||
|
return data
|
||||||
|
|
Loading…
Reference in a new issue