#!/usr/bin/env fish function usage begin echo "Read TSV release data from sdtin > query Discogs API > output JSON" exit 1 end end argparse -n (status current-filename) 'h/help' -- $argv if test $status -ne 0 usage end if set -q _flag_help usage end set API_OUT (mktemp -t rls.API.XXXXXXXX.json) set DAPI "https://api.discogs.com/database/search" set UA "rls-discogs.fish/v0.0.3" if test -f ~/.discogs.token set TOKEN (cat ~/.discogs.token) end if test -z "$TOKEN" echo "Please place access token from https://www.discogs.com/settings/developers into ~/.discogs.token" exit 1 end function discord_format switch $argv[1] case (seq 100)VINYL VINYL VLS Vinyl vinyl printf '%s' "Vinyl" case (seq 100)CD CD CDA CDS CDM CDEP EP printf '%s' "CD" case CDR CDREP printf '%s' "CDr" case TAPE printf '%s' "Cassette" case WEB SINGLE-WEB EP-WEB printf '%s' "File" case '*' printf '%s' "*" end end while read -l -d (printf '\t') ORG A T C B F E Y sleep 1 set API_CODE (curl -s -G "$DAPI" --user-agent "$UA" -w '%{http_code}' -o "$API_OUT" -H "Authorization: Discogs token=$TOKEN" \ --data-urlencode "type=release" \ --data-urlencode "artist=$A" \ --data-urlencode "release_title=$T" \ --data-urlencode "catno=$C" \ --data-urlencode "barcode=$B" \ --data-urlencode "format=$(discord_format $F)" \ --data-urlencode "year=$Y") if test $status -ne 0 echo "curl API request failed" >&2 rm "$API_OUT" continue end if test $API_CODE -ne 200 begin echo "Discogs API status code $CODE" echo $ORG end >&2 rm "$API_OUT" continue end set API_COUNT (jq -r .pagination.items "$API_OUT") if test $status -ne 0 begin echo "Failed parsing API result" echo $ORG end >&2 rm "$API_OUT" continue end if test $API_COUNT -eq 0 echo '{}' | jq -SMc --arg rls "$ORG" --arg api_count "$API_COUNT" ' { "_scene_release_name": $rls, "_query": "API", "_search_result_count": $api_count | tonumber, }' rm "$API_OUT" continue else if test $API_COUNT -ge 1 jq -SMc --arg rls "$ORG" --arg api_count "$API_COUNT" '.results[0] | . + { "_scene_release_name": $rls, "_query": "API", "_search_result_count": $api_count | tonumber }' "$API_OUT" end rm "$API_OUT" end