Commit 297b8921 authored by Dmitry Shelepnev's avatar Dmitry Shelepnev
Browse files

Update inpx_parser (correct skip univialable archives)

parent eaa03e19
Loading
Loading
Loading
Loading
+10 −9
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@ Created on 14 нояб. 2016 г.
# -*- coding: utf-8 -*-
import os
import zipfile
from opds_catalog import settings

sAuthor = 'AUTHOR'
sGenre  = 'GENRE'
@@ -31,8 +32,8 @@ class Inpx:
        self.inpx_itemseparator = ':'
        self.append_callback = append_callback
        self.inpskip_callback = inpskip_callback
        self.TEST_ZIP = False
        self.TEST_FILES = False
        self.TEST_ZIP = settings.INPX_TEST_ZIP
        self.TEST_FILES = settings.INPX_TEST_FILES
        self.error = 0       
        
    def parse(self):
@@ -45,10 +46,14 @@ class Inpx:
            if inp_ext.upper() != '.INP':
                continue
            
            if self.inpskip_callback(self.inpx_file, inp_name,finpx.getinfo(inp_file).file_size):
            zip_file_name = os.path.join(self.inpx_catalog,"%s%s"%(inp_name,'.zip'))
            
            # Если решили проверять на наличие ZIP файла или книги в ZIP, а самого ZIP файла нет - то пропускаем обработку всего ZIP файла
            if (self.TEST_ZIP or self.TEST_FILES) and not os.path.isfile(zip_file_name):
                continue
                        
            zip_file_name = os.path.join(self.inpx_catalog,"%s%s"%(inp_name,'.zip'))
            if self.inpskip_callback(self.inpx_file, inp_name,finpx.getinfo(inp_file).file_size):
                continue             
            
            # Если будем проверять наличие файлов в ZIP то однократно получаем список файлов в обрабатываемом ZIP 
            if self.TEST_FILES: 
@@ -57,10 +62,6 @@ class Inpx:
            else:
                testzip_namelist = []
            
            # Если решили проверять на наличие ZIP файла или книги в ZIP, а самого ZIP файла нет - то пропускаем обработку всего ZIP файла
            if (self.TEST_ZIP or self.TEST_FILES) and not os.path.isfile(zip_file_name):
                continue 
            
            finp = finpx.open(inp_file)
            for line in finp:
                meta_list = line.split(self.inpx_separator)
+6 −2
Original line number Diff line number Diff line
@@ -139,13 +139,17 @@ STATIC_ROOT = 'static'
#SOPDS_ROOT_LIB = 'W:\\_Downloads\\_Lib.rus.ec - Официальная\\lib.rus.ec\\'
#SOPDS_ROOT_LIB = '/mnt/SATA1TB-1/КНИГИ/BOOKS/'
#SOPDS_ROOT_LIB = '/mnt/nfs/КНИГИ/BOOKS/'
SOPDS_ROOT_LIB = os.path.join(BASE_DIR,'opds_catalog//tests//data//')
#SOPDS_ROOT_LIB = os.path.join(BASE_DIR,'opds_catalog\\tests\\data\\')
SOPDS_ROOT_LIB = "d:\\BOOKS\\"


SOPDS_SINGLE_COMMIT = False
SOPDS_AUTH = True
SOPDS_SCAN_SHED_MIN ='0'
SOPDS_SCAN_SHED_HOUR ='0,12'

SOPDS_SINGLE_COMMIT = True
SOPDS_INPX_TEST_ZIP = True

#Конвертеры EPUB и MOBI
#SOPDS_FB2TOEPUB = os.path.join(BASE_DIR,'convert/fb2toepub/unix_dist/fb2toepub')
#SOPDS_FB2TOEPUB = os.path.join(BASE_DIR,'convert/fb2conv/fb2epub')
+3 −1
Original line number Diff line number Diff line
@@ -166,7 +166,7 @@ def SearchBooksView(request):
        
        # prefetch_related on sqlite on items >999 therow error "too many SQL variables"    
        #if len(books)>0:
        #    books = books.prefetch_related('authors','genres','series')
        #    books = books.select_related('authors','genres','series')
        
        # Фильтруем дубликаты
        result = []
@@ -191,6 +191,8 @@ def SearchBooksView(request):
            else:
                result.append(p)

        result = books
                        
        p = Paginator(result, MAXITEMS)
        try:
            books = p.page(page_num)