Exemplo n.º 1
0
class Wiki(object):
    def __init__(self, zipfile):
        """
        @type zipfile: basestring or ZipFile
        """
        
        if isinstance(zipfile, ZipFile):
            self.zf = zipfile
        else:
            self.zf = ZipFile(zipfile)
        self.metabook = MetaBook()
        self.metabook.loadJson(self.zf.read("metabook.json"))
        content = simplejson.loads(self.zf.read('content.json'))
        self.articles = content['articles']
        self.templates = content['templates']
    
    def _getArticle(self, title, revision=None):
        try:
            article = self.articles[title]
            if revision is None or article['revision'] == revision:
                return article
        except KeyError:
            pass
        return None
    
    def getRawArticle(self, title, revision=None):
        article = self._getArticle(title, revision=revision)
        if article:
            return article['content']
        return None
    
    def getParsedArticle(self, title, revision=None):
        raw = self.getRawArticle(title, revision=revision)
        if raw is None:
            return None
        a = uparser.parseString(title=title, raw=raw, wikidb=self)
        return a
    
    def getURL(self, title, revision=None):
        article = self._getArticle(title, revision=revision)
        if article:
            return article['url']
        return None
    
    def getAuthors(self, title, revision=None):
        article = self._getArticle(title, revision=revision)
        if article:
            return article.get('authors', [])
        return None
    
    def getTemplate(self, name, followRedirects=True):
        try:
            return self.templates[name]['content']
        except KeyError:
            pass
        return None
Exemplo n.º 2
0
 def __init__(self, zipfile):
     """
     @type zipfile: basestring or ZipFile
     """
     
     if isinstance(zipfile, ZipFile):
         self.zf = zipfile
     else:
         self.zf = ZipFile(zipfile)
     self.metabook = MetaBook()
     self.metabook.loadJson(self.zf.read("metabook.json"))
     content = simplejson.loads(self.zf.read('content.json'))
     self.articles = content['articles']
     self.templates = content['templates']