Skip to content

Update DOIs for changed Posts #57549

Update DOIs for changed Posts

Update DOIs for changed Posts #57549

Workflow file for this run

name: Update DOIs for changed Posts
on:
workflow_dispatch:
schedule:
- cron: "*/10 * * * *"
jobs:
update:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: setup Go
uses: actions/setup-go@v5
with:
go-version: '>=1.22'
- name: Download posts not indexed recently
run: |
mkdir -p upload
curl https://api.rogue-scholar.org/posts/updated?per_page=50 > upload/posts.json
- name: Set number of posts to be updated as variable
id: current_number
run: |
echo "NUMBER=$(jq '."total-results"' upload/posts.json)" >> $GITHUB_OUTPUT
- name: Install commonmeta
if: ${{ fromJSON(steps.current_number.outputs.NUMBER) > 0 }}
run: |
go install github.com/front-matter/[email protected]
commonmeta version
- name: Set current date as variable
if: ${{ fromJSON(steps.current_number.outputs.NUMBER) > 0 }}
run: |
echo "NOW=$(date +'%s')" >> $GITHUB_OUTPUT
id: current_date
- name: Convert posts to crossref xml
if: ${{ fromJSON(steps.current_number.outputs.NUMBER) > 0 }}
run: |
commonmeta list upload/posts.json -f jsonfeed --depositor "${{ secrets.CROSSREF_DEPOSITOR_NAME }}" --email "${{ secrets.CROSSREF_DEPOSITOR_EMAIL }}" --registrant "${{ secrets.CROSSREF_REGISTRANT }}" -t crossrefxml > upload/${{ steps.current_date.outputs.NOW }}
- name: Update content via Crossref API
if: ${{ fromJSON(steps.current_number.outputs.NUMBER) > 0 }}
run: |
curl -X POST https://doi.crossref.org/servlet/deposit -F "operation=doMDUpload" -F "login_id=${{ secrets.CROSSREF_USERNAME_WITH_ROLE }}" -F "login_passwd=${{ secrets.CROSSREF_PASSWORD }}" -F "fname=@upload/${{ steps.current_date.outputs.NOW }}"
- name: List uuids of updated posts
if: ${{ fromJSON(steps.current_number.outputs.NUMBER) > 0 }}
run: |
echo "UUIDS=$(jq -rc '[.items | .[] | .id] | join(",")' upload/posts.json)" >> $GITHUB_OUTPUT
id: uuids
- name: Update Rogue Scholar posts
if: ${{ fromJSON(steps.current_number.outputs.NUMBER) > 0 }}
run: |
curl -X PATCH https://db.rogue-scholar.org/rest/v1/posts?id=in.%28${{ steps.uuids.outputs.UUIDS }}%29 -H "apikey: ${{ secrets.SUPABASE_KEY }}" -H "Authorization: Bearer ${{ secrets.SUPABASE_KEY }}" -H "Content-Type: application/json" -H "Prefer: return=minimal" -d '{ "indexed_at": "${{ steps.current_date.outputs.NOW }}", "indexed": true }'