fix: loading local data
This commit is contained in:
@@ -48,7 +48,7 @@ if [ "${MUSICDIR:-}" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "${1:-}" = "--load-local" ]; then
|
if [ "${1:-}" = "--load-local" ]; then
|
||||||
load_local
|
load_local || err "Failed to load local data"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@@ -1,7 +1,10 @@
|
|||||||
|
ERR="\033[38;5;196m"
|
||||||
|
INFO="\033[38;5;75m"
|
||||||
|
OFF="\033[m"
|
||||||
err() {
|
err() {
|
||||||
echo "ERROR: ${1:-}"
|
echo "${ERR}ERROR:${OFF} ${1:-}"
|
||||||
}
|
}
|
||||||
|
|
||||||
info() {
|
info() {
|
||||||
echo "Info: ${1:-}"
|
echo "${INFO}Info:${OFF} ${1:-}"
|
||||||
}
|
}
|
||||||
|
@@ -53,21 +53,38 @@ __batch_load_missing() {
|
|||||||
done <"$2"
|
done <"$2"
|
||||||
if [ -s "$tmpf" ]; then
|
if [ -s "$tmpf" ]; then
|
||||||
lines=$(wc -l "$tmpf" | cut -d ' ' -f 1)
|
lines=$(wc -l "$tmpf" | cut -d ' ' -f 1)
|
||||||
[ "$lines" -gt 0 ] && info "Caching $lines items..."
|
if [ "$lines" -gt 0 ]; then
|
||||||
while IFS= read -r mbid; do
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
"$TYPE_ARTIST")
|
"$TYPE_ARTIST")
|
||||||
mb_artist "$mbid" >/dev/null
|
tt="artists"
|
||||||
;;
|
;;
|
||||||
"$TYPE_RELEASEGROUP")
|
"$TYPE_RELEASEGROUP")
|
||||||
mb_releasegroup "$mbid" >/dev/null
|
tt="release groups"
|
||||||
;;
|
;;
|
||||||
"$TYPE_RELEASE")
|
"$TYPE_RELEASE")
|
||||||
mb_release "$mbid" >/dev/null
|
tt="releases"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
sleep 1
|
info "Fetching $lines missing $tt"
|
||||||
done <"$tmpf"
|
cnt=0
|
||||||
|
while IFS= read -r mbid; do
|
||||||
|
case "$1" in
|
||||||
|
"$TYPE_ARTIST")
|
||||||
|
mb_artist "$mbid" >/dev/null
|
||||||
|
;;
|
||||||
|
"$TYPE_RELEASEGROUP")
|
||||||
|
mb_releasegroup "$mbid" >/dev/null
|
||||||
|
;;
|
||||||
|
"$TYPE_RELEASE")
|
||||||
|
mb_release "$mbid" >/dev/null
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
cnt=$((cnt + 1))
|
||||||
|
printf "\033[K\r%d/%d (%s)" "$cnt" "$lines" "$mbid"
|
||||||
|
sleep 1
|
||||||
|
done <"$tmpf"
|
||||||
|
printf "\n"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
rm -f "$tmpf"
|
rm -f "$tmpf"
|
||||||
}
|
}
|
||||||
@@ -78,23 +95,29 @@ LOCALDATA_RELEASEGROUPS="$LOCALDATADIR/releasegroups"
|
|||||||
LOCALDATA_RELEASES="$LOCALDATADIR/releases"
|
LOCALDATA_RELEASES="$LOCALDATADIR/releases"
|
||||||
|
|
||||||
# Load local music
|
# Load local music
|
||||||
# input $1: directory for temporary files
|
|
||||||
load_local() {
|
load_local() {
|
||||||
[ -d "$LOCALDATADIR" ] || mkdir -p "$LOCALDATADIR"
|
[ -d "$LOCALDATADIR" ] || mkdir -p "$LOCALDATADIR"
|
||||||
find "$MUSICDIR" -type f -name "$DECORATION_FILENAME" -exec cat {} \+ | $JQ -r '.releaseid' >"$LOCALDATA_RELEASES"
|
tmpreleases=$(mktemp)
|
||||||
__batch_load_missing "$TYPE_RELEASE" "$LOCALDATA_RELEASES"
|
[ -f "$tmpreleases" ] || exit 1
|
||||||
|
find "$MUSICDIR" -type f -name "$DECORATION_FILENAME" -print0 |
|
||||||
|
xargs -0 -I {} \
|
||||||
|
$JQ -r '.releaseid+"\t"+input_filename' {} |
|
||||||
|
tee "$LOCALDATA_RELEASES" |
|
||||||
|
cut -d "$(printf '\t')" -f 1 >"$tmpreleases"
|
||||||
|
__batch_load_missing "$TYPE_RELEASE" "$tmpreleases"
|
||||||
# Get release groups and album artists
|
# Get release groups and album artists
|
||||||
while IFS= read -r rid; do
|
while IFS= read -r rid; do
|
||||||
mb=$(mb_release "$rid")
|
mb=$(mb_release "$rid")
|
||||||
echo "$mb" | $JQ -r '."release-group".id' >>"$LOCALDATA_RELEASEGROUPS"
|
echo "$mb" | $JQ -r '."release-group".id' >>"$LOCALDATA_RELEASEGROUPS"
|
||||||
echo "$mb" | $JQ -r '."release-group"."artist-credit" | map(.artist.id) | join("\n")' >>"$LOCALDATA_ARTISTS"
|
echo "$mb" | $JQ -r '."release-group"."artist-credit" | map(.artist.id) | join("\n")' >>"$LOCALDATA_ARTISTS"
|
||||||
done <"$LOCALDATA_RELEASES"
|
done <"$tmpreleases"
|
||||||
tf=$(mktemp)
|
tf=$(mktemp)
|
||||||
sort "$LOCALDATA_RELEASEGROUPS" | uniq >"$tf" && mv "$tf" "$LOCALDATA_RELEASEGROUPS"
|
sort "$LOCALDATA_RELEASEGROUPS" | uniq >"$tf" && mv "$tf" "$LOCALDATA_RELEASEGROUPS"
|
||||||
sort "$LOCALDATA_ARTISTS" | uniq >"$tf" && mv "$tf" "$LOCALDATA_ARTISTS"
|
sort "$LOCALDATA_ARTISTS" | uniq >"$tf" && mv "$tf" "$LOCALDATA_ARTISTS"
|
||||||
# Populate cache with missing data
|
# Populate cache with missing data
|
||||||
__batch_load_missing "$TYPE_RELEASEGROUP" "$LOCALDATA_RELEASEGROUPS"
|
__batch_load_missing "$TYPE_RELEASEGROUP" "$LOCALDATA_RELEASEGROUPS"
|
||||||
__batch_load_missing "$TYPE_ARTIST" "$LOCALDATA_ARTISTS"
|
__batch_load_missing "$TYPE_ARTIST" "$LOCALDATA_ARTISTS"
|
||||||
|
rm -f "$tmpreleases"
|
||||||
}
|
}
|
||||||
|
|
||||||
# List all releases
|
# List all releases
|
||||||
|
Reference in New Issue
Block a user