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
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']