'Add Descriptions to the basic NCX file.
Generate the Descriptions NCX content, add to self.ncx_soup.
Inputs:
books_by_author (list)
Updated:
play_order (int)
Outputs:
ncx_soup (file): updated'

def generate_ncx_descriptions(self, tocTitle):

    self.update_progress_full_step(_('NCX    for    Descriptions'))
    ncx_soup = self.ncx_soup
    if self.generate_for_kindle_mobi:
        body = ncx_soup.find('navPoint')
    else:
        body = ncx_soup.find('navMap')
    btc = len(body.contents)
    navPointTag = Tag(ncx_soup, 'navPoint')
    if self.generate_for_kindle_mobi:
        navPointTag['class'] = 'section'
    navPointTag['id'] = 'bydescription-ID'
    navPointTag['playOrder'] = self.play_order
    self.play_order += 1
    navLabelTag = Tag(ncx_soup, 'navLabel')
    textTag = Tag(ncx_soup, 'text')
    section_header = ('%s    [%d]' % (tocTitle, len(self.books_by_description)))
    if self.generate_for_kindle_mobi:
        section_header = tocTitle
    textTag.insert(0, NavigableString(section_header))
    navLabelTag.insert(0, textTag)
    nptc = 0
    navPointTag.insert(nptc, navLabelTag)
    nptc += 1
    contentTag = Tag(ncx_soup, 'content')
    contentTag['src'] = ('content/book_%d.html' % int(self.books_by_description[0]['id']))
    navPointTag.insert(nptc, contentTag)
    nptc += 1
    for book in self.books_by_description:
        navPointVolumeTag = Tag(ncx_soup, 'navPoint')
        if self.generate_for_kindle_mobi:
            navPointVolumeTag['class'] = 'article'
        navPointVolumeTag['id'] = ('book%dID' % int(book['id']))
        navPointVolumeTag['playOrder'] = self.play_order
        self.play_order += 1
        navLabelTag = Tag(ncx_soup, 'navLabel')
        textTag = Tag(ncx_soup, 'text')
        if book['series']:
            series_index = str(book['series_index'])
            if series_index.endswith('.0'):
                series_index = series_index[:(-2)]
            if self.generate_for_kindle_mobi:
                textTag.insert(0, NavigableString(self.format_ncx_text(('%s    (%s    [%s])' % (book['title'], book['series'], series_index)), dest='title')))
            else:
                textTag.insert(0, NavigableString(self.format_ncx_text(('%s    (%s    [%s])    &middot;    %s    ' % (book['title'], book['series'], series_index, book['author'])), dest='title')))
        elif self.generate_for_kindle_mobi:
            title_str = self.format_ncx_text(('%s' % book['title']), dest='title')
            if (self.opts.connected_kindle and (book['id'] in self.bookmarked_books)):
                "\n                                                                                                dots    =    int((book['percent_read']    +    5)/10)\n                                                                                                dot_string    =    '+'    *    dots\n                                                                                                empty_dots    =    '-'    *    (10    -    dots)\n                                                                                                title_str    +=    '    %s%s'    %    (dot_string,empty_dots)\n                                                                                                "
                title_str += '*'
            textTag.insert(0, NavigableString(title_str))
        else:
            textTag.insert(0, NavigableString(self.format_ncx_text(('%s    &middot;    %s' % (book['title'], book['author'])), dest='title')))
        navLabelTag.insert(0, textTag)
        navPointVolumeTag.insert(0, navLabelTag)
        contentTag = Tag(ncx_soup, 'content')
        contentTag['src'] = ('content/book_%d.html#book%d' % (int(book['id']), int(book['id'])))
        navPointVolumeTag.insert(1, contentTag)
        if self.generate_for_kindle_mobi:
            cmTag = Tag(ncx_soup, ('%s' % 'calibre:meta'))
            cmTag['name'] = 'author'
            if book['date']:
                navStr = ('%s    |    %s' % (self.format_ncx_text(book['author'], dest='author'), book['date'].split()[1]))
            else:
                navStr = ('%s' % self.format_ncx_text(book['author'], dest='author'))
            if (('tags' in book) and len(book['tags'])):
                navStr = self.format_ncx_text(((navStr + '    |    ') + '    &middot;    '.join(sorted(book['tags']))), dest='author')
            cmTag.insert(0, NavigableString(navStr))
            navPointVolumeTag.insert(2, cmTag)
            if book['short_description']:
                cmTag = Tag(ncx_soup, ('%s' % 'calibre:meta'))
                cmTag['name'] = 'description'
                cmTag.insert(0, NavigableString(self.format_ncx_text(book['short_description'], dest='description')))
                navPointVolumeTag.insert(3, cmTag)
        navPointTag.insert(nptc, navPointVolumeTag)
        nptc += 1
    body.insert(btc, navPointTag)
    btc += 1
    self.ncx_soup = ncx_soup
