commit 6d88af7df4548adc93daf3b4377b903ffe50da1d Author: kar Date: Tue Dec 30 14:59:11 2025 -0600 feat:Adding remote mpc controller diff --git a/client b/client new file mode 100755 index 0000000..b460a60 Binary files /dev/null and b/client differ diff --git a/client.go b/client.go new file mode 100644 index 0000000..0fe590d --- /dev/null +++ b/client.go @@ -0,0 +1,55 @@ +package main +import ( + "fmt" + "net" + "os" + "log" + "slices" +) +const ( + help = +`Uso del programa. rrmpc [COMMAND] +play Reproduce la cancion que se encuentre en pausa +pause Pausa la cancion que se encuentre en reproduccion +info Muestra informacion del estado de mpd +` +) + + +func main() { + if (len(os.Args)) != 2 { + fmt.Printf("%s", help) + os.Exit(1) + } + + comandosPermitidos := []string{"play", "pause", "info"} + var comando string + if slices.Contains(comandosPermitidos, os.Args[1]) { + comando = os.Args[1] + } else { + fmt.Printf("%s", help) + os.Exit(1) + } + conn, err := net.Dial("tcp", "192.168.2.10:2810") + if err != nil { + log.Println("Error al establecer la conexion", err) + } + defer conn.Close() + handleConn(conn, comando) +} + + +func handleConn(conn net.Conn, comando string) { + defer conn.Close() + _, err := conn.Write([]byte(comando)) + if err != nil { + log.Println("Error al enviar comando", err) + } + respuestaRaw := make([]byte, 1024) + n, err := conn.Read(respuestaRaw) + if err != nil { + log.Println("Error al recibir respuesta", err) + } + fmt.Printf("%s", string(respuestaRaw[:n])) +} + diff --git a/server.go b/server.go new file mode 100644 index 0000000..57c2fc7 --- /dev/null +++ b/server.go @@ -0,0 +1,73 @@ +package main + +import ( + //"fmt" + "log" + "net" + "os/exec" + "strings" +) + +func main() { + listener, err := net.Listen("tcp", "0.0.0.0:2810") + if err != nil { + log.Println("Error al abrir el puerto.", err) + } + defer listener.Close() + for { + conn, err := listener.Accept() + if err != nil { + log.Println("Error al aceptar la conexion.", err) + } + go menuController(conn) + } +} + +func menuController(conn net.Conn) { + var out string + comandoRaw := make([]byte, 1024) + n, err := conn.Read(comandoRaw) + if err != nil { + log.Println(err) + } + comandoString := strings.TrimSpace(string(comandoRaw[:n])) + switch comandoString { + case "play": + out = playSong(conn) + case "pause": + out = pauseSong(conn) + case "info": + out = infoSong(conn) + } + _, err = conn.Write([]byte(out)) + if err != nil { + log.Println("Error al enviar la informacion", err) + } +} + +func playSong(conn net.Conn) string { + cmd := exec.Command("mpc", "play") + output, err := cmd.CombinedOutput() + if err != nil { + log.Println("Error al reproducir musica", err) + } + return string(output) +} + +func pauseSong(conn net.Conn) string { + cmd := exec.Command("mpc", "pause") + output, err := cmd.CombinedOutput() + if err != nil { + log.Println("Error al pausar musica", err) + } + return string(output) +} + +func infoSong(conn net.Conn) string { + cmd := exec.Command("mpc") + output, err := cmd.CombinedOutput() + if err != nil { + log.Println("Error al solicitar informacion", err) + } + return string(output) +}