Esempio n. 1
0
    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')
Esempio n. 2
0
    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')
Esempio n. 3
0
#!/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()

Esempio n. 4
0
 def init_parser(self):
     self.fb2parser=sopdsparse.fb2parser(False)