К книге
Приложение к «Python в библиотеке»Arch. 16 Obedinenie. join_fb2m2.py
82%
Arch. 16 Obedinenie. join_fb2m2.py
28

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import sys, os

# 18.01.22

#--------------------------------------------------

def SaveList():

, ,f = open('lib.fb2', 'w', encoding="utf-8")

, ,for i in Books:

, , , ,f.write(i)# 'cp1251' '\n'

, ,f.close()

Books = []

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!')

Предыдущая главаГлава 28 из 34Следующая глава