def response_book_cover(self): """ Выдача Обложки На лету """ (book_name, book_path, reg_date, format, title, annotation, docdate, cat_type, cover, cover_type, fsize) = self.opdsdb.getbook(self.slice_value) c0 = 0 if format == 'fb2': full_path = os.path.join(self.cfg.ROOT_LIB, book_path) fb2 = sopdsparse.fb2parser(1) if cat_type == sopdsdb.CAT_NORMAL: file_path = os.path.join(full_path, book_name) fo = codecs.open(file_path.encode("utf-8"), "rb") fb2.parse(fo, 0) fo.close() elif cat_type == sopdsdb.CAT_ZIP: fz = codecs.open(full_path.encode("utf-8"), "rb") z = zipf.ZipFile(fz, 'r', allowZip64=True) fo = z.open(book_name) fb2.parse(fo, 0) fo.close() z.close() fz.close() if len(fb2.cover_image.cover_data) > 0: try: s = fb2.cover_image.cover_data dstr = base64.b64decode(s) ictype = fb2.cover_image.getattr('content-type') self.add_response_header([('Content-Type', ictype)]) self.add_response_binary(dstr) c0 = 1 except: c0 = 0 if c0 == 0: if os.path.exists(sopdscfg.NOCOVER_PATH): self.add_response_header([('Content-Type', 'image/jpeg')]) f = open(sopdscfg.NOCOVER_PATH, "rb") self.add_response_binary(f.read()) f.close() else: self.set_response_status('404 Not Found')
def response_book_cover(self): """ Выдача Обложки На лету """ (book_name,book_path,reg_date,format,title,annotation,docdate,cat_type,cover,cover_type,fsize)=self.opdsdb.getbook(self.slice_value) c0=0 if format=='fb2': full_path=os.path.join(self.cfg.ROOT_LIB,book_path) fb2=sopdsparse.fb2parser(1) if cat_type==sopdsdb.CAT_NORMAL: file_path=os.path.join(full_path,book_name) fo=codecs.open(file_path.encode("utf-8"), "rb") fb2.parse(fo,0) fo.close() elif cat_type==sopdsdb.CAT_ZIP: fz=codecs.open(full_path.encode("utf-8"), "rb") z = zipf.ZipFile(fz, 'r', allowZip64=True) fo = z.open(book_name) fb2.parse(fo,0) fo.close() z.close() fz.close() if len(fb2.cover_image.cover_data)>0: try: s=fb2.cover_image.cover_data dstr=base64.b64decode(s) ictype=fb2.cover_image.getattr('content-type') self.add_response_header([('Content-Type',ictype)]) self.add_response_binary(dstr) c0=1 except: c0=0 if c0==0: if os.path.exists(sopdscfg.NOCOVER_PATH): self.add_response_header([('Content-Type','image/jpeg')]) f=open(sopdscfg.NOCOVER_PATH,"rb") self.add_response_binary(f.read()) f.close() else: self.set_response_status('404 Not Found')
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import sopdsparse import base64 f=open('105863.fb2','rb') parser=sopdsparse.fb2parser(True) parser.parse(f) print("Errorstr= ",parser.parse_errormsg) print(parser.author_first.getvalue(), parser.author_last.getvalue(), parser.genre.getvalue(), parser.lang.getvalue(), parser.book_title.getvalue()) print(parser.annotation.getvalue()) i=0 print(parser.cover_image.cover_data) jpg=open('image.jpg','wb') sstr=parser.cover_image.cover_data.strip("' ") dstr=base64.b64decode(sstr) jpg.write(dstr) jpg.close() print(parser.cover_image.cover_data) print(parser.cover_image.cover_name) print(parser.cover_image.getattr('content-type')) f.close()
def init_parser(self): self.fb2parser=sopdsparse.fb2parser(False)