From b7f224e28056893252916c02d237611433f598e1 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Thu, 24 Dec 2009 00:31:14 +0200 Subject: [PATCH] 99% of OSIS import now working. --- openlp/plugins/bibles/lib/bibleOSISimpl.py | 129 ++++++++------------- 1 file changed, 50 insertions(+), 79 deletions(-) diff --git a/openlp/plugins/bibles/lib/bibleOSISimpl.py b/openlp/plugins/bibles/lib/bibleOSISimpl.py index 9b7063ef0..1dc2423f4 100644 --- a/openlp/plugins/bibles/lib/bibleOSISimpl.py +++ b/openlp/plugins/bibles/lib/bibleOSISimpl.py @@ -55,10 +55,18 @@ class BibleOSISImpl(): """ log.info(u'BibleOSISImpl Initialising') self.verse_regex = re.compile(r'(.*?)') - self.note_regex = re.compile(r'(.*?)') + self.note_regex = re.compile(r'(.*?)') + self.title_regex = re.compile(r'(.*?)') + self.milestone_regex = re.compile(r'') + self.lb_regex = re.compile(r'') + self.l_regex = re.compile(r'') + self.w_regex = re.compile(r'') + self.q_regex = re.compile(r'') + self.spaces_regex = re.compile(r'([ ]{2,})') self.bibledb = bibledb # books of the bible linked to bibleid {osis , name} self.booksOfBible = {} + self.books = {} # books of the bible linked to bibleid {osis ,Abbrev } self.abbrevOfBible = {} filepath = os.path.split(os.path.abspath(__file__))[0] @@ -70,8 +78,9 @@ class BibleOSISImpl(): fbibles = open(filepath, u'r') for line in fbibles: p = line.split(u',') - self.booksOfBible[p[0]] = p[1].replace(u'\n', u'') - self.abbrevOfBible[p[0]] = p[2].replace(u'\n', u'') + #self.booksOfBible[p[0]] = p[1].replace(u'\n', u'') + self.books[p[0]] = (p[1].lstrip().rstrip(), p[2].lstrip().rstrip()) + #self.abbrevOfBible[p[0]] = p[2].replace(u'\n', u'') except: log.exception(u'OSIS bible import failed') finally: @@ -111,53 +120,46 @@ class BibleOSISImpl(): osis = None try: osis = codecs.open(osisfile_record, u'r', details['encoding']) - last_chapter = u'0' + last_chapter = 0 + testament = 1 for file_record in osis: match = self.verse_regex.search(file_record) if match: - print 'Found:', match.group(4) - #if last_chapter != match.group(2): - print match.group(2) - # dialogobject.incrementProgressBar( - # u'Importing %s %s...' % \ - # (self.books[match.group(1)], match.group(2))) - # last_chapter = match.group(2) + book = match.group(1) + chapter = int(match.group(2)) + verse = int(match.group(3)) verse_text = match.group(4) - #verse_text = self.remove_block( - #verse_text = self.note_regex.sub(lambda match: u'', verse_text) - print verse_text - else: - print 'Not found...', file_record[:10] -# (self.booksOfBible[p[0]], p[1])) -# book_ptr = None -# count = 0 -# verseText = u'', pos) -# # Book Reference -# ref = file_record[pos+15:epos-1] -# #lets find the bible text only -# # find start of text -# pos = epos + 1 -# # end of text -# epos = file_record.find(u'', pos) -# text = file_record[pos : epos] -# #remove tags of extra information -# text = self.remove_block(u'', text) -# text = self.remove_block(u'', text) -# text = self.remove_block( -# u'', text) -# text = self.remove_tag(u'', u'')\ + .replace(u'', u'').replace(u'', u'')\ + .replace(u'', u'').replace(u'', u'')\ + .replace(u'', u'') + verse_text = self.spaces_regex.sub(u' ', verse_text) + self.bibledb.add_verse(db_book.id, chapter, verse, verse_text) # # Strange tags where the end is not the same as the start # # The must be in this order as at least one bible has them # # crossing and the removal does not work. @@ -174,39 +176,8 @@ class BibleOSISImpl(): # epos = text.find(u'', pos) # text = text[:pos] + text[epos + 4: ] # pos = text.find(u'') -# print ref -# continue -# # split up the reference -# p = ref.split(u'.', 3) -# if book_ptr != p[0]: -# # first time through -# if book_ptr is None: -# # set the max book size depending -# # on the first book read -# if p[0] == u'Gen': -# dialogobject.ImportProgressBar.setMaximum(1188) -# else: -# dialogobject.ImportProgressBar.setMaximum(260) -# # First book of NT -# if p[0] == u'Matt': -# testament += 1 -# dialogobject.incrementProgressBar(u'Importing %s %s...' % \ -# (self.booksOfBible[p[0]], p[1])) -# Receiver.send_message(u'process_events') -# self.bibledb.save_verses() -# book_ptr = p[0] -# book = self.bibledb.create_book( -# unicode(self.booksOfBible[p[0]]), -# unicode(self.abbrevOfBible[p[0]]), -# testament) -# count = 0 -# self.bibledb.add_verse(book.id, p[1], p[2], text) -# #count += 1 -# #Every 3 verses repaint the screen -# #if count % 3 == 0: -# # Receiver.send_message(u'process_events') -# # count = 0 -# #self.bibledb.save_verses() + self.bibledb.save_verses() + dialogobject.incrementProgressBar(u'Finishing import...') except: log.exception(u'Loading bible from OSIS file failed') finally: