feat:Adding remote mpc controller

This commit is contained in:
kar
2025-12-30 14:59:11 -06:00
commit 6d88af7df4
3 changed files with 128 additions and 0 deletions
Executable
BIN
View File
Binary file not shown.
+55
View File
@@ -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]))
}
+73
View File
@@ -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)
}