Gorazd Export

Aplikace byla vytvořena v rámci projektu GORAZD: Digitální portál staroslověnštiny (projekt je realizován v rámci programu NAKI II Ministerstva kultury ČR, DG16P02H024, 2016-2020). Jejím úkolem je export slovníkových hesel ze systému Invenio (https://invenio-software.org).

Aplikace na vstupu očekává MARC XML ze správního systému Invenio s metadaty exportovaných hesel a případné XSL transformace pro Gorazd XML (XSD schema formátu Gorazd XML). Jeho výstupem jsou pak hesla transformovaná pro prezentační prostředí či do formátu HTML, který lze dále použít k tiskové přípravě standardními editory (například MS Word).

Instalace

Aplikace Gorazd Export je distribuována ve formě Pythonového balíčku/modulu a lze ji instalovat standardním způsobem pomocí utility pip. Aplikace Gorazd Export potřebuje ke svému běhu několik knihoven, které se automaticky nainstalují pokud už nejsou v systému přítomny. Z toho důvodu může být nutné instalovat aplikaci Gorazd Export s právy roota případně do Pythonovského virtuálního prostředí virtualenv.

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

Spuštění

Tato aplikace je spouštěna z příkazové řádky přímo na serveru, na kterém systém Invenio běží.

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

Aplikaci se předávají parametry na příkazové řádce standardním způsobem a nápovědu lze získat parametrem -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 curren working directory.

Parametry marc_xml a output_dir jsou povinné.

Parametr marc_xml obsahuje cestu ke vstupnímu souboru pro Gorazd Export. Tímto vstupním souborem je MARC XML export hesel z Invenia. Tedy obsahem souboru „marc_xml“ jsou metadata hesel, která jsou určená k exportu.

Vstup do aplikace

Vstupní soubor se vytváří na serveru pomocí nativního scriptu Invenia – bibexport. Aby mohl script bibexport proběhnout, je zapotřebí nejprve nakonfigurovat dotaz, pomocí kterého bude z databáze vybírat odpovídající marc_xml záznamy. Konfigurační soubor „marcxml.cfg“ je v adresáři /opt/invenio/etc/bibexport. Dotazy jsou nastavovány stejným způsobem jako dotazy přímo v aplikaci Invenio.

Script bibexport je možné spustit příkazem /opt/invenio/bin/bibexport s uvedením patřičných parametrů. Systému Invenio se předávají parametry na příkazové řádce standardním způsobem a nápovědu lze získat parametrem –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.

Např.: /opt/invenio/bin/bibexport --wjob=marcxml

Výstup

Do adresáře zadaného parametrem output_dir aplikace Gorazd Export uloží soubory obsahující Gorazd XML všech hesel, která jsou v zadaném vstupním souboru marc_xml. Pokud adresář uvedený v parametru output_dir neexistuje, bude vytvořen. Soubory ve výstupním adresáři jsou pojmenované podle RECORD ID.

HTML výstup

Nepovinný parametr -p vygeneruje do výstupního adresáře soubor „print.html“ obsahující všechna hesla seřazená podle PAGE ID.

Transformace

Do aplikace je možné zařadit i transformace, které dále zpracovávají vstupní soubory do očekávaného tvaru. Názvy transformací se předávají v parametru transform. Těchto transformací může být několik a lze je řetězit za sebou. Na pořadí transformací v záleží, proto jsou pro použití v aplikaci Gorazd Export očíslovány a mají být zařazeny do parametru transform ve vzestupném pořadí.

Generátor tiskových výstupů aktuálně používá 4 XSL transformace. První převádí jednotlivé GorazdXML do jednoho HTML celku, který však není zdaleka připraven k zobrazení. Druhá transformace převádí pravidla pro kontroverzní znaky a pracuje s mezerami. Stejný krok dělá i třetí transformace. Čtvrtá transformace kontroluje poslední nezpracované mezery a problematické znaky a navíc převádí celý výstup do validního HTML souboru.

Například:

    $ 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

Soubor „print.html“ lze pak dále použít pro přípravu tiskových podkladů.

Logování

Aplikace Gorazd Export vypisuje informace o průběhu exportu do terminálu a zároveň i do logovacího adresáře, který je nastaven na log/ Tento logovací adresář je možno změnit volitelným parametrem -l LOG_DIR. Pokud se při běhu programu vyskytnou chyby, běh programu se nepřeruší a oznámení o chybách bude zalogováno do souboru v logovacím adresáři s příponou .err.

Licence

Aplikace je distribuovaná na základě otevřené licence GNU GPL v3. Úpravou zdrojového kódu lze aplikaci použít pro generování hesel jiných slovníků. Autoři této aplikace vám budou vděčni, když nás budete o využití zdrojového kódu této aplikace nebo jeho částí v jiných projektech informovat na e-mailové adrese gorazd@slu.cas.cz.

Instalační balíček:

Gorazd Export 1.0

Na vzniku aplikace se podíleli:

• Mgr. Vít Tuček, Ph.D. (programátor)
• Mgr. Olga Čiperová (analytik vývoje)
• Bc. Martin Majer (manažer vývoje)
• PhDr. Štefan Pilát, Ph.D. (odborný konzultant vývoje)

© 2018, Slovanský ústav AV ČR, v. v. i.