Add a workflow that registers depictions as portraits #7
1 changed files with 65 additions and 0 deletions
65
.forgejo/workflows/register_person_depictions.yaml
Normal file
65
.forgejo/workflows/register_person_depictions.yaml
Normal file
|
|
@ -0,0 +1,65 @@
|
||||||
|
name: Register person depictions
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: '0 3 * * 1-5'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
env:
|
||||||
|
POOLAPI: https://pool.psychoinformatics.de/api
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
register_depictions:
|
||||||
|
runs-on: debian-latest
|
||||||
|
if: ${{ forgejo.repository == 'www/www-from-model' }}
|
||||||
|
outputs:
|
||||||
|
committed: ${{ steps.commit.outputs.committed }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: https://hub.datalad.org/forgejo/datalad-clone-action@v1
|
||||||
|
with:
|
||||||
|
recursive: true
|
||||||
|
get_content: .
|
||||||
|
- name: Prepare environment
|
||||||
|
uses: ./.forgejo/actions/prep-metadata-query
|
||||||
|
- name: Process metadata
|
||||||
|
run: |
|
||||||
|
# Get all persons for which pages are generated:
|
||||||
|
# Get all depictions of type Portrait and inline distributions
|
||||||
|
# filter on whether the associated pid is of a person for which a page is generated
|
||||||
|
# operate on depictions that have distributions
|
||||||
|
# operate on distributions that have characterized_by, which in turn has: predicate == "dcat:downloadUrl"
|
||||||
|
# grab the associated object value;
|
||||||
|
# also grab extension and person pid reference
|
||||||
|
# feed [curie-ref, ext, url] into XARGS to call git annex addurl
|
||||||
|
dtc read-pages ${POOLAPI}/public/records/p/XYZDepiction \
|
||||||
|
| qri filter-links-pid \
|
||||||
|
--link kind xyzrins:depiction-types/e9a34f7d-d05e-4591-bb45-f8a0c499e07b \
|
||||||
|
--api-url ${POOLAPI} --collection public \
|
||||||
|
| qri inline-records --api-url ${POOLAPI} -c public -p distributions \
|
||||||
|
| jq -r \
|
||||||
|
--slurpfile pids <(
|
||||||
|
dtc read-pages ${POOLAPI}/public/records/p/XYZPerson \
|
||||||
|
| qri filter-linked-pid --api-url ${POOLAPI} public xyzrins:. associated_with \
|
||||||
|
| jq '.pid'
|
||||||
|
) '
|
||||||
|
($pids | map({(.):1}) | add) as $pidmap
|
||||||
|
| select(any(.about[]?; $pidmap[.]))
|
||||||
|
| .about[] as $person
|
||||||
|
| select($pidmap[$person])
|
||||||
|
| .distributions[]?.characterized_by[]?
|
||||||
|
| select(.predicate=="dcat:downloadUrl")
|
||||||
|
| .object as $url
|
||||||
|
| [
|
||||||
|
($person|sub("^xyzrins:";"")),
|
||||||
|
($url|capture("\\.(?<e>[^./?]+)$").e),
|
||||||
|
$url
|
||||||
|
]
|
||||||
|
| @tsv
|
||||||
|
' \
|
||||||
|
| while IFS=$'\t' read -r curie ext url; do
|
||||||
|
git annex addurl --file="content/${curie}/portrait.${ext}" "$url"
|
||||||
|
done
|
||||||
|
- name: Deposit changes
|
||||||
|
uses: ./.forgejo/actions/deposit-changes
|
||||||
Loading…
Add table
Add a link
Reference in a new issue