reorganized code

This commit is contained in:
2025-07-29 12:04:14 +02:00
parent 5bfb76fadb
commit 8bbc57ffb2
4 changed files with 213 additions and 104 deletions

View File

@@ -3,25 +3,55 @@
# Helper methods to retrieve from cache, if it exists, and otherwise populate
# cache and retrieve
__mb_artist_cache_or_fetch() {
if ! cache_get_artist_mb "$1"; then
__api_mb_get_artist "$1" | cache_put_artist_mb "$1"
cache_get_artist_mb "$1"
if ! cache_get_artist "$1"; then
api_mb_artist "$1" | cache_put_artist "$1"
cache_get_artist "$1"
fi
}
__mb_releasegroup_cache_or_fetch() {
if ! cache_get_releasegroup "$1"; then
api_mb_releasegroup "$1" | cache_put_releasegroup "$1"
cache_get_releasegroup "$1"
fi
}
__mb_release_cache_or_fetch() {
if ! cache_get_release "$1"; then
api_mb_release "$1" | cache_put_release "$1"
cache_get_release "$1"
fi
}
__mb_artist_cache_or_fetch_releasegroups() {
if ! cache_get_artist_mb_releasegroups "$1"; then
__api_mb_browse_release_groups "$1" | cache_put_artist_mb_releasegroups "$1"
rg="$(cache_get_artist_mb_releasegroups "$1")"
if ! cache_get_artist_releasegroups "$1"; then
api_mb_browse_artist_releasegroups "$1" | cache_put_artist_releasegroups "$1"
rg="$(cache_get_artist_releasegroups "$1")"
total=$(printf "%s" "$rg" | $JQ -r '."release-group-count"')
seen=$MB_BROWSE_STEPS
while [ "$total" -gt "$seen" ]; do
# Fetch remaning release groups, and append to cache
sleep 1 # Make sure we don't get blocked (we prefer not to handle failed requests...)
__api_mb_browse_release_groups "$1" "$seen" | cache_append_artist_mb_releasegroups "$1"
api_mb_browse_artist_releasegroups "$1" "$seen" | cache_append_artist_releasegroups "$1"
seen=$((seen + MB_BROWSE_STEPS))
done
cache_get_artist_mb_releasegroups "$1"
cache_get_artist_releasegroups "$1"
fi
}
__mb_releasegroup_cache_or_fetch_releases() {
if ! cache_get_releasegroup_releases "$1"; then
api_mb_browse_releasegroup_releases "$1" | cache_put_releasegroup_releases "$1"
releases="$(cache_get_releasegroup_releases "$1")"
total=$(printf "%s" "$releases" | $JQ -r '."release-count"')
seen=$MB_BROWSE_STEPS
while [ "$total" -gt "$seen" ]; do
# Fetch remaning releases, and append to cache
sleep 1 # Make sure we don't get blocked (we prefer not to handle failed requests...)
api_mb_browse_releasegroup_releases "$1" "$seen" | cache_append_releasegroup_releases "$1"
seen=$((seen + MB_BROWSE_STEPS))
done
cache_get_releasegroup_releases "$1"
fi
}
@@ -38,10 +68,10 @@ mb_artist_wikidata() {
wikidataid=$(mb_artist "$1" |
$JQ -r '.relations |
map(select(.type=="wikidata")) |
.[0].url.resource' |
.[0].url.resource // ""' |
awk -F "/" '{print $NF}')
[ ! "$wikidataid" ] && return || [ "$wikidataid" = "null" ] && return
__api_wikidata_get_sitelinks "$wikidataid" | cache_put_artist_wikidata "$1"
[ ! "$wikidataid" ] && return
api_wikidata_sitelinks "$wikidataid" | cache_put_artist_wikidata "$1"
cache_get_artist_wikidata "$1"
fi
}
@@ -59,10 +89,10 @@ mb_artist_enwikipedia() {
# take the second route.
wikidata=$(mb_artist_wikidata "$1" || true)
wikiid=$(printf "%s" "$wikidata" |
$JQ -r '.enwiki.url' |
$JQ -r '.enwiki.url // ""' |
awk -F "/" '{print $NF}')
[ ! "$wikiid" ] && return || [ "$wikiid" = "null" ] && return
__api_wikipedia_en_get_summary "$wikiid" | cache_put_artist_enwikipedia "$1"
[ ! "$wikiid" ] && return
api_wikipedia_en_summary "$wikiid" | cache_put_artist_enwikipedia "$1"
cache_get_artist_enwikipedia "$1"
fi
}
@@ -74,10 +104,10 @@ mb_artist_discogs() {
discogsid=$(mb_artist "$1" |
$JQ -r '.relations |
map(select(.type=="discogs")) |
.[0].url.resource' |
.[0].url.resource // ""' |
awk -F "/" '{print $NF}')
[ ! "$discogsid" ] && return || [ "$discogsid" = "null" ] && return
__api_discogs_get_artist "$discogsid" | cache_put_artist_discogs "$1"
[ ! "$discogsid" ] && return
api_discogs_artist "$discogsid" | cache_put_artist_discogs "$1"
cache_get_artist_discogs "$1"
fi
}
@@ -87,3 +117,17 @@ mb_artist_discogs() {
mb_artist_releasegroups() {
__mb_artist_cache_or_fetch_releasegroups "$1"
}
# Get MusicBrainz json for release group
# @argument $1: MusicBrainz Release-Group ID
mb_releasegroup() {
__mb_releasegroup_cache_or_fetch "$1"
}
mb_releasegroup_releases() {
__mb_releasegroup_cache_or_fetch_releases "$1"
}
mb_release() {
__mb_release_cache_or_fetch "$1"
}