blob: 0a466e5c75aa70d607d6679ce9da3f6ec6a70b3c [file] [log] [blame]
Harald Lüngen5bebb0c2024-08-27 16:44:34 +03001#/bin/bash
2
3EURECO="/scratch/project_2010889/eureco"
Harald Lüngen197aa202024-09-04 17:42:31 +03004TEST="/scratch/project_2010889/TEST"
Harald Lüngen5bebb0c2024-08-27 16:44:34 +03005
6CORPUS="$EURECO/klk-fi-v2-vrt"
7TEIDTD="$EURECO/tei/tei_all.dtd"
8
Martin Matthiesen0579bf12026-09-10 08:48:56 +03009SCRIPTDIR="$(cd "$(dirname "$0")" && pwd)"
10ZIPFILE=`ls "$SCRIPTDIR"/workdir/*.zip 2>/dev/null | head -1` # whichever archive of yearly vrt files sits in workdir/; members are streamed, never extracted to disk
11if [[ -z "$ZIPFILE" ]] ; then
12 echo "Error: klk2eureco.sh: no .zip file found in $SCRIPTDIR/workdir" >&2
13 exit 1
14fi
Harald Lüngen197aa202024-09-04 17:42:31 +030015XML="$CORPUS/XML" # output zipped vrtxml files of selection of newspapers
Harald Lüngend488d5c2024-09-25 09:01:51 +030016
17
Harald Lüngencb223bd2024-09-19 10:52:09 +030018TEI="$CORPUS/TEI" # output zipped tei files of the selection
19#TEI="$TEST/TEI" # output zipped tei files of the selection
20
Harald Lüngen34c05612025-02-04 15:08:08 +020021TEIFORMAT="tei";
22#TEIFORMAT="i5";
Harald Lüngen5bebb0c2024-08-27 16:44:34 +030023
Harald Lüngend488d5c2024-09-25 09:01:51 +030024MASK="";
25#MASK="-m";
26
27PERL_BAD=0; # to supress warnings about locale
28
Harald Lüngen197aa202024-09-04 17:42:31 +030029mkdir -p $TEST
Harald Lüngen5bebb0c2024-08-27 16:44:34 +030030mkdir -p $XML
31mkdir -p $TEI
32
33
34
35# Multiple threads for a loop in bash:
36
37## for stuff in things
38## do
39## ( something
40## with
41## stuff ) &
42## done
43## wait # for all the something with stuff
44
45
46
47# Generate corpus files by year and source in vrt
48
Martin Matthiesen0579bf12026-09-10 08:48:56 +030049for ZIPMEMBER in `unzip -Z1 "$ZIPFILE" | grep '\.vrt$'` # loop over every yearly vrt file found in the archive
Harald Lüngen5bebb0c2024-08-27 16:44:34 +030050do # (
51
Martin Matthiesen0579bf12026-09-10 08:48:56 +030052 BASENAME=`basename $ZIPMEMBER .vrt`
Harald Lüngend488d5c2024-09-25 09:01:51 +030053 YEAR=`echo $BASENAME | gawk 'BEGIN {FS="_"} {print $4}'`
Harald Lüngen5bebb0c2024-08-27 16:44:34 +030054
Martin Matthiesen0579bf12026-09-10 08:48:56 +030055 echo "Generating proper XML files from $ZIPMEMBER in $ZIPFILE, in $XML by source..."
56 unzip -p "$ZIPFILE" "$ZIPMEMBER" | gawk -v OUTDIR="$XML" -v YEAR="$YEAR" -f vrt2xml.awk
Harald Lüngencb223bd2024-09-19 10:52:09 +030057
Martin Matthiesen0579bf12026-09-10 08:48:56 +030058
59
Harald Lüngend488d5c2024-09-25 09:01:51 +030060 #--------------------------------------------------------
Harald Lüngen6feedd22024-08-29 13:33:59 +030061 # Checking Wellformedness of the XML and generating TEI
Harald Lüngend488d5c2024-09-25 09:01:51 +030062 #--------------------------------------------------------
63
Martin Matthiesen0579bf12026-09-10 08:48:56 +030064 for s in $XML/*/ # every source vrt2xml.awk actually produced output for
65 do # ( # threading
Harald Lüngen5bebb0c2024-08-27 16:44:34 +030066 SOURCE=`basename $s`
Harald Lüngend488d5c2024-09-25 09:01:51 +030067 x=$s/$SOURCE$YEAR.xml
68
Harald Lüngen34c05612025-02-04 15:08:08 +020069 #---------------------------------------------------------------
70 # Some existence checks and removal of empty files beforehand:
71 #---------------------------------------------------------------
72
73 if [[ ! -f $x ]] ; then
74 echo "Warning: klk2eureco.sh: File $x does not exist; skipping";
75 break;
76 fi
77
78 if [[ -z `grep -l "<text " $x` ]] ; then
79 #echo "Warning: klk2eureco.sh: File $x does not contain any <text>s, skipping"
80 echo "Warning: klk2eureco.sh: File $x does not contain any <text>s,removing"
81 rm -fv $x;
82 break;
83 fi
Harald Lüngend488d5c2024-09-25 09:01:51 +030084
Harald Lüngen34c05612025-02-04 15:08:08 +020085 #---------------------------------
86 # checking well-formedness of $x
87 #---------------------------------
88
Harald Lüngend488d5c2024-09-25 09:01:51 +030089 echo " checking wellformedness of $x"
Harald Lüngen34c05612025-02-04 15:08:08 +020090 xmllint --stream --noout $x
Harald Lüngend488d5c2024-09-25 09:01:51 +030091 if [[ $R != "" ]] ; then
92 echo "Error: xmllint error with error return code $R" >&2;
93 break;
94 fi
95
96
Harald Lüngen34c05612025-02-04 15:08:08 +020097
Harald Lüngend488d5c2024-09-25 09:01:51 +030098 #--------------------
99 # calling vrt2tei.pl
100 #--------------------
101
Harald Lüngen5bebb0c2024-08-27 16:44:34 +0300102 BASENAME=`basename $x .xml`
103 mkdir -p $TEI/$SOURCE
Harald Lüngencb223bd2024-09-19 10:52:09 +0300104 t="$TEI/$SOURCE/$BASENAME.$TEIFORMAT.xml"
Harald Lüngen5bebb0c2024-08-27 16:44:34 +0300105
Martin Matthiesenf4fc6c82026-09-10 08:32:22 +0300106 echo " generating $t using vrt2tei.pl..."
Harald Lüngend488d5c2024-09-25 09:01:51 +0300107 perl vrt2tei.pl -t $TEIFORMAT $MASK $x |
Harald Lüngen7aac9732024-09-17 09:07:25 +0300108 gawk -f rearrange-idsDoc.awk > $t # rearranging the start and end tag of idsDoc
Martin Matthiesenf4fc6c82026-09-10 08:32:22 +0300109 # pretty-printing now done in-process by XML::Twig (pretty_print => 'record'),
110 # replacing the old xml_pp re-parse pass (xmllint --format runs out of memory, --stream can't format)
Harald Lüngen5bebb0c2024-08-27 16:44:34 +0300111 ls -l $t
Harald Lüngen6feedd22024-08-29 13:33:59 +0300112
Harald Lüngen34c05612025-02-04 15:08:08 +0200113 # if $t is empty, remove it:
Martin Matthiesenf4fc6c82026-09-10 08:32:22 +0300114 if [ ! -s $t ]; then
115 rm -f $t
Harald Lüngen34c05612025-02-04 15:08:08 +0200116 fi
117
118 # validating $t:
Harald Lüngencb223bd2024-09-19 10:52:09 +0300119 if [ "$TEIFORMAT" == "i5" ] ; then
Harald Lüngend488d5c2024-09-25 09:01:51 +0300120 echo " validating $t..."
Harald Lüngencb223bd2024-09-19 10:52:09 +0300121 xmllint --stream --noout --valid $t
Harald Lüngend488d5c2024-09-25 09:01:51 +0300122 else
123 echo " validating $t..."
124 xmllint --stream --noout --dtdvalid $TEIDTD $t # scheint so zu funktioneren - nicht kombinieren mit --format!
Harald Lüngencb223bd2024-09-19 10:52:09 +0300125 fi
Harald Lüngen5bebb0c2024-08-27 16:44:34 +0300126
Harald Lüngen34c05612025-02-04 15:08:08 +0200127###TMP # echo " zipping $x..."
128###TMP # gzip -f $x
129###TMP
130###TMP # echo " zipping $t..."
131###TMP # gzip -f $t
132
133 echo # ) &
Harald Lüngen5bebb0c2024-08-27 16:44:34 +0300134 done
Harald Lüngend488d5c2024-09-25 09:01:51 +0300135 wait # ) & # wait seems to have to be there for it to terminate
Harald Lüngen5bebb0c2024-08-27 16:44:34 +0300136
137done
138# wait
139
140
141