From 631f6e3fba9996fa1bad46f4ac19ea29c5c08d85 Mon Sep 17 00:00:00 2001 From: bux Date: Sun, 27 Mar 2022 16:26:24 +0200 Subject: [PATCH] add deezer search --- search-deezer-api.fish | 111 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100755 search-deezer-api.fish diff --git a/search-deezer-api.fish b/search-deezer-api.fish new file mode 100755 index 0000000..7bbaf78 --- /dev/null +++ b/search-deezer-api.fish @@ -0,0 +1,111 @@ +#!/usr/bin/env fish +#set fish_trace on + +function usage + begin + echo "Read TSV release data from sdtin > query Deezer 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.deezer.API.XXXXXXXX.json) +set DAPI "https://api.deezer.com/search/album" +set UA "search-deezer.fish/v0.0.3" + +function deezer_record_type + switch $argv[1] + case (seq 100)CD CD CDA + printf '%s' "album" + case CDEP EP + printf '%s' "ep" + case CDS CDM + printf '%s' "single" + case WEB SINGLE-WEB EP-WEB + printf '%s' "single" + case '*' + printf '' + end +end + +while read -l -d (printf '\t') ORG A T C B F E Y + set _in_A "$A"; set _in_T "$T"; set _in_C "$C"; + set _in_B "$B"; set _in_F "$F"; set _in_E "$E"; set _in_Y "$Y" + + sleep .2 + set API_CODE (curl -s -G "$DAPI" --user-agent "$UA" -w '%{http_code}' -o "$API_OUT" --data-urlencode "q=$A $T $E" --data-urlencode "strict=on") + + if test $status -ne 0 + echo "curl API request failed" >&2 + rm "$API_OUT" + continue + end + + if test $API_CODE -ne 200 + begin + echo "Deezer API status code $CODE" + echo $ORG + end >&2 + rm "$API_OUT" + continue + end + + set API_COUNT (jq -r .total "$API_OUT") + if test $status -ne 0 + begin + echo "Failed parsing API result" + echo $ORG + end >&2 + rm "$API_OUT" + continue + end + + if test -n "$F" + set RECORD_TYPE (deezer_record_type "$F") + end + + if test $API_COUNT -eq 0 + echo '{}' | jq -SMc --arg rls "$ORG" --arg api_count "$API_COUNT" \ + --arg a "$_in_A" --arg t "$_in_T" --arg c "$_in_C" \ + --arg b "$_in_B" --arg f "$_in_F" --arg e "$_in_E" --arg y "$_in_Y" \ + '{ + "_scene_release_name": $rls, + "_source": "api.deezer.com", + "_search_result_count": $api_count | tonumber, + "_artist": $a, + "_title": $t, + "_catno": $c, + "_barcode": $b, + "_format": $f, + "_edition": $e, + "_year": $y + }' + rm "$API_OUT" + continue + else if test $API_COUNT -ge 1 + jq -SMc --arg rls "$ORG" --arg api_count "$API_COUNT" \ + --arg a "$_in_A" --arg t "$_in_T" --arg c "$_in_C" \ + --arg b "$_in_B" --arg f "$_in_F" --arg e "$_in_E" --arg y "$_in_Y" \ + '. + { + "_scene_release_name": $rls, + "_source": "api.deezer.com", + "_search_result_count": $api_count | tonumber, + "_artist": $a, + "_title": $t, + "_catno": $c, + "_barcode": $b, + "_format": $f, + "_edition": $e, + "_year": $y + }' "$API_OUT" + end + rm "$API_OUT" +end