commit 231c37fcd6916457a95765185e03179a539f303d Author: xbl Date: Mon Mar 2 21:49:19 2026 +0100 init commie diff --git a/pausetoggle.bash b/pausetoggle.bash new file mode 100755 index 0000000..d4cd289 --- /dev/null +++ b/pausetoggle.bash @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +printf '{"command":["cycle","pause"]}\n' | socat - /tmp/mpv-socket diff --git a/style.css b/style.css new file mode 100644 index 0000000..62361f4 --- /dev/null +++ b/style.css @@ -0,0 +1,54 @@ +html, body { + margin: 0; + padding: 0; + height: 100%; + width: 100%; + font-family: sans-serif; + text-align: center; + background: #111; + font-size: 16px; + color: white; +} + +#cover { + width: 100%; + height: 100%; + object-fit: contain; + border-radius: 12px; +} + +#overlay { + position: fixed; + top: 5%; + left: 5%; + width: 90%; + height: 90%; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + justify-content: flex-end; + padding-bottom: 3%; + text-shadow: 0 0 10px black; +} + +/* Text glow */ +#overlay h1, #overlay h2 { + text-shadow: + 0 0 2px black, + 0 0 4px black, + 0 0 8px black; + color: #fff; + margin: 3px 0; +} + +h1 { + margin: 5px 0; + font-size: 0.69rem; +} + +h2 { + margin: 5px 0; + font-weight: normal; + font-size: 0.5rem; +} diff --git a/z4z-service.bash b/z4z-service.bash new file mode 100755 index 0000000..6155770 --- /dev/null +++ b/z4z-service.bash @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +WEB_ROOT="/home/xbl/z4z" +MPV_WATCHER="/home/xbl/z4z/z4z.bash" +HTTP_PORT=8080 + +# Start the MPV watcher in background +"$MPV_WATCHER" & + +# Start BusyBox httpd in foreground +exec busybox httpd -f -p "$HTTP_PORT" -h "$WEB_ROOT" diff --git a/z4z.bash b/z4z.bash new file mode 100755 index 0000000..d7e3e4a --- /dev/null +++ b/z4z.bash @@ -0,0 +1,79 @@ +#!/usr/bin/env bash + +# Paths +MPV_SOCKET="/tmp/mpv-socket" +WEB_ROOT="/home/xbl/z4z" +COVER_PATH="$WEB_ROOT/cover.jpg" +WEB_HTML="$WEB_ROOT/index.html" +INTERVAL=0.5 + +last_path="" + +while true; do + # Get current file path, pause state, state + path=$(echo '{ "command": ["get_property", "path"] }' | socat - "$MPV_SOCKET" 2>/dev/null | jq -r '.data') + paused=$(echo '{ "command": ["get_property", "pause"] }' | socat - "$MPV_SOCKET" 2>/dev/null | jq -r '.data // false') + + # If MPV is stopped + if [[ -z "$path" || "$path" == "null" ]]; then + last_path="" + # Write "Not Playing" HTML + cat > "$WEB_HTML" < + + + +Now Playing + + + +

Not Playing

+ + +EOF + sleep "$INTERVAL" + continue + fi + + # If track changed + if [[ "$path" != "$last_path" ]]; then + last_path="$path" + + # Extract cover art (first video stream / album art) + ffmpeg -y -i "$path" -map 0:v? -c copy "$COVER_PATH" 2>/dev/null || rm -f "$COVER_PATH" + + # Fetch metadata + metadata=$(echo '{ "command": ["get_property", "metadata"] }' | socat - "$MPV_SOCKET") + title=$(echo "$metadata" | jq -r '.data.title // .data.TITLE // empty') + artist=$(echo "$metadata" | jq -r '.data.artist // .data.ARTIST // empty') + album=$(echo "$metadata" | jq -r '.data.album // .data.ALBUM // empty') + year=$(echo "$metadata" | jq -r '.data.date // .data.DATE // empty') + + # Write index.html dynamically + cat > "$WEB_HTML" < + + + +Now Playing + + + +EOF + + # Add cover if exists + if [[ -f "$COVER_PATH" ]]; then + echo "\"Cover\"" >> "$WEB_HTML" + fi + + # Add metadata + echo "
" >> "$WEB_HTML" + echo "

$artist - $title

" >> "$WEB_HTML" + echo "

$album ($year)

" >> "$WEB_HTML" + echo "
" >> "$WEB_HTML" + + echo "" >> "$WEB_HTML" + fi + + sleep "$INTERVAL" +done diff --git a/z4z.service b/z4z.service new file mode 100644 index 0000000..8007394 --- /dev/null +++ b/z4z.service @@ -0,0 +1,13 @@ +[Unit] +Description=Zabbix mpv Watcher & Busybox +After=network.target + +[Service] +Type=simple +User=xbl +ExecStart=/home/xbl/z4z/z4z-service.bash +Restart=always +WorkingDirectory=/home/xbl/z4z + +[Install] +WantedBy=multi-user.target