【问题标题】:Is there a way to convert Trac Wiki pages to HTML?有没有办法将 Trac Wiki 页面转换为 HTML?
【发布时间】:2010-12-05 02:39:07
【问题描述】:

我看到了使用 Mylyn WikiText 将 wiki 页面转换为 html from this question 的建议,但我不确定它是否是我单独阅读网站首页所要寻找的。我会进一步调查。虽然我更喜欢它是一个 Trac 插件,所以我可以从 wiki 选项中启动转换,但 Trac-Hacks 的所有插件只导出单个页面,而我想一次性转储所有格式化页面。

那么,是否有现有的 Trac 插件或独立应用程序可以满足我的要求?如果不是,您会指出我从哪里开始考虑自己实现该功能?

【问题讨论】:

    标签: html wiki trac


    【解决方案1】:

    您可以在trac-hacks 上的this ticket 的cmets 中找到一些有用的信息。一位用户报告使用wget 实用程序创建wiki 的镜像副本,就好像它是一个普通网站一样。另一个用户报告使用XmlRpc plugin 来提取任何给定wiki 页面的HTML 版本,但这种方法可能需要您创建一个脚本来与插件交互。遗憾的是,海报没有提供任何示例代码,但 XmlRpc 插件页面包含大量文档和示例,可帮助您入门。

    如果您可以访问托管 Trac 的服务器上的命令行,则可以使用 trac-admin 命令,例如:

    trac-admin /path/to/trac wiki export <wiki page name>
    

    检索指定 wiki 页面的纯文本版本。然后,您必须将 wiki 语法解析为 HTML,但有一些工具可以做到这一点。

    【讨论】:

    • +1 for wget,这足以满足我目前的需求。如果我需要更复杂的想法,我会回到这个答案并尝试其他建议。谢谢。
    【解决方案2】:

    出于我们的目的,我们希望单独导出每个 wiki 页面,而不需要页眉/页脚和其他特定于实例的内容。为此,XML-RPC 接口非常适合。这是我为将整个 wiki 导出到当前目录中的 HTML 文件而创建的 Python 3.6+ 脚本。请注意,此技术不会重写任何超链接,因此它们将绝对解析到该站点。

    import os
    import xmlrpc.client
    import getpass
    import urllib.parse
    
    
    def add_auth(url):
        host = urllib.parse.urlparse(url).netloc
        realm = os.environ.get('TRAC_REALM', host)
        username = getpass.getuser()
        try:
            import keyring
            password = keyring.get_password(realm, username)
        except Exception:
            password = getpass.getpass(f"password for {username}@{realm}: ")
    
        if password:
            url = url.replace('://', f'://{username}:{password}@')
    
        return url
    
    
    def main():
        trac_url = add_auth(os.environ['TRAC_URL'])
        rpc_url = urllib.parse.urljoin(trac_url, 'login/xmlrpc')
        trac = xmlrpc.client.ServerProxy(rpc_url)
    
        for page in trac.wiki.getAllPages():
            filename = f'{page}.html'.lstrip('/')
            dir = os.path.dirname(filename)
            dir and os.makedirs(dir, exist_ok=True)
            with open(filename, 'w') as f:
                doc = trac.wiki.getPageHTML(page)
                f.write(doc)
    
    
    __name__ == '__main__' and main()
    

    此脚本仅需要 Python 3.6,因此下载并保存到 export-wiki.py 文件,然后设置 TRAC_URL 环境变量并调用脚本。例如在 Unix 上:

    $ TRAC_URL=http://mytrac.mydomain.com python3.6 export-wiki.py
    

    它会提示输入密码。如果不需要密码,只需按回车键即可绕过。如果需要不同的用户名,还要设置 USER 环境变量。密钥环支持也可用,但可以忽略。

    【讨论】:

      猜你喜欢
      • 2010-11-05
      • 1970-01-01
      • 1970-01-01
      • 2013-03-24
      • 1970-01-01
      • 2021-11-11
      • 2010-11-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多