#!/bin/bash
NJS_DIR="/var/www/files/njs"
OUTPUT="$NJS_DIR/index.json"
BASE_URL="https://files.4m3.ru/njs/"

json_str() { printf '"%s"' "$(sed 's/\\/\\\\/g; s/"/\\"/g' <<< "$1")"; }

echo "[" > "$OUTPUT"
first=true
for d in "$NJS_DIR"/*/; do
  [ -d "$d" ] || continue
  name=$(basename "$d")
  files=()
  while IFS= read -r f; do files+=("$f"); done < <(find "$d" -type f -iname "*.mp3" | sort)
  [ ${#files[@]} -eq 0 ] && continue
  $first || echo "," >> "$OUTPUT"
  first=false
  echo "  {\"title\": $(json_str "$name"), \"cover\": $(json_str "$([ -f "$d/cover.webp" ] && echo "cover.webp")"), \"tracks\": [" >> "$OUTPUT"
  ft=true
  for f in "${files[@]}"; do
    fn=$(basename "$f")
    url="${BASE_URL}${f#$NJS_DIR/}"
    url=$(printf '%s' "$url" | sed 's/ /%20/g')
    $ft || echo "," >> "$OUTPUT"
    ft=false
    echo "    {\"filename\": $(json_str "$fn"), \"url\": \"$url\"}" >> "$OUTPUT"
  done
  echo "  ]}" >> "$OUTPUT"
done
echo "]" >> "$OUTPUT"
