2010-12-05 3 views
2

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

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

ответ

5

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

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

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

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

+0

+1 для wget, которого достаточно для моих нужд на данный момент. Я вернусь к этому ответу и попробую другие предложения, если мне нужны идеи для чего-то более сложного. Благодарю. – spade78 2010-12-14 22:06:27

0

Для наших целей мы хотели бы экспортировать каждую из страниц вики отдельно без заголовка/нижнего колонтитула и другого содержимого, специфичного для экземпляра. С этой целью интерфейс 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. Поддержка клавиш также доступна, но ее можно игнорировать.

Смежные вопросы