75 lines
1.6 KiB
Go
75 lines
1.6 KiB
Go
|
|
package main
|
||
|
|
|
||
|
|
import (
|
||
|
|
"flag"
|
||
|
|
"fmt"
|
||
|
|
"strings"
|
||
|
|
|
||
|
|
"github.com/charmbracelet/log"
|
||
|
|
"github.com/nicklaw5/helix/v2"
|
||
|
|
)
|
||
|
|
|
||
|
|
// Comma separated strings
|
||
|
|
type CSStrings []string
|
||
|
|
|
||
|
|
func searchHelp() {
|
||
|
|
fmt.Print("\nTwitch category commands. Valid commands are:\n\n")
|
||
|
|
}
|
||
|
|
|
||
|
|
func search(client *helix.Client, args []string) {
|
||
|
|
var params = helix.StreamsParams{}
|
||
|
|
|
||
|
|
fs := flag.NewFlagSet("search", flag.ContinueOnError)
|
||
|
|
|
||
|
|
csvValue := func(in string) (s []string) {
|
||
|
|
s = strings.Split(in, ",")
|
||
|
|
for i := range s {
|
||
|
|
s[i] = strings.TrimSpace(s[i])
|
||
|
|
}
|
||
|
|
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
langs := fs.String("lang", "en", "Comma separated list of languages (e.g., en,de,etc).")
|
||
|
|
games := fs.String("games", "", "List of games to search in. (IDs only for now)")
|
||
|
|
streamType := fs.String("type", "all", "Type of videos to return (e.g., all, live, or vodcast)")
|
||
|
|
|
||
|
|
_ = client
|
||
|
|
|
||
|
|
if err := fs.Parse(args); err != nil {
|
||
|
|
log.Fatalf("Couldn't parse arguments to search: %v", err)
|
||
|
|
}
|
||
|
|
|
||
|
|
params.Language = csvValue(*langs)
|
||
|
|
params.GameIDs = csvValue(*games)
|
||
|
|
params.Type = *streamType
|
||
|
|
log.Infof("Params: %+v", params)
|
||
|
|
|
||
|
|
searchWithParams(client, ¶ms)
|
||
|
|
|
||
|
|
// if len(args) < 1 {
|
||
|
|
// log.Error("Insufficient arguments.")
|
||
|
|
// searchHelp()
|
||
|
|
// return
|
||
|
|
// }
|
||
|
|
}
|
||
|
|
|
||
|
|
func searchWithParams(client *helix.Client, params *helix.StreamsParams) {
|
||
|
|
resp, err := client.GetStreams(params)
|
||
|
|
if err != nil {
|
||
|
|
log.Info("Search error: %v", err)
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
// Print what we've got
|
||
|
|
for _, stream := range resp.Data.Streams {
|
||
|
|
fmt.Printf(
|
||
|
|
"%v is streaming %v for %v viewers\n",
|
||
|
|
stream.UserName,
|
||
|
|
stream.GameName,
|
||
|
|
stream.ViewerCount,
|
||
|
|
)
|
||
|
|
fmt.Printf("%v\n\n", stream.Title)
|
||
|
|
}
|
||
|
|
}
|