コード例 #1
0
 def handle(self, *args, **options):
     f = open('./bibleBooks_de.txt', 'r')
     bookNr = 0
     for line in f:
         bookNr += 1
         ele = line.split(',')
         if len(ele) >= 2:
             ele = [x.strip() for x in ele]
             bookNames = BibleBook.objects.filter(nr=bookNr, language='de')
             if bookNames.count() > 0:
                 bookNames = bookNames[0]
             else:
                 bookNames = BibleBook()
             bookNames.nr = bookNr
             bookNames.language = 'de'
             bookNames.name = ele[0]
             if len(ele) > 1:
                 bookNames.short_name = ele[1]
             if len(ele) > 2:
                 bookNames.alternativeNames = ',' + string.join(
                     ele[2:], ',') + ','
             bookNames.save()
         print_progress(bookNr, 66)
コード例 #2
0
ファイル: add_bible.py プロジェクト: strongs-de/strongs
    def insert_osis_bible(self, xmltree, title, identifier=None, lang='GER'):
        def __insert(translation, book, chapter, vers, text):
            '''
                Insert the bible text into the database. Create the BibleVers
                and the BibleText if it does not exist.
                    @translation is a BibleTranslation instance
                    @book is a BibleBook instance
                    @chapter and @vers are integers
                    @text is a string
            '''

            # vnumber can contain multiple verses. In NGUE it is seperated by a 8209 (e.g. 16-17 is defined
            # as 16820917. So we have to check if this is the case, then separate the verse numbers, insert the
            # first one and every following as an empty verse.
            numverses = 1
            if str(vers).__contains__('8209'):
                vers, lastvers = int(str(vers).split('8209')[0]), int(
                    str(vers).split('8209')[1])
                numverses = lastvers - vers + 1

            # Does this vers already exist?
            v = BibleVers.objects.filter(bookNr=book,
                                         chapterNr=chapter,
                                         versNr=vers)
            if v.count() <= 0:
                v = BibleVers(bookNr=book, chapterNr=chapter, versNr=vers)
                v.save()
            else:
                v = v[0]

            # Insert text if it does not already exist
            t = BibleText.objects.filter(vers=v,
                                         translationIdentifier=translation)
            if t.count() <= 0:
                t = BibleText(vers=v,
                              translationIdentifier=translation,
                              versText=text)
                t.save()

                if numverses > 1:
                    for i in range(1, numverses):
                        __insert(translation, book, chapter, vers + i, '')

        BOOKS = [
            'Gen', 'Exod', 'Lev', 'Num', 'Deut', 'Josh', 'Judg', 'Ruth',
            '1Sam', '2Sam', '1Kgs', '2Kgs', '1Chr', '2Chr', 'Ezra', 'Neh',
            'Esth', 'Job', 'Ps', 'Prov', 'Eccl', 'Song', 'Isa', 'Jer', 'Lam',
            'Ezek', 'Dan', 'Hos', 'Joel', 'Amos', 'Obad', 'Jonah', 'Mic',
            'Nah', 'Hab', 'Zeph', 'Hag', 'Zech', 'Mal', 'Matt', 'Mark', 'Luke',
            'John', 'Acts', 'Rom', '1Cor', '2Cor', 'Gal', 'Eph', 'Phil', 'Col',
            '1Thess', '2Thess', '1Tim', '2Tim', 'Titus', 'Phlm', 'Heb', 'Jas',
            '1Pet', '2Pet', '1John', '2John', '3John', 'Jude', 'Rev'
        ]
        identifier = identifier if identifier is not None else title.replace(
            ' ', '')
        root = xmltree.getroot()
        if title is not None and identifier is not None and lang is not None:
            # Ask if this translation does already exist
            tr = BibleTranslation.objects.filter(identifier=identifier)
            if tr.count() <= 0:
                tr = BibleTranslation(identifier=identifier,
                                      name=title,
                                      language=lang)
                tr.save()
                self.stdout.write(' -> created new translation ' + identifier +
                                  '.')
            else:
                tr = tr[0]

            # iterate over all verses
            chapters = root.findall(
                './/{http://www.bibletechnologies.net/2003/OSIS/namespace}chapter'
            )
            actbook = ''
            actchapter = 0
            overallchaptercount = 0
            # booknr = 0
            # chapterlist = []
            tb = None
            for chapter in chapters:
                versesinchapter = chapter.findall(
                    './/{http://www.bibletechnologies.net/2003/OSIS/namespace}verse'
                )
                for vers in versesinchapter:
                    parts = vers.attrib.get('osisID').split('.')
                    bookname = parts[0]
                    cnumber = int(parts[1])
                    vnumber = int(parts[2])
                    text = self.element_to_string(vers)

                    if bookname != actbook:
                        # Does this book already exist?
                        bindex = BOOKS.index(bookname)
                        tb = BibleBook.objects.filter(nr=bindex + 1)
                        if tb.count() <= 0:
                            tb = BibleBook(nr=bindex + 1,
                                           name='',
                                           alternativeNames='')
                            tb.save()
                        else:
                            tb = tb[0]
                        actbook = bookname
                        # booknr += 1

                    # check for existance of the first vers in this chapter,
                    # cause in Schlachter 2000 the first vers isn't encapsulated
                    # in a verse-tag!
                    if cnumber != actchapter:
                        if vnumber > 1:
                            # The first verse can be found in the parent chapter tag-text
                            __insert(
                                tr, tb, cnumber, 1,
                                self.element_to_string(chapter, [
                                    '{http://www.bibletechnologies.net/2003/OSIS/namespace}div',
                                    '{http://www.bibletechnologies.net/2003/OSIS/namespace}verse'
                                ]))
                        actchapter = cnumber
                        # dictindex = '%s_%s' % (booknr, cnumber)
                        # if dictindex not in chapterlist:
                        #     chapterlist.append(dictindex)

                    __insert(tr, tb, cnumber, vnumber, text)

                overallchaptercount += 1
                sys.stdout.write('Insert book %s ...' % actbook)
                print_progress(overallchaptercount, len(chapters))
コード例 #3
0
ファイル: add_bible.py プロジェクト: strongs-de/strongs
    def insert_zefania_xml(self, xmltree):
        def insert_in_db(tb, chapter, tr):
            versCount = 0
            for vers in chapter.findall("VERS"):
                versCount += 1

                # Does this vers and chapter already exist?
                v = BibleVers.objects.filter(bookNr=tb,
                                             chapterNr=chapter.get('cnumber'),
                                             versNr=vers.get('vnumber'))
                if v.count() <= 0:
                    v = BibleVers(bookNr=tb,
                                  chapterNr=chapter.get('cnumber'),
                                  versNr=vers.get('vnumber'))
                    v.save()
                else:
                    v = v[0]

                # Insert text if it does not already exist
                dbVers = BibleText.objects.filter(translationIdentifier=tr,
                                                  vers=v)
                if dbVers.count() <= 0:
                    dbVers = BibleText(translationIdentifier=tr,
                                       vers=v,
                                       versText=self.element_to_string(vers))
                    dbVers.save()

            return versCount

        ####################################################
        # Insert bibles from zefanja xml
        root = xmltree.getroot()
        identifier = root.findtext('INFORMATION/identifier')
        language = root.findtext('INFORMATION/language')
        title = root.findtext('INFORMATION/title')

        # Ask if this translation does already exist
        tr = BibleTranslation.objects.filter(identifier=identifier)
        if tr.count() <= 0:
            tr = BibleTranslation(identifier=identifier,
                                  name=title,
                                  language=language)
            tr.save()
            self.stdout.write(' -> created new translation ' + identifier +
                              '.')
        else:
            tr = tr[0]

        # Insert verses
        books = root.findall('BIBLEBOOK')
        bookcount = 0
        for book in books:
            chapterCount = 0

            # Does this book already exist
            tb = BibleBook.objects.filter(nr=book.get('bnumber'))
            if tb.count() <= 0:
                tb = BibleBook(nr=int(book.get('bnumber')),
                               name='',
                               alternativeNames='')
                tb.save()
            else:
                tb = tb[0]

            versCount = 0
            chapters = book.findall('CHAPTER')
            for chapter in chapters:
                chapterCount += 1
                versCount += insert_in_db(tb, chapter, tr)
                chapterproc = 1.0 / len(chapters) * chapterCount
                print_progress(bookcount + chapterproc, len(books))
            bookcount += 1