init commie
This commit is contained in:
2
pausetoggle.bash
Executable file
2
pausetoggle.bash
Executable file
@ -0,0 +1,2 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
printf '{"command":["cycle","pause"]}\n' | socat - /tmp/mpv-socket
|
||||||
54
style.css
Normal file
54
style.css
Normal file
@ -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;
|
||||||
|
}
|
||||||
11
z4z-service.bash
Executable file
11
z4z-service.bash
Executable file
@ -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"
|
||||||
79
z4z.bash
Executable file
79
z4z.bash
Executable file
@ -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" <<EOF
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Now Playing</title>
|
||||||
|
<link rel="stylesheet" href="/style.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h2>Not Playing</h2>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
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" <<EOF
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Now Playing</title>
|
||||||
|
<link rel="stylesheet" href="/style.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Add cover if exists
|
||||||
|
if [[ -f "$COVER_PATH" ]]; then
|
||||||
|
echo "<img id=\"cover\" src=\"/cover.jpg\" alt=\"Cover\">" >> "$WEB_HTML"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Add metadata
|
||||||
|
echo "<div id=\"overlay\">" >> "$WEB_HTML"
|
||||||
|
echo "<h1>$artist - $title</h1>" >> "$WEB_HTML"
|
||||||
|
echo "<h2>$album ($year)</h2>" >> "$WEB_HTML"
|
||||||
|
echo "</div>" >> "$WEB_HTML"
|
||||||
|
|
||||||
|
echo "</body></html>" >> "$WEB_HTML"
|
||||||
|
fi
|
||||||
|
|
||||||
|
sleep "$INTERVAL"
|
||||||
|
done
|
||||||
13
z4z.service
Normal file
13
z4z.service
Normal file
@ -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
|
||||||
Reference in New Issue
Block a user