scripts: add ref
This commit is contained in:
parent
9c2b2312f1
commit
b291c8f43e
41
scripts/ref
Executable file
41
scripts/ref
Executable file
@ -0,0 +1,41 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Generate a CSL bibliography entry from a DOI or ISBN
|
||||||
|
|
||||||
|
if test "${1#*10.}" != "$1"; then
|
||||||
|
# DOI
|
||||||
|
curl -sLH 'Accept: application/x-bibtex' "https://doi.org/$1" \
|
||||||
|
| pandoc -f bibtex -t markdown -s
|
||||||
|
else
|
||||||
|
# ISBN
|
||||||
|
oclc=$(curl -sI "https://www.worldcat.org/isbn/$1" \
|
||||||
|
| sed -nE '/^Location:/ {s@.*oclc/([0-9]+).*@\1@p; q}')
|
||||||
|
|
||||||
|
curl -s "https://openlibrary.org/api/volumes/brief/isbn/$1.json" \
|
||||||
|
| jq --arg oclc "$oclc" '
|
||||||
|
def splitname:
|
||||||
|
split(" ") | {family: .[-1], given: .[0:-1] | map (.[0:1] + ".")| join(" ")};
|
||||||
|
[.records | .[]] | .[0] as $reply
|
||||||
|
| ($reply.data + $reply.details) as $data
|
||||||
|
| [{author: $data.authors | map(.name | splitname),
|
||||||
|
isbn: $data.identifiers.isbn_10[0],
|
||||||
|
edition: $data.details.edition_name | split(" ") | .[0] | sub("[a-z]+"; ""),
|
||||||
|
issued: $data.publish_date,
|
||||||
|
publisher: $data.details.publishers[0],
|
||||||
|
"publisher-place": $data.details.publish_places[0],
|
||||||
|
type: "book",
|
||||||
|
title: $data.title,
|
||||||
|
url: ("https://www.worldcat.org/oclc/" + $oclc)}]' \
|
||||||
|
| pandoc -f csljson -t markdown -s
|
||||||
|
fi | sed '
|
||||||
|
# delete start of header
|
||||||
|
1,3d
|
||||||
|
# insert the reference id
|
||||||
|
/^- / {i - id: CHANGE_ME
|
||||||
|
s/- / /
|
||||||
|
}
|
||||||
|
# unquote the url
|
||||||
|
/url:/ s/"//g
|
||||||
|
# delete end of header
|
||||||
|
/^---/d
|
||||||
|
$d'
|
Loading…
Reference in New Issue
Block a user