Узнай больше об проекте wiki2chm

February 12, 2008

Исходники проекта wiki2chm


 <a href="https://github.com/study-and-dev-site-attachments/all-in-one/tree/master/java/wiki2chm">https://github.com/study-and-dev-site-attachments/all-in-one/tree/master/java/wiki2chm</a> 

Описание программы



Программа написанная на java, назначение которой создание на основании сайта в формате mediawiki

набора страниц html для последующей сборки их в единый файл в формате chm.

Преимущества использования моей программы в том, что она специализирована под mediawiki. И в отличии от универсальных offline-менеджеров не загружает абсолютно все (ссылки на служебные страницы, версии для печати, страницу для правки статьи, загрузки файлов, истории правок).

Вы можете задать шаблон для будущего проекта, сохранить его, продолжать и приостанавливать работу. В шаблоне возможно использовать стили css. Корректно обрабатываются изображения.

После запуска программы вы видите окно разделенное на две закладки. Первая из них служит для настройки параметров проекта. Здесь вам нужно указать адрес сервера где расположена mediawiki, имя служебной страницы "список всех страниц" - именно эта страница используется как первая при запуске поиска (т.е. традиционный механизм поиска может не найти страницы-сироты - те на которые нет ссылок с других страниц). Также вам необходимо указать каталог, куда будут помещены сохраненные страницы (внимание: перед работой данный каталог очищается). Затем вы указываете имя каталога где на сервера размещена mediawiki (это необходимо в случае, если mediawiki помещается не в корне сайта). Затем вы указываете Xpath-запрос отбирающий внутри страницы нужный блок (это необходимо для того чтобы избежать в коде программы жестких ссылок отбирающих только центральную часть страницы - ту что не посредственно содержит информацию). Если вы не понимаете что это такое то оставьте как есть.

Также вам необходимо перечислить список тех блоков (тегов), которые следует удалять из результирующего документа (здесь я задал имена тегов для пустых ссылок, форм).

Т.к. mediawiki может хранить не только текстовые документы и изображения, но и файлы различных типов (архивы ...), то в следующем поле вы можете указать то какие расширения документов будут заблокированы и не будут загружаться в локальную копию mediawiki.

Следующий шаг - указать шаблоны адресов, которые не будут загружаться, например можно исключить все статьи, в названии которых присуствует определенная фраза.

Затем вам нужно указать имя файла шаблона, в который будет вставляться извлеченное из mediawiki содержимое.

Указанные вами настройки могут быть сохранены в виде файла проекта. Возможно приостановить работу на некоторое время и затем продолжить.



После запуска проекта, во второй закладке "Журнале" выводится сообщения показывающие как выполняется работа. Какие страницы были найдены и поставлены в очередь для загрузки, какие страницы были сохранены и т.д.



В конце работы выводится окно с перечислением тех страницы/изображений которые не могли быть загружены.



Важной частью wiki2chm является модуль выполняющий разбор загруженного html-документа и построение на его основе некоторого dom-дерева. Для этого используется библиотека tagsoup. Для того чтобы выполнить тонкую настройку ее работы используйте кнопку "Настройки TagSoup" (В большинстве случаев это не требуется). Пример окна настроек виден на следующем экране.



Пример диалогового окна для загрузки/сохранения файла настроек.



После того, как содержимое было извлечено из mediawiki и представлено в виде набора html-файлов, вам необходимо выполнить сборку данных файлов в единый файл windows chm. Для этого я рекомендую использовать утилиту html2chm от ( http://yarix.tut.by ). Естественно что вы можете использовать любой другой программный продукт.



Конечный результат работы в виде chm-файла.



Пример файла шаблона в который будет вставляться извлеченное mediawiki-содержимое.



Дополнения от 5.2.2008



1. Добавлена возможность указать не только входную кодировку (в которой будут загружаться с сервера страницы mediawiki), но и входную кодировку.

Это было сделано специально т.к. некоторый софт по созданию на базе набора htm-файлов chm-документа не корректно обрабатывал входные данные если они были в кодировке utf-8.



2. Теперь на сайте доступны не только исходные коды, но и скомпилированный проект уже подготовленный для запуска:

в составе архива доступны следующие файлы

libs-jars - папка с нужными для работы приложения библиотеками
   <strong>jaxen-1.1.1.jar</strong>
   <strong>jgoodies-forms.jar</strong>
   <strong>tagsoup-1.1.2.jar</strong>
   <strong>forms_rt.jar</strong>
 
template.html - файл шаблона страницы (внимание, кодировка этого файла должна совпадать с кодировкой выходного документа).

wiki2chm.jar - собственно, запускаемый файл приложения.

wikistyles.css - файл стилей css (этот файл подключается в файле шаблона и после окончания работы нужно скопировать его в папку, с загруженными с сайта документами).

Я создал этот файл стилей на основании скина mediawiki MonoBook, также добавлены css-правила генерируемые плагином раскраски синтаксиса построенными на базе geshi.

Если вы используете другой скин для mediawiki то возможно вы захотите адптировать стилевой файл или файл шаблона под себя.

Дополнения от 12.2.2008



Добавлены функции работы с пространствами имен в wikimedia. Теперь вы можете точно настроить проект для выкачивания, указать то какие пространства имен будут обработаны (какие разрешены, какие запрещены, и то как поступать с корневым пространством имен).

Внесены правки в парсинг загруженных файлов - теперь внешний вид html-документов еще лучше.



Инструкция по использованию



Загруженный архив необходимо распаковать, для запуска требуется установленная версия java 1.5 и выше.

Для запуска либо наберите в командной строке java -jar wiki2chm.jar, либо (при нормально установленной jre) нужно выполнить двойной клик по файлу wiki2chm.jar.

Скачать архив с утилитой [../contents/lib/download-monitor/download.php?id=3]

Исходный код и архив с библиотекой обновлены по состоянию на 12.02.2008