Gorazd Export

Приложение было создано в рамках проекта «ГОРАЗДЪ: Цифровой портал старославянского языка» (проект реализован в рамках программы NAKI II Министерства культуры Чешской Республики, DG16P02H024, 2016-2020). Задачей приложения является экспорт словарных статей из системы Invenio (https://invenio-software.org).

На входе приложение ожидает MARC XML системы управления Invenio с экспортированными метаданными словарной статьи и XSL-преобразованием для Gorazd XML (схема XSD Gorazd XML: http://gorazd.org/sites/default/files/software/gXML.zip). Результатом является словарная статья, преобразованная должным образом для презентационной среды или в формат HTML, который далее может использоваться для подготовки печати в стандартных редакторах (например, MS Word).

Установка

Приложение Gorazd Export распространяется в виде пакета/модуля Python и может быть установлено стандартным способом с помощью утилиты pip. Для работы Gorazd Export требуется несколько библиотек, которые устанавливаются автоматически, если их нет в системе изначально. Поэтому вам может потребоваться установка Gorazd Export с правами root или виртуальной средой Python virtualenv.

  • $ pip install [-t cilovy_adresar] gorazd_export-1.zip

Запуск

Приложение запускается из командной строки непосредственно на сервере, на котором работает Invenio.

  • $ python exporter.py
  • usage: exporter.py [-h] [-p] [-l LOG_DIR]
    marcxml output_dir [transform [transform ...]]
  • exporter.py: error: too few arguments

Приложение передает параметры в командной строке стандартным способом, подсказки можно получить посредством параментра -h

  • $ python exporter.py –h
  • usage: exporter.py [-h] [-p] [-l LOG_DIR] marcxml output_dir [transform [transform ...]]

Exporter of Gorazd XML files

positional arguments:

  • marcxml MARC XML export from Invenio
  • output_dir Directory for storing the exported files
  • transform XSL transforms for producing the output

optional arguments:

  • -h, --help show this help message and exit
  • -p, --print_file Create print.html file in the output directory that contains all the transformed records sorted by their PAGE ID
  • -l LOG_DIR, --log_dir LOG_DIR Directory for log files. Default is the current working directory.

Параметры marc_xml и output_dir являются обязательными.

Параметр marc_xml содержит путь к входному файлу Gorazd Export. Этим входным файлом является экспорт словарной статьи MARC XML из Inveniо. Таким образом, содержимое файла «marc_xml» представляет собой метаданные словарных статей, предназначенных для экспорта.

Вход в приложение

Входной файл создается на сервере с использованием родного скрипта Invenia - bibexport. Для работы скрипта bibexport необходимо сначала сконфигурировать запрос для выбора соответствующих записей marc_xml из базы данных. Файл конфигурации "marcxml.cfg" находится в каталоге / opt / invenio / etc / bibexport. Запросы настраиваются таким же образом, как и запросы непосредственно в Invenio.

Скрипт bibexport можно запустить с помощью команды /opt/invenio/bin/bibexport, указав соответствующие параметры. Параметры в командной строке передаются в систему Invenio стандартным способом, подсказку можно получить с помощью параметра -h

  • Usage: /opt/invenio/bin/bibexport [options]
  • usage: exporter.py [-h] [-p] [-l LOG_DIR]
    marcxml output_dir [transform [transform ...]]

Command options:

Export options:

  • -w, --wjob=j1[,j2] Run specific exporting jobs j1, j2, etc (e.g. 'sitemap').
  • --force-recrawling When using the sitemap export will force all the timestamp there included to refer to correspond at least to now. In this way crawlers are going to crawl all the content again. This is useful in case of a major update in the detailed view of records.

Scheduling options:

  • -u, --user=USER User name under which to submit this task.
  • -t, --runtime=TIME Time to execute the task. [default=now]
    Examples: +15s, 5m, 3h, 2002-10-27 13:57:26.
  • -s, --sleeptime=SLEEP Sleeping frequency after which to repeat the task.
    Examples: 30m, 2h, 1d. [default=no]
  • --fixed-time Avoid drifting of execution time when using --sleeptime
  • -I, --sequence-id=SEQUENCE-ID Sequence Id of the current process
  • -L --limit=LIMIT Time limit when it is allowed to execute the task.
    Examples: 22:00-03:00, Sunday 01:00-05:00.
    Syntax: [Wee[kday]] [hh[:mm][-hh[:mm]]].
  • -P, --priority=PRI Task priority (0=default, 1=higher, etc).
  • -N, --name=NAME Task specific name (advanced option).

General options:

  • -h, --help Print this help.
  • -V, --version Print version information.
  • -v, --verbose=LEVEL Verbose level (0=min, 1=default, 9=max).
  • --profile=STATS Print profile information. STATS is a comma-separated list of desired output stats (calls, cumulative, file, line, module, name, nfl, pcalls, stdname, time).
  • --stop-on-error In case of unrecoverable error stop the bibsched queue.
  • --continue-on-error In case of unrecoverable error don't stop the bibsched queue.
  • --post-process=BIB_TASKLET_NAME[parameters] Postprocesses the specified bibtasklet with the given parameters between square brackets.
    Example:--post-process "bst_send_email[fromaddr='foo@xxx.com', toaddr='bar@xxx.com', subject='hello', content='help']"
  • --email-logs-to=EMAILS Sends an email with the results of the execution of the task, and attached the logs (EMAILS could be a comma-separated lists of email addresses)
  • --email-logs-on-error Send an e-mail to user that ran the task in case of ERROR.
  • --host=HOSTNAME Bind the task to the specified host, it will only ever run on that host.

Напр.: /opt/invenio/bin/bibexport --wjob=marcxml

Вывод

В каталоге, определенном параметром output_dir, приложение Gorazd Export сохраняет XML-файлы Gorazd всех статей, находящихся в указанном входном файле marc_xml. Если каталог, указанный в output_dir, не существует, он будет создан. Файлы в выходном каталоге именуются в соответствии с RECORD ID.

HTML вывод

Необязательный параметр -p создает файл «print.html» в выходном каталоге, содержащий все статьи, упорядоченные по PAGE ID.

Преобразования

Также в приложении можно включить дополнительное преобразование данных в нужную форму. Наименования преобразований передаются через параметр transform. Преобразований может быть несколько, они могут быть последовательно соединены. Порядок преобразований очень важен, поэтому в Gorazd Export им присваиваются номера, включаемые в параметр transform в порядке возрастания.

Генератор вывода на печать в настоящее время использует 4 варианта преобразований XSL. Первая преобразует отдельный GorazdXML в целостный HTML, не готовый, однако, к полному отображению. Второе преобразование преобразует правила для спорных символов и работает с пробелами. Третье преобразование делает то же самое. Четвертое преобразование проверяет последние необработанные пробелы и проблемные символы, а также преобразует весь вывод в действительный файл HTML.

Например:

  • $ python exporter.py -p marc.xml vystup/ gorazd-GTV-part1.xsl gorazd-GTV-part2.xsl
  • $ python exporter.py -p -l log/ in/vstup.xml out/vystup.xsl gorazd-GTV-part1.xsl gorazd-GTV-part2.xsl gorazd-GTV-part3.xsl gorazd-GTV-part4.xsl

Затем файл «print.html» можно использовать для подготовки печатной версии.

Регистрация ошибок

Приложение Gorazd Export записывает информацию о ходе экспорта в терминал, а также в каталог, для которого установлено значение log/. Данный каталог можно изменить с помощью необязательного параметра -l LOG_DIR. Если при работе программы возникают ошибки, программа не будет остановлена, уведомление об ошибке будет записано в файл в каталоге с расширением .err.

Лицензия

Приложение распространяется на основе открытой лицензией GNU GPL v3. Редактируя исходный код, приложение можно использовать для редактирования статей в других словарях. Авторы приложения будут благодарны за сообщение об использовании исходного кода этого приложения или его частей в других проектах посредством е-мейла на адрес gorazd@slu.cas.cz.

Установочный пакет:

Gorazd Export 1.0: http://gorazd.org/sites/default/files/software/gorazd_export-1.zip

В создании приложения участвовали:

  • Mgr. Vít Tuček, Ph.D. (программист)
  • Mgr. Olga Čiperová (аналитик развития)
  • Bc. Martin Majer (менеджер по развитию)
  • PhDr. Štefan Pilát, Ph.D. (консультант по развитию)

© 2018, Славянский институт АН ЧР