95 lines
1.8 KiB
Go
95 lines
1.8 KiB
Go
package main
|
|
|
|
import (
|
|
//"fmt"
|
|
"log"
|
|
"net"
|
|
"os"
|
|
"os/exec"
|
|
"strings"
|
|
|
|
"github.com/joho/godotenv"
|
|
)
|
|
|
|
func main() {
|
|
err := godotenv.Load()
|
|
if err != nil {
|
|
log.Println("Error al leer .env", err)
|
|
os.Exit(1)
|
|
}
|
|
IP_SERVER := os.Getenv("IP_SERVER")
|
|
|
|
listener, err := net.Listen("tcp", IP_SERVER)
|
|
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)
|
|
case "next":
|
|
out = nextSong(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)
|
|
}
|
|
|
|
func nextSong(conn net.Conn) string {
|
|
cmd := exec.Command("mpc", "next")
|
|
output, err := cmd.CombinedOutput()
|
|
if err != nil {
|
|
log.Println("Error al reproducir siguiente cancion", err)
|
|
}
|
|
return string(output)
|
|
}
|