scholarref

tools for DOI and BiBTeX reference extraction, fetching, and parsing
git clone git://src.adamsgaard.dk/scholarref # fast
git clone https://src.adamsgaard.dk/scholarref.git # slow
Log | Files | Refs | README | LICENSE Back to index

commit bd2a773edb46da707fe848d805390ab9acd37c63
parent 35e9fa3443bfcd8066f13e76eb2638a3c4b62a10
Author: Anders Damsgaard <anders@adamsgaard.dk>
Date:   Wed, 24 Nov 2021 19:04:37 +0100

add getrefer

Diffstat:
MMakefile | 2++
Agetrefer | 40++++++++++++++++++++++++++++++++++++++++
2 files changed, 42 insertions(+), 0 deletions(-)

diff --git a/Makefile b/Makefile @@ -7,6 +7,7 @@ install: mkdir -p $(DESTDIR)$(PREFIX)/share/scholarref install -m 775 getdoi $(DESTDIR)$(PREFIX)/bin install -m 775 getref $(DESTDIR)$(PREFIX)/bin + install -m 775 getrefer $(DESTDIR)$(PREFIX)/bin install -m 775 scholarref $(DESTDIR)$(PREFIX)/bin install -m 775 shdl $(DESTDIR)$(PREFIX)/bin install -m 775 articlesearch $(DESTDIR)$(PREFIX)/bin @@ -16,6 +17,7 @@ install: uninstall: rm -f $(DESTDIR)$(PREFIX)/bin/getdoi rm -f $(DESTDIR)$(PREFIX)/bin/getref + rm -f $(DESTDIR)$(PREFIX)/bin/getrefer rm -f $(DESTDIR)$(PREFIX)/bin/scholarref rm -f $(DESTDIR)$(PREFIX)/bin/shdl rm -f $(DESTDIR)$(PREFIX)/bin/articlesearch diff --git a/getrefer b/getrefer @@ -0,0 +1,40 @@ +#!/bin/sh +# reads DOIs (without URL prefix) as stdin and returns refer(1) format references + +while read -r doi +do + curl -sLH "Accept: application/x-research-info-systems" "https://doi.org/${doi}" +done | \ +awk ' +function rmlbl(s) { + sub(/[A-Za-z][A-Za-z0-9] - /, ""); +} + +BEGIN { delete authors[0] } + +/DO - / { doi = $3 } +/TI - / { rmlbl($0); title = $0 } +/T2 - / { rmlbl($0); journal = $0 } +/AU - / { rmlbl($0); authors[length(authors)] = $0 } +/PY - / { year = $3 } +/SP - / { page = $3 } +/IS - / { issue = $3 } +/VL - / { volume = $3 } + +END { + firstauthor = authors[0] + sub(/,.*/, "", firstauthor) + printf "%%L %s%d\n", firstauthor, year + for (i in authors) + printf "%%A %s\n", authors[i] + printf "%%T %s\n", title + printf "%%J %s\n", journal + printf "%%D %d\n", year + printf "%%N %s", volume + if (issue) + printf "(%s)", issue + printf "\n%%P %s\n", page + if (doi) + printf "%%O https://doi.org/%s\n", doi +} +'