From b9a83037559d5d550fd5d450a02d07ff8cfcf630 Mon Sep 17 00:00:00 2001 From: kar Date: Wed, 31 Dec 2025 03:12:21 -0600 Subject: [PATCH] feat: Adding mpc list --- server.go | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/server.go b/server.go index 655e467..03a8a90 100644 --- a/server.go +++ b/server.go @@ -2,6 +2,7 @@ package main import ( //"fmt" + "fmt" "log" "net" "os" @@ -50,10 +51,14 @@ func menuController(conn net.Conn) { out = infoSong(conn) case "next": out = nextSong(conn) + case "addsong": + addSong(conn) } - _, err = conn.Write([]byte(out)) - if err != nil { - log.Println("Error al enviar la informacion", err) + if out != "" { + _, err = conn.Write([]byte(out)) + if err != nil { + log.Println("Error al enviar la informacion", err) + } } } @@ -92,3 +97,25 @@ func nextSong(conn net.Conn) string { } return string(output) } + +func addSong(conn net.Conn) { + defer conn.Close() + cmd := exec.Command("mpc", "listall") + cmd.Stdout = conn + cmd.Run() + if tcpConn, ok := conn.(*net.TCPConn); ok { + tcpConn.CloseWrite() + } + bufSong := make([]byte, 1024) + n, err := conn.Read(bufSong) + if err != nil { + log.Println("Error al recibir cancion", err) + } + fmt.Printf("%s, agregado por %s", strings.TrimSpace(string(bufSong[:n])), conn.RemoteAddr()) + cmdmpc := exec.Command("bash", "-c", fmt.Sprintf("mpc insert %q && mpc next >/dev/null && mpc play", strings.TrimSpace(string(bufSong[:n])))) + _, err = cmdmpc.CombinedOutput() + if err != nil { + log.Println("Error al reproducir cancion", err) + } + conn.Close() +}