Loading py/sopds.cgi +35 −59 Original line number Diff line number Diff line Loading @@ -126,7 +126,7 @@ def entry_authors(db,book_id,link_show=False): authors+=', ' authors+=last_name+' '+first_name if link_show: author_ref=cfg.CGI_PATH+'?id=06'+str(author_id) author_ref=cfg.CGI_PATH+'?id=22'+str(author_id) enc_print('<link href="'+author_ref+'" rel="related" type="application/atom+xml;profile=opds-catalog" title="Все книги автора '+last_name+' '+first_name+'" />') else: enc_print('<content type="text">'+authors+'</content>') Loading Loading @@ -196,9 +196,9 @@ if 'page' in form: page_value=int(page) if 'search' in form: searchTerm=form.getvalue("search","") type_value=13 if type_value==0: type_value=7 slice_value=-1 id_value='13&search='+searchTerm id_value='%02d&search=%s'%(type_value,searchTerm) opdsdb=sopdsdb.opdsDatabase(cfg.DB_NAME,cfg.DB_USER,cfg.DB_PASS,cfg.DB_HOST,cfg.ROOT_LIB) opdsdb.openDB() Loading Loading @@ -289,7 +289,7 @@ elif type_value==3: ######################################################### # Выдача списка книг по наименованию или на основании поискового запроса # if type_value==13: if type_value==13 or type_value==71: if slice_value>=0: i=slice_value Loading Loading @@ -372,14 +372,38 @@ elif type_value==5: footer() ######################################################### # Выдача списка авторов # Выбор типа поиска по автору или наименованию # if type_value==12: if type_value==7: header() enc_print('<link href="'+cfg.SEARCHXML_PATH+'" rel="search" type="application/opensearchdescription+xml" />') enc_print('<link href="'+cfg.CGI_PATH+'?search={searchTerms}" rel="search" type="application/atom+xml" />') entry_start() entry_head('Поиск по наименованию',None,'71') entry_content('Поиск книги по ее наименованию') enc_print('<link href="'+cfg.CGI_PATH+'?id=71&search='+searchTerm+'" type="application/atom+xml;profile=opds-catalog" />') entry_finish() entry_start() entry_head('Поиск авторов',None,'72') entry_content('Поиск авторов по имени') enc_print('<link href="'+cfg.CGI_PATH+'?id=72&search='+searchTerm+'" type="application/atom+xml;profile=opds-catalog" />') entry_finish() footer() ######################################################### # Выдача списка авторов по имени или на основании поиска # if type_value==12 or type_value==72: if slice_value>0: i=slice_value letter="" while i>0: letter=chr(i%10000)+letter i=i//10000 else: letter="%"+searchTerm header() for (author_id,first_name, last_name,cnt) in opdsdb.getauthorsbyl(letter,cfg.MAXITEMS,page_value,cfg.DUBLICATES_SHOW): Loading Loading @@ -540,54 +564,6 @@ elif type_value==93: try: os.remove(tmp_epub_path.encode('utf-8')) except: pass ######################################################### # Выдача файла книги после конвертации в EPUB+ZIP # (Видимо не нужная опция т.к. EPUB это собственно уже ZIP # #elif type_value==94: # (book_name,book_path,reg_date,format,title,annotation,cat_type,cover,cover_type,fsize)=opdsdb.getbook(slice_value) # full_path=os.path.join(cfg.ROOT_LIB,book_path) # (n,e)=os.path.splitext(book_name) # transname=translit(n+'.epub') # # HTTP Header # enc_print('Content-Type:application/octet-stream; name="'+transname+'"') # enc_print("Content-Disposition: attachment; filename="+transname+'.zip') # enc_print('Content-Transfer-Encoding: binary') # if cat_type==sopdsdb.CAT_NORMAL: # tmp_fb2_path=None # 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) # z.extract(book_name,'/tmp') # tmp_fb2_path=os.path.join(cfg.TEMP_DIR,book_name) # file_path=tmp_fb2_path # # tmp_epub_path=os.path.join(cfg.TEMP_DIR,book_name+'.epub') # subprocess.call([cfg.FB2TOEPUB_PATH,file_path.encode('utf-8'),tmp_epub_path]) # # if os.path.isfile(tmp_epub_path): # dio = io.BytesIO() # z = zipf.ZipFile(dio, 'w', zipf.ZIP_DEFLATED) # z.write(tmp_epub_path.encode('utf-8'),transname) # z.close() # buf = dio.getvalue() # # HTTP Header # enc_print('Content-Type:application/octet-stream; name="'+transname+'"') # enc_print("Content-Disposition: attachment; filename="+transname+'.zip') # enc_print('Content-Transfer-Encoding: binary') # enc_print('Content-Length: %s'%len(buf)) # enc_print() # sys.stdout.buffer.write(buf) # else: # print('Status: 404 Not Found') # print() # # try: os.remove(tmp_fb2_path.encode('utf-8')) # except: pass # try: os.remove(tmp_epub_path.encode('utf-8')) # except: pass ###################################################### # Выдача Обложки На лету # Loading Loading
py/sopds.cgi +35 −59 Original line number Diff line number Diff line Loading @@ -126,7 +126,7 @@ def entry_authors(db,book_id,link_show=False): authors+=', ' authors+=last_name+' '+first_name if link_show: author_ref=cfg.CGI_PATH+'?id=06'+str(author_id) author_ref=cfg.CGI_PATH+'?id=22'+str(author_id) enc_print('<link href="'+author_ref+'" rel="related" type="application/atom+xml;profile=opds-catalog" title="Все книги автора '+last_name+' '+first_name+'" />') else: enc_print('<content type="text">'+authors+'</content>') Loading Loading @@ -196,9 +196,9 @@ if 'page' in form: page_value=int(page) if 'search' in form: searchTerm=form.getvalue("search","") type_value=13 if type_value==0: type_value=7 slice_value=-1 id_value='13&search='+searchTerm id_value='%02d&search=%s'%(type_value,searchTerm) opdsdb=sopdsdb.opdsDatabase(cfg.DB_NAME,cfg.DB_USER,cfg.DB_PASS,cfg.DB_HOST,cfg.ROOT_LIB) opdsdb.openDB() Loading Loading @@ -289,7 +289,7 @@ elif type_value==3: ######################################################### # Выдача списка книг по наименованию или на основании поискового запроса # if type_value==13: if type_value==13 or type_value==71: if slice_value>=0: i=slice_value Loading Loading @@ -372,14 +372,38 @@ elif type_value==5: footer() ######################################################### # Выдача списка авторов # Выбор типа поиска по автору или наименованию # if type_value==12: if type_value==7: header() enc_print('<link href="'+cfg.SEARCHXML_PATH+'" rel="search" type="application/opensearchdescription+xml" />') enc_print('<link href="'+cfg.CGI_PATH+'?search={searchTerms}" rel="search" type="application/atom+xml" />') entry_start() entry_head('Поиск по наименованию',None,'71') entry_content('Поиск книги по ее наименованию') enc_print('<link href="'+cfg.CGI_PATH+'?id=71&search='+searchTerm+'" type="application/atom+xml;profile=opds-catalog" />') entry_finish() entry_start() entry_head('Поиск авторов',None,'72') entry_content('Поиск авторов по имени') enc_print('<link href="'+cfg.CGI_PATH+'?id=72&search='+searchTerm+'" type="application/atom+xml;profile=opds-catalog" />') entry_finish() footer() ######################################################### # Выдача списка авторов по имени или на основании поиска # if type_value==12 or type_value==72: if slice_value>0: i=slice_value letter="" while i>0: letter=chr(i%10000)+letter i=i//10000 else: letter="%"+searchTerm header() for (author_id,first_name, last_name,cnt) in opdsdb.getauthorsbyl(letter,cfg.MAXITEMS,page_value,cfg.DUBLICATES_SHOW): Loading Loading @@ -540,54 +564,6 @@ elif type_value==93: try: os.remove(tmp_epub_path.encode('utf-8')) except: pass ######################################################### # Выдача файла книги после конвертации в EPUB+ZIP # (Видимо не нужная опция т.к. EPUB это собственно уже ZIP # #elif type_value==94: # (book_name,book_path,reg_date,format,title,annotation,cat_type,cover,cover_type,fsize)=opdsdb.getbook(slice_value) # full_path=os.path.join(cfg.ROOT_LIB,book_path) # (n,e)=os.path.splitext(book_name) # transname=translit(n+'.epub') # # HTTP Header # enc_print('Content-Type:application/octet-stream; name="'+transname+'"') # enc_print("Content-Disposition: attachment; filename="+transname+'.zip') # enc_print('Content-Transfer-Encoding: binary') # if cat_type==sopdsdb.CAT_NORMAL: # tmp_fb2_path=None # 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) # z.extract(book_name,'/tmp') # tmp_fb2_path=os.path.join(cfg.TEMP_DIR,book_name) # file_path=tmp_fb2_path # # tmp_epub_path=os.path.join(cfg.TEMP_DIR,book_name+'.epub') # subprocess.call([cfg.FB2TOEPUB_PATH,file_path.encode('utf-8'),tmp_epub_path]) # # if os.path.isfile(tmp_epub_path): # dio = io.BytesIO() # z = zipf.ZipFile(dio, 'w', zipf.ZIP_DEFLATED) # z.write(tmp_epub_path.encode('utf-8'),transname) # z.close() # buf = dio.getvalue() # # HTTP Header # enc_print('Content-Type:application/octet-stream; name="'+transname+'"') # enc_print("Content-Disposition: attachment; filename="+transname+'.zip') # enc_print('Content-Transfer-Encoding: binary') # enc_print('Content-Length: %s'%len(buf)) # enc_print() # sys.stdout.buffer.write(buf) # else: # print('Status: 404 Not Found') # print() # # try: os.remove(tmp_fb2_path.encode('utf-8')) # except: pass # try: os.remove(tmp_epub_path.encode('utf-8')) # except: pass ###################################################### # Выдача Обложки На лету # Loading