当前位置: 首页>>代码示例>>Python>>正文


Python COLLAPSE_RE.sub方法代码示例

本文整理汇总了Python中calibre.ebooks.oeb.base.COLLAPSE_RE.sub方法的典型用法代码示例。如果您正苦于以下问题:Python COLLAPSE_RE.sub方法的具体用法?Python COLLAPSE_RE.sub怎么用?Python COLLAPSE_RE.sub使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在calibre.ebooks.oeb.base.COLLAPSE_RE的用法示例。


在下文中一共展示了COLLAPSE_RE.sub方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: _toc_from_spine

# 需要导入模块: from calibre.ebooks.oeb.base import COLLAPSE_RE [as 别名]
# 或者: from calibre.ebooks.oeb.base.COLLAPSE_RE import sub [as 别名]
 def _toc_from_spine(self, opf):
     self.log.warn('Generating default TOC from spine...')
     toc = self.oeb.toc
     titles = []
     headers = []
     for item in self.oeb.spine:
         if not item.linear:
             continue
         html = item.data
         title = ''.join(xpath(html, '/h:html/h:head/h:title/text()'))
         title = COLLAPSE_RE.sub(' ', title.strip())
         if title:
             titles.append(title)
         headers.append('(unlabled)')
         for tag in ('h1', 'h2', 'h3', 'h4', 'h5', 'strong'):
             expr = '/h:html/h:body//h:%s[position()=1]/text()'
             header = ''.join(xpath(html, expr % tag))
             header = COLLAPSE_RE.sub(' ', header.strip())
             if header:
                 headers[-1] = header
                 break
     use = titles
     if len(titles) > len(set(titles)):
         use = headers
     for title, item in izip(use, self.oeb.spine):
         if not item.linear:
             continue
         toc.add(title, item.href)
     return True
开发者ID:mihailim,项目名称:calibre,代码行数:31,代码来源:reader.py

示例2: _toc_from_html

# 需要导入模块: from calibre.ebooks.oeb.base import COLLAPSE_RE [as 别名]
# 或者: from calibre.ebooks.oeb.base.COLLAPSE_RE import sub [as 别名]
 def _toc_from_html(self, opf):
     if 'toc' not in self.oeb.guide:
         return False
     self.log.debug('Reading TOC from HTML...')
     itempath, frag = urldefrag(self.oeb.guide['toc'].href)
     item = self.oeb.manifest.hrefs[itempath]
     html = item.data
     if frag:
         elems = xpath(html, './/*[@id="%s"]' % frag)
         if not elems:
             elems = xpath(html, './/*[@name="%s"]' % frag)
         elem = elems[0] if elems else html
         while elem != html and not xpath(elem, './/h:a[@href]'):
             elem = elem.getparent()
         html = elem
     titles = defaultdict(list)
     order = []
     for anchor in xpath(html, './/h:a[@href]'):
         href = anchor.attrib['href']
         href = item.abshref(urlnormalize(href))
         path, frag = urldefrag(href)
         if path not in self.oeb.manifest.hrefs:
             continue
         title = xml2text(anchor)
         title = COLLAPSE_RE.sub(' ', title.strip())
         if href not in titles:
             order.append(href)
         titles[href].append(title)
     toc = self.oeb.toc
     for href in order:
         toc.add(' '.join(titles[href]), href)
     return True
开发者ID:mihailim,项目名称:calibre,代码行数:34,代码来源:reader.py

示例3: _toc_from_navpoint

# 需要导入模块: from calibre.ebooks.oeb.base import COLLAPSE_RE [as 别名]
# 或者: from calibre.ebooks.oeb.base.COLLAPSE_RE import sub [as 别名]
    def _toc_from_navpoint(self, item, toc, navpoint):
        children = xpath(navpoint, 'ncx:navPoint')
        for child in children:
            title = ''.join(xpath(child, 'ncx:navLabel/ncx:text/text()'))
            title = COLLAPSE_RE.sub(' ', title.strip())
            href = xpath(child, 'ncx:content/@src')
            if not title:
                self._toc_from_navpoint(item, toc, child)
                continue
            if not href:
                gc = xpath(child, 'ncx:navPoint')
                if not gc:
                    # This node is useless
                    continue
                href = 'missing.html'

            href = item.abshref(urlnormalize(href[0]))
            path, _ = urldefrag(href)
            if path not in self.oeb.manifest.hrefs:
                self.logger.warn('TOC reference %r not found' % href)
                gc = xpath(child, 'ncx:navPoint')
                if not gc:
                    # This node is useless
                    continue
            id = child.get('id')
            klass = child.get('class', 'chapter')

            try:
                po = int(child.get('playOrder', self.oeb.toc.next_play_order()))
            except:
                po = self.oeb.toc.next_play_order()

            authorElement = xpath(child,
                    'descendant::calibre:meta[@name = "author"]')
            if authorElement :
                author = authorElement[0].text
            else :
                author = None

            descriptionElement = xpath(child,
                    'descendant::calibre:meta[@name = "description"]')
            if descriptionElement:
                description = etree.tostring(descriptionElement[0],
                method='text', encoding=unicode).strip()
                if not description:
                    description = None
            else :
                description = None

            index_image = xpath(child,
                    'descendant::calibre:meta[@name = "toc_thumbnail"]')
            toc_thumbnail = (index_image[0].text if index_image else None)
            if not toc_thumbnail or not toc_thumbnail.strip():
                toc_thumbnail = None

            node = toc.add(title, href, id=id, klass=klass,
                    play_order=po, description=description, author=author,
                           toc_thumbnail=toc_thumbnail)

            self._toc_from_navpoint(item, node, child)
开发者ID:Eksmo,项目名称:calibre,代码行数:62,代码来源:reader.py

示例4: _toc_from_ncx

# 需要导入模块: from calibre.ebooks.oeb.base import COLLAPSE_RE [as 别名]
# 或者: from calibre.ebooks.oeb.base.COLLAPSE_RE import sub [as 别名]
 def _toc_from_ncx(self, item):
     if (item is None) or (item.data is None):
         return False
     self.log.debug('Reading TOC from NCX...')
     ncx = item.data
     title = ''.join(xpath(ncx, 'ncx:docTitle/ncx:text/text()'))
     title = COLLAPSE_RE.sub(' ', title.strip())
     title = title or unicode(self.oeb.metadata.title[0])
     toc = self.oeb.toc
     toc.title = title
     navmaps = xpath(ncx, 'ncx:navMap')
     for navmap in navmaps:
         self._toc_from_navpoint(item, toc, navmap)
     return True
开发者ID:mihailim,项目名称:calibre,代码行数:16,代码来源:reader.py

示例5: _pages_from_page_map

# 需要导入模块: from calibre.ebooks.oeb.base import COLLAPSE_RE [as 别名]
# 或者: from calibre.ebooks.oeb.base.COLLAPSE_RE import sub [as 别名]
 def _pages_from_page_map(self, opf):
     item = self._find_page_map(opf)
     if item is None:
         return False
     pmap = item.data
     pages = self.oeb.pages
     for page in xpath(pmap, 'o2:page'):
         name = page.get('name', '')
         href = page.get('href')
         if not href:
             continue
         name = COLLAPSE_RE.sub(' ', name.strip())
         href = item.abshref(urlnormalize(href))
         type = 'normal'
         if not name:
             type = 'special'
         elif name.lower().strip('ivxlcdm') == '':
             type = 'front'
         pages.add(name, href, type=type)
     return True
开发者ID:mihailim,项目名称:calibre,代码行数:22,代码来源:reader.py

示例6: _pages_from_ncx

# 需要导入模块: from calibre.ebooks.oeb.base import COLLAPSE_RE [as 别名]
# 或者: from calibre.ebooks.oeb.base.COLLAPSE_RE import sub [as 别名]
 def _pages_from_ncx(self, opf, item):
     if item is None:
         return False
     ncx = item.data
     if ncx is None:
         return False
     ptargets = xpath(ncx, 'ncx:pageList/ncx:pageTarget')
     if not ptargets:
         return False
     pages = self.oeb.pages
     for ptarget in ptargets:
         name = ''.join(xpath(ptarget, 'ncx:navLabel/ncx:text/text()'))
         name = COLLAPSE_RE.sub(' ', name.strip())
         href = xpath(ptarget, 'ncx:content/@src')
         if not href:
             continue
         href = item.abshref(urlnormalize(href[0]))
         id = ptarget.get('id')
         type = ptarget.get('type', 'normal')
         klass = ptarget.get('class')
         pages.add(name, href, type=type, id=id, klass=klass)
     return True
开发者ID:mihailim,项目名称:calibre,代码行数:24,代码来源:reader.py


注:本文中的calibre.ebooks.oeb.base.COLLAPSE_RE.sub方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。