From cc312e9054fd7a39a8937762247a1c72281c55e5 Mon Sep 17 00:00:00 2001 From: Arslaan Pathan Date: Tue, 6 Oct 2026 12:54:19 +1300 Subject: play/pause toggle --- backend.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'backend.py') diff --git a/backend.py b/backend.py index 91bb917..f8a0b24 100644 --- a/backend.py +++ b/backend.py @@ -1,12 +1,15 @@ from flask import Flask from pathlib import Path from dotenv import load_dotenv +import json import requests import random import subprocess import threading import os +MPV_SOCKET = "/tmp/remote-automation-mpv.sock" + app = Flask(__name__) print_lock = threading.Lock() @@ -47,10 +50,19 @@ def print_queue(): finally: print_lock.release() +def mpv_command(command): + with open(MPV_SOCKET, "w") as sock: + sock.write(json.dumps({"command": command}) + "\n") + sock.flush() + @app.get("/automate/music") def music(): global music_process + if music_process and music_process.poll() is None: + mpv_command(["cycle", "pause"]) + return {"status": "toggled"} + NAVIDROME_URL = os.environ["NAVIDROME_URL"] USERNAME = os.environ["NAVIDROME_USER"] PASSWORD = os.environ["NAVIDROME_PASSWORD"] @@ -97,7 +109,7 @@ def music(): params=stream_params, ).prepare() - # Stop previous song + # Stop previous song (in case it somehow survived earlier) if music_process and music_process.poll() is None: music_process.terminate() @@ -105,6 +117,7 @@ def music(): "mpv", "--no-video", "--audio-device=pipewire", + f"--input-ipc-server={MPV_SOCKET}", "--", stream_request.url, ]) @@ -147,12 +160,12 @@ def fav_song(): global music_process if music_process and music_process.poll() is None: music_process.terminate() - music_process = None music_process = subprocess.Popen([ "mpv", "--no-video", "--audio-device=pipewire", + f"--input-ipc-server={MPV_SOCKET}", "--", FAVOURITE, ]) -- cgit v1.2.3