Commit a1d24f12 authored by mitshel's avatar mitshel
Browse files

Несколько модифицирован zipf.py и модули его использующие,

Конструктор ZipFile теперь имеет то-же набор параметров что и в zypfile.py
А кодовая страница передается через глобальную переменную ZIP_CODEPAGE
parent c00aa7c8
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -59,7 +59,7 @@ zipscan = yes

# ziprescan = no - Предотвращает повторное сканирование всего zip-архива
# Но в этом случае, если в архиве произойдут изменения (удаления, добавления), то сканер этого не "заметит"
ziprescan  = no
ziprescan  = yes

# Указываем какая кодировка для названий файлов используется в ZIP-архивах
# доступные кодировки: cp437, cp866, cp1251, utf-8
@@ -67,6 +67,7 @@ ziprescan = no
# Поскольку в самом ZIP архиве сведения о кодировке, в которой находятся имена файлов - отсутствуют
# то автоматически определить правильную кодировку для имен файлов не представляется возможным
# поэтому для того чтобы кириллические имена файлов не ваыглядели как крякозябры следует применять кодировку cp866
# по умолчанию также используется значение zip_codepage = cp866
zip_codepage = cp866

# Установка delete_logical=yes приведет к тому, что при обнаружении сканером, что книга удалена, запись в БД об этой книге будет удалена логически (avail=0)
+199 −0

File added.

Preview size limit exceeded, changes collapsed.

+6 −7
Original line number Diff line number Diff line
@@ -4,12 +4,11 @@
import os
import sopdsdb
import sopdsparse
import zipf
import time
import datetime
import sopdscfg
import base64

import zipf

##########################################################################
# Считываем параметры командной строки
@@ -37,10 +36,10 @@ SCAN_FULL=options.scanfull
VERBOSE=options.verbose
CFG_FILE=options.configfile

if CFG_FILE=='':
   cfg=sopdscfg.cfgreader()
else:
   cfg=sopdscfg.cfgreader(CFG_FILE)
if CFG_FILE=='': cfg=sopdscfg.cfgreader()
else: cfg=sopdscfg.cfgreader(CFG_FILE)

zipf.ZIP_CODEPAGE=cfg.ZIP_CODEPAGE

if VERBOSE:
        print('Options set: scanfull =',SCAN_FULL,', verbose =',VERBOSE,', configfile =',cfg.CONFIGFILE, 'FB2TOEPUB =',cfg.FB2TOEPUB,cfg.FB2TOEPUB_PATH)
@@ -172,7 +171,7 @@ def processzip(db,fb2,name,full_path,file):
    if cfg.ZIPRESCAN or db.zipisscanned(rel_file,1)==0:
       cat_id=db.addcattree(rel_file,1)
       try:
          z = zipf.ZipFile(file, 'r', allowZip64=True, codepage=cfg.ZIP_CODEPAGE)
          z = zipf.ZipFile(file, 'r', allowZip64=True)
          filelist = z.namelist()
          for n in filelist:
              try:
+7 −6
Original line number Diff line number Diff line
@@ -7,19 +7,20 @@ import sopdsdb
import cgi
import codecs
import os
import zipf
import io
import locale
import time
import sopdsparse
import base64
import subprocess
import zipf

#######################################################################
#
# Парсим конфигурационный файл
#
cfg=sopdscfg.cfgreader()
zipf.ZIP_CODEPAGE=cfg.ZIP_CODEPAGE

#######################################################################
#
@@ -446,7 +447,7 @@ elif type_value==91:
      fo.close()
   elif cat_type==sopdsdb.CAT_ZIP:
      fz=codecs.open(full_path.encode("utf-8"), "rb")
      z = zipf.ZipFile(fz, 'r', allowZip64=True, codepage=cfg.ZIP_CODEPAGE)
      z = zipf.ZipFile(fz, 'r', allowZip64=True)
      book_size=z.getinfo(book_name).file_size
      enc_print('Content-Length: '+str(book_size))
      enc_print()
@@ -480,7 +481,7 @@ elif type_value==92:
      sys.stdout.buffer.write(buf)
   elif cat_type==sopdsdb.CAT_ZIP:
      fz=codecs.open(full_path.encode("utf-8"), "rb")
      zi = zipf.ZipFile(fz, 'r', allowZip64=True, codepage=cfg.ZIP_CODEPAGE)
      zi = zipf.ZipFile(fz, 'r', allowZip64=True)
      fo= zi.open(book_name)
      str=fo.read()
      fo.close()
@@ -514,7 +515,7 @@ elif type_value==93:
      file_path=os.path.join(full_path,book_name)
   elif cat_type==sopdsdb.CAT_ZIP:
      fz=codecs.open(full_path.encode("utf-8"), "rb")
      z = zipf.ZipFile(fz, 'r', allowZip64=True, codepage=cfg.ZIP_CODEPAGE)
      z = zipf.ZipFile(fz, 'r', allowZip64=True)
      z.extract(book_name,'/tmp')
      tmp_fb2_path=os.path.join(cfg.TEMP_DIR,book_name)
      file_path=tmp_fb2_path
@@ -560,7 +561,7 @@ elif type_value==93:
#      file_path=os.path.join(full_path,book_name)
#   elif cat_type==sopdsdb.CAT_ZIP:
#      fz=codecs.open(full_path.encode("utf-8"), "rb")
#      z = zipf.ZipFile(fz, 'r', allowZip64=True, codepage=cfg.ZIP_CODEPAGE)
#      z = zipf.ZipFile(fz, 'r', allowZip64=True)
#      z.extract(book_name,'/tmp')
#      tmp_fb2_path=os.path.join(cfg.TEMP_DIR,book_name)
#      file_path=tmp_fb2_path
@@ -606,7 +607,7 @@ elif type_value==99:
         fo.close()
      elif cat_type==sopdsdb.CAT_ZIP:
         fz=codecs.open(full_path.encode("utf-8"), "rb")
         z = zipf.ZipFile(fz, 'r', allowZip64=True, codepage=cfg.ZIP_CODEPAGE)
         z = zipf.ZipFile(fz, 'r', allowZip64=True)
         fo = z.open(book_name)
         fb2.parse(fo,0)
         fo.close()
Loading