conutBooks = 0
LAllNotes = []
'''
def AddNotes(LNotes):
, ,if len(LNotes) > 0:
, , , ,f = open('Notes'+str(conutBooks)+'.txt', 'w', encoding="utf-8")
, , , ,for i in LNotes:
, , , , , ,i = i.replace('id="n','id="'+ str(conutBooks)+ '_n')
, , , , , ,f.write(i)
, , , ,f.close()
'''
def AddNotes(LNotes):
, ,if len(LNotes) > 0:
, , , ,for i in LNotes:
, , , , , ,i = i.replace('id="n','id="'+ str(conutBooks)+ '_n')
, , , , , ,LAllNotes.append(i)
def addFb2(fn, first):
, ,global Books
, ,global conutBooks
, ,LList = []
, ,sBook_title = ''
, ,bBook_title = False
, ,bWait_notes = False
, ,bNotes = False
, ,LNotes = []
, ,conutBooks += 1
, ,if os.path.isfile(nfile):
, , , ,with open(fn, encoding="utf8") as f:
, , , , , ,LList = f.readlines()
, , , ,for i in LList:
, , , , , ,if bNotes:
, , , , , , , ,if i.find('</body')> -1:
, , , , , , , , , ,AddNotes(LNotes)
, , , , , , , , , ,break
, , , , , , , ,else:
, , , , , , , , , ,LNotes.append(i)
, , , , , , , ,continue
, , , , , ,if bWait_notes:
, , , , , , , ,if i.find('<section')> -1:
, , , , , , , , , ,bNotes = True
, , , , , , , , , ,LNotes.append(i)
, , , , , , , ,if i.find('<binary')> -1:
, , , , , , , , , ,break
, , , , , , , ,continue
, , , , , ,if not first: #
, , , , , , , ,if bBook_title:
, , , , , , , , , ,n = i.find('</book-title')
, , , , , , , , , ,if ( n == -1):
, , , , , , , , , , , ,sBook_title = sBook_title + ' ' + i.strip()
, , , , , , , , , , , ,continue
, , , , , , , , , ,else:
, , , , , , , , , , , ,sBook_title = sBook_title + ' ' + i[:n]
, , , , , , , , , , , ,bBook_title = False
, , , , , , , , , , , ,
, , , , , , , ,n = i.find('<book-title')
, , , , , , , ,if n > -1:
, , , , , , , , , ,sBook_title = i[n+12:]
, , , , , , , , , ,n = sBook_title.find('</book-title')
, , , , , , , , , ,if n > -1:
, , , , , , , , , , , ,sBook_title = sBook_title[:n]
, , , , , , , , , , , ,bBook_title = False
, , , , , , , , , ,else:
, , , , , , , , , , , ,sBook_title = sBook_title + ' ' + i.strip()
, , , , , , , , , , , ,bBook_title = True
, , , , , , , , , , , ,continue
, , , , , , , ,n = i.find('<body')
, , , , , , , ,if n > -1:
, , , , , , , , , ,i = i[n:]
, , , , , , , , , ,n = i.find('>')
, , , , , , , , , ,i = i[n+1:]
, , , , , , , , , ,
, , , , , , , , , ,Books.append('\n*%%%%%%%* '+str(conutBooks)+'\n')
, , , , , , , , , ,#print('%%%%%%%')
, , , , , , , , , ,bb = sBook_title.strip()
, , , , , , , , , ,#print(bb)
, , , , , , , , , ,Books.append('<p>'+bb+'\n</p>')
, , , , , , , , , ,Books.append(i)
, , , , , , , , , ,first = True
, , , , , ,else:
, , , , , , , ,n = i.find('</body')
, , , , , , , ,if n > -1:
, , , , , , , , , ,i = i[:n]
, , , , , , , , , ,Books.append(i)
, , , , , , , , , ,#break
, , , , , , , , , ,bWait_notes = True
, , , , , , , ,else:
, , , , , , , , , ,if i.find('<a ')>-1:
, , , , , , , , , , , ,i = i.replace('href="#','href="#'+ str(conutBooks)+ '_')
, , , , , , , , , ,Books.append(i)
#--------------------------------------------------
nfile = "list.txt"
first = True
if os.path.isfile(nfile): # encoding='cp1251'
with open(nfile, encoding="utf8") as f:
, , Li = f.readlines()
for i in Li:
, , addFb2(i.strip(), first)
, , first = False
, ,
Books.append('</body>\n')
if len(LAllNotes) > 0:
, ,Books.append('<body name="notes">\n')
, ,Books.append('<title><p>Примечания</p></title>\n')
, ,for i in LAllNotes:
, , , ,Books.append(i)
, ,Books.append('</body>\n')
, ,
Books.append('</FictionBook>\n')#
SaveList()
print( 'Done!')
Other
count_fb_z.py
#!/usr/bin/env python
# -*- codning: utf-8 -*-
import sys, os
import zipfile
import xml.dom.minidom
# Подсчет числа секций и числа символов в fb2
#----------------------------------------------
path = os.getcwd()
count_s = 0
count_t = 0
count_b = 0
#-------------------------------------
def sect(el):
, ,global count_s
, ,global count_t
, ,childList=el.childNodes
, ,for child in childList:
, , , ,if child.nodeName == 'p':
, , , , , ,text = child.childNodes[0].nodeValue
, , , , , ,if text != None:
, , , , , , , ,count_t += len(text)
, , , ,if child.nodeName == 'section':
, , , , , ,count_s += 1
, , , , , ,sect(child)
#---------------------------------------
def parse_fb2(fn):
, ,global count_b , ,
, ,dom = xml.dom.minidom.parse(fn);
, ,dom.normalize()
, ,n_body=dom.getElementsByTagName("body")[0]
, ,sect(n_body)
, ,fb=dom.getElementsByTagName("FictionBook")[0]
, ,childList=fb.childNodes
, ,for child in childList:
# , , print(child.nodeName)
, , , , if child.nodeName == 'binary':
, , , , , ,text = child.childNodes[0].nodeValue
, , , , , ,if text != None:
, , , , , , , ,count_b += len(text)
def MyPrint(adr):
, ,print(adr)
, ,print('section '+str(count_s))
, ,print('text '+str(count_t))
, ,print('pic '+str(count_b))
, ,print('size file '+ str(os.path.getsize(adr)))
def parse_zip(adr):
, ,z = zipfile.ZipFile(adr, 'r')
, ,filelist = z.namelist()
, ,filelist.sort()
, ,for n in filelist:
, , , ,if n[-4:] == ".fb2":
, , , , , ,parse_fb2(z.open(n))
def parse_file(adr):
, ,if not os.path.isfile(adr):
, , , ,print('File not exists')
, , , ,return
, ,m = adr.split(".")
, ,if (m[-1] == "zip") and (m[-2] == "fb2"):
, , , , parse_zip(adr)
, ,elif (m[-1] == "fb2"):
, , , , parse_fb2(adr)
, ,
while True:
, ,qu = input('Введите ')
# , ,qu = '6.fb2.zip'
, ,a = os.path.join(path, qu)
, ,parse_file(a)
, ,MyPrint(a) , , , , , ,
, ,print('OK!!!')
delbylist.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys, os
# 2 авг
#
#--------------------------------------------------
L = []
co = 0
#--------------------------------------- , ,
def LoadFile(fn, Li): # Загрузка из файла в список
, ,if os.path.isfile(fn):
, , , ,f = open(fn,'r')
, , , ,for i in f:
, , , , , ,Li.append(i)
, , , ,f.close()
, ,else:
, , , ,print('I need '+ fn)