noah/tasks/wuppertal.yml

151 lines
6.2 KiB
YAML

# https://taskfile.dev
version: '3'
tasks:
# Tasks mit ":" sind für alle Datenquellen gleich in Taskfile.yml definiert
default:
desc: Elpub Wuppertal
deps: [harvest]
cmds:
- task: refine
- task: check
- task: split
- task: validate
- task: zip
- task: diff
harvest:
dir: data/wuppertal/harvest
cmds:
- METHA_DIR=$PWD metha-sync --format oai_dc http://elpub.bib.uni-wuppertal.de/servlets/OAIDataProvider
- METHA_DIR=$PWD metha-cat --format oai_dc http://elpub.bib.uni-wuppertal.de/servlets/OAIDataProvider > wuppertal.xml
refine:
dir: data/wuppertal/refine
ignore_error: true # provisorisch verwaisten Java-Prozess bei Exit vermeiden https://github.com/go-task/task/issues/141
env:
PORT: 3335
RAM: 4G
PROJECT: wuppertal
cmds:
# OpenRefine starten
- $OPENREFINE -v warn -p $PORT -m $RAM -d $PWD > openrefine.log 2>&1 &
- timeout 30s bash -c "until curl -s http://localhost:$PORT | cat | grep -q -o OpenRefine ; do sleep 1; done"
# Import (erfordert absoluten Pfad zur XML-Datei)
- $OPENREFINE_CLIENT -P $PORT --create "$(readlink -e ../harvest/wuppertal.xml)" --recordPath Records --recordPath Record --storeEmptyStrings false --trimStrings true --projectName $PROJECT
# Vorverarbeitung: Identifier in erste Spalte; nicht benötigte Spalten (ohne differenzierende Merkmale) löschen; verbleibende Spalten umbenennen (Pfad entfernen)
- $OPENREFINE_CLIENT -P $PORT --apply ../../../rules/wuppertal/vorverarbeitung.json $PROJECT
# Entfernen von HTML-Tags und Transformation von subscript und superscript in Unicode (betrifft dc:description, dc:source und dc:title)
- $OPENREFINE_CLIENT -P $PORT --apply ../../../rules/wuppertal/html.json $PROJECT
# DDC einheitlich auf drei Ziffern vereinheitlichen (betrifft dc:subjects und oai:setSpec)
- $OPENREFINE_CLIENT -P $PORT --apply ../../../rules/wuppertal/ddc.json $PROJECT
# dc:publisher setzen
- $OPENREFINE_CLIENT -P $PORT --apply ../../../rules/wuppertal/publisher.json $PROJECT
# URNs, DOIs und PDF-Links aus dc:identifier extrahieren
- $OPENREFINE_CLIENT -P $PORT --apply ../../../rules/wuppertal/identifier.json $PROJECT
# Direktlinks generieren durch Abgleich der URNs mit nbn-resolving und Datensätze ohne Direktlink auf ein PDF löschen
- $OPENREFINE_CLIENT -P $PORT --apply ../../../rules/wuppertal/nbn.json $PROJECT
# Aufteilung dc:subject in ioo und topic
- $OPENREFINE_CLIENT -P $PORT --apply ../../../rules/wuppertal/subjects.json $PROJECT
# Standardisierte Rechteangaben Teil 1 (Links zu CC-Lizenzen)
- $OPENREFINE_CLIENT -P $PORT --apply ../../../rules/wuppertal/rights.json $PROJECT
# Datenstruktur für Templating vorbereiten: Pro Zeile ein Datensatz und leere Zeilen löschen
- $OPENREFINE_CLIENT -P $PORT --apply ../../../rules/wuppertal/join.json $PROJECT
# Zusammenführung gleichsprachiger Titelangaben zu Title/Subtitle
- $OPENREFINE_CLIENT -P $PORT --apply ../../../rules/wuppertal/subtitle.json $PROJECT
# Sprachangaben nach ISO-639-2b (betrifft dc:language sowie die xml:lang Attribute für dc:coverage, dc:description und dc:title)
- $OPENREFINE_CLIENT -P $PORT --apply ../../../rules/wuppertal/language.json $PROJECT
# Standardisierte Rechteangaben Teil 2 (Canonical Name für CC-Lizenzen)
- $OPENREFINE_CLIENT -P $PORT --apply ../../../rules/wuppertal/rights-cc.json $PROJECT
# Anreicherung HT-Nummer via lobid-resources
- $OPENREFINE_CLIENT -P $PORT --apply ../../../rules/wuppertal/hbz.json $PROJECT
# Sortierung mods:nonSort für das erste Element in dc:title
- $OPENREFINE_CLIENT -P $PORT --apply ../../../rules/wuppertal/nonsort.json $PROJECT
# Export in METS:MODS mit Templating
- |
$OPENREFINE_CLIENT -P $PORT --export --template "$(< ../../../rules/wuppertal/template.txt)" --rowSeparator "
<!-- SPLIT -->
" --suffix "
" --output wuppertal.txt $PROJECT
# Statistik zu Laufzeit und Ressourcenverbrauch
- ps -o start,etime,%mem,%cpu,rss -p $(lsof -t -i:$PORT)
# OpenRefine beenden
- PID=$(lsof -t -i:$PORT); kill $PID; while ps -p $PID > /dev/null; do sleep 1; done
# OpenRefine-Projekt für Debugging archivieren
- tar cfz wuppertal.openrefine.tar.gz -C $(grep -l wuppertal *.project/metadata.json | cut -d '/' -f 1) .
# Temporäre Dateien löschen
- rm -rf ./*.project* && rm -f workspace.json
sources:
# wenn "dir:" für task gesetzt ist, dann relative Links ausgehend von dir
- ../harvest/wuppertal.xml
- ../../../rules/wuppertal/*.json
- ../../../rules/wuppertal/template.txt
#TODO - ../../../rules/common/*.json
generates:
- openrefine.log
- wuppertal.txt
- wuppertal.openrefine.tar.gz
check:
cmds:
# Tasks mit ":" sind für alle Datenquellen gleich in Taskfile.yml definiert
- task: :check
vars: {PROJECT: "wuppertal", MINIMUM: "1300"}
sources:
# wenn "dir:" für task nicht gesetzt ist, dann relative Links ausgehend von Taskfile.yml
- data/wuppertal/refine/openrefine.log
- data/wuppertal/refine/wuppertal.txt
split:
cmds:
- task: :split
vars: {PROJECT: "wuppertal"}
sources:
- data/wuppertal/refine/wuppertal.txt
generates:
- data/wuppertal/split/*.xml
validate:
cmds:
- task: :validate
vars: {PROJECT: "wuppertal"}
sources:
- data/wuppertal/split/*.xml
generates:
- data/wuppertal/validate.log
zip:
cmds:
- task: :zip
vars: {PROJECT: "wuppertal"}
sources:
- data/wuppertal/split/*.xml
generates:
- data/wuppertal/wuppertal_{{.DATE}}.zip
diff:
cmds:
- task: :diff
vars: {PROJECT: "wuppertal"}
sources:
- data/wuppertal/split/*.xml
generates:
- data/wuppertal/diff.log
linkcheck:
desc: Elpub Wuppertal links überprüfen
cmds:
- task: :linkcheck
vars: {PROJECT: "wuppertal"}
sources:
- data/wuppertal/split/*.xml
generates:
- data/wuppertal/linkcheck.log
delete:
desc: Elpub Wuppertal cache löschen
cmds:
- task: :delete
vars: {PROJECT: "wuppertal"}