Split-out and refactor MPD status parser
[khatus.git] / bin / khatus_parse_mpd_status
diff --git a/bin/khatus_parse_mpd_status b/bin/khatus_parse_mpd_status
new file mode 100755 (executable)
index 0000000..1088b4e
--- /dev/null
@@ -0,0 +1,39 @@
+#! /usr/bin/awk -f
+
+# Msg BEGINs
+/^OK MPD / { delete status; next}
+
+# Msg ENDs
+/^OK$/ {
+    split(status["time"], time, ":")
+    seconds_current = time[1]
+    seconds_total   = time[2]
+
+    hours = int(seconds_current / 60 / 60);
+    secs_beyond_hours = seconds_current - (hours * 60 * 60);
+    mins = int(secs_beyond_hours / 60);
+    secs = secs_beyond_hours - (mins * 60);
+
+    if (hours > 0) {
+        current_time = sprintf("%d:%.2d:%.2d", hours, mins, secs)
+    } else {
+        current_time = sprintf("%.2d:%.2d", mins, secs)
+    }
+
+    if (seconds_total > 0) {
+        time_percentage = (seconds_current / seconds_total) * 100
+        current_percentage = sprintf("%d%%", time_percentage)
+    } else {
+        current_percentage = "~"
+    }
+
+    printf("%s %s %s\n", status["state"], current_time, current_percentage)
+    next
+}
+
+# Msg content
+/^[a-z]+: / {
+    sub(":$", "", $1)
+    status[$1] = $2
+    next
+}
This page took 0.039569 seconds and 4 git commands to generate.