Pārlūkot izejas kodu

Added tts back in and a sound queue

zveinn 10 mēneši atpakaļ
vecāks
revīzija
e39e76c541
3 mainītis faili ar 57 papildinājumiem un 6 dzēšanām
  1. 34 0
      main.go
  2. 19 2
      twitch-client.go
  3. 4 4
      variables.go

+ 34 - 0
main.go

@@ -22,6 +22,37 @@ var (
 	MP3Map       = make(map[string]string)
 	EmoteMap     = make(map[string]helix.Emote)
 )
+
+var SoundQueue = make(chan SoundEvent, 1000)
+
+type SoundEvent struct {
+	// mp3/tts
+	T    string
+	Data string
+}
+
+func ProcessSoundEvents() {
+	defer func() {
+		r := recover()
+		if r != nil {
+			log.Println(r)
+		}
+		monitor <- 7
+	}()
+
+	for s := range SoundQueue {
+		fmt.Printf("SOUND QUEUE: len(%d), max(%d)", len(SoundQueue), cap(SoundQueue))
+		switch s.T {
+		case "mp3":
+			PlayMP3(s.Data)
+		case "tts":
+			PlayTTS(s.Data)
+		default:
+			fmt.Println("UKNOWN SOUND EVENT", s)
+		}
+	}
+}
+
 var TWITCH_CLIENT = new(IRC_CLIENT)
 
 func main() {
@@ -55,6 +86,7 @@ func main() {
 
 	GetGlobalEmotes()
 	TWITCH_CLIENT.GetAllChannelEmotes()
+	go ProcessSoundEvents()
 
 	// go RenewTokensLoop()
 
@@ -72,6 +104,8 @@ func main() {
 				go RenewTokensLoop()
 			} else if ID == 1337 {
 				go TWITCH_CLIENT.POST_INFO()
+			} else if ID == 11 {
+				go ProcessSoundEvents()
 			}
 
 		default:

+ 19 - 2
twitch-client.go

@@ -1,6 +1,7 @@
 package main
 
 import (
+	"fmt"
 	"io"
 	"log"
 	"math/rand"
@@ -127,6 +128,21 @@ func (C *IRC_CLIENT) Connect() {
 	}
 }
 
+func PlaceEventOnSoundQueue(t string, data string) {
+	select {
+	case SoundQueue <- SoundEvent{
+		T:    t,
+		Data: data,
+	}:
+	default:
+		fmt.Println("SOUND QUEUE FULL")
+		fmt.Println("SOUND QUEUE FULL")
+		fmt.Println("SOUND QUEUE FULL")
+		fmt.Println("SOUND QUEUE FULL")
+	}
+	return
+}
+
 func (C *IRC_CLIENT) JoinChannels() {
 	for _, v := range C.ChannelMap {
 		log.Println("JOINING CHANNEL: ", v)
@@ -195,7 +211,8 @@ func ProcessMessage(msg tirc.PrivateMessage) {
 
 	mp3, ok := MP3Map[msg.CustomRewardID]
 	if ok {
-		go PlaySound(mp3)
+		go PlaceEventOnSoundQueue("mp3", mp3)
+		// go PlayMP3(mp3)
 		return
 	}
 
@@ -291,7 +308,7 @@ func RandQuote(msg *tirc.PrivateMessage) {
 	TWITCH_CLIENT.Reply(selectedMSG.User.DisplayName+" '' "+outMSG+" '' - "+selectedMSG.Time.Format("Mon 02 Jan 15:04:05 MST 2006"), "")
 }
 
-func PlaySound(tag string) {
+func PlayMP3(tag string) {
 	// cmd := exec.Command("ffplay", "-v", "0", "-nodisp", "-autoexit", "./mp3/"+tag+".mp3")
 	// out, err := cmd.CombinedOutput()
 	// if err != nil {

+ 4 - 4
variables.go

@@ -70,10 +70,10 @@ func InitCommands() {
 }
 
 func CheckCustomReward(U *User, msg tirc.PrivateMessage) (success bool) {
-	// if msg.CustomRewardID == "8444968a-be3c-4d89-b6e7-dbbdedf64e1f" {
-	// 	go PlayTTS(msg.Message)
-	// 	return true
-	// }
+	if msg.CustomRewardID == "8444968a-be3c-4d89-b6e7-dbbdedf64e1f" {
+		go PlaceEventOnSoundQueue("tts", msg.Message)
+		return true
+	}
 	if msg.CustomRewardID == "323be4d7-63e6-4f2d-ad99-246f19c9ebd7" {
 		_ = IncrementUserPoints(U, 100)
 		TWITCH_CLIENT.ReplyToUser(msg.User.DisplayName, "Redeemed 100 points!", "")