Есть ли способ конвертировать страницы Trac Wiki в HTML? - PullRequest
2 голосов
/ 05 декабря 2010

Я вижу предложение использовать Mylyn WikiText для преобразования вики-страниц в html из этого вопроса за исключением того, что я не уверен, что это то, что я ищу, читая фронтСтраница сайта одна.Я посмотрю на это дальше.Хотя я бы предпочел, чтобы это был плагин Trac, чтобы я мог инициировать преобразование из параметров вики, но все плагины в Trac-Hacks экспортируют только отдельные страницы, тогда как я хочу сбросить все отформатированные страницы в однуgo.

Так есть ли существующий плагин Trac или отдельное приложение, которое будет отвечать моим требованиям?Если нет, то где бы вы мне указали начать самому реализовывать эту функциональность?

Ответы [ 2 ]

5 голосов
/ 14 декабря 2010

Вы можете найти полезную информацию в комментариях к этому билету на trac-hacks . Один пользователь сообщает, что с помощью утилиты wget создает зеркальную копию вики, как если бы это был обычный веб-сайт. Другой пользователь сообщает об использовании плагина XmlRpc для извлечения версий HTML любой данной вики-страницы, но этот метод, вероятно, потребует создания сценария для взаимодействия с плагином. К сожалению, на плакате не было примеров кода, но на странице плагина XmlRpc содержится приличное количество документации и примеров, с которых можно начать.

Если у вас есть доступ к командной строке на сервере, на котором размещен Trac, вы можете использовать команду trac-admin, например:

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

чтобы получить текстовую версию указанной вики-страницы. Затем вам придется анализировать синтаксис вики для HTML, но для этого есть инструменты.

1 голос
/ 24 июля 2017

В наших целях мы хотели экспортировать каждую из страниц вики отдельно без верхнего / нижнего колонтитула и другого содержимого, специфичного для экземпляра.Для этой цели хорошо подойдет интерфейс XML-RPC.Вот скрипт Python 3.6+, который я создал для экспорта всей вики в файлы HTML в текущем каталоге.Обратите внимание, что этот метод не перезаписывает никаких гиперссылок, поэтому они будут полностью разрешены для сайта.

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

Будет запрошен пароль.Если пароль не требуется, просто нажмите Enter, чтобы обойти.Если требуется другое имя пользователя, также установите переменную среды USER.Поддержка ключей также доступна, но ее можно игнорировать.

...