package main import ( "flag" "strings" "bufio" "os" "git.sr.ht/~ark/ytparser" ) const defaultFormat string = "channel: {{.ChannelTitle}}, title: {{.Title}}, url: {{.Url}}" func readStdin() string { var b strings.Builder scanner := bufio.NewScanner(os.Stdin) for scanner.Scan() { b.WriteString(scanner.Text()) } if err := scanner.Err(); err != nil { panic(err) } return b.String() } func main() { format := flag.String("f", defaultFormat, "The format to print items in. Follows go template syntax. See metube(5) for more info.") page := flag.Int("p", 0, "The page to get") lang := flag.String("l", "en", "The language to search in (follows youtube's language codes: en, fr, de, ja...)") order := flag.String("o", "relevance", "The criterion to use for the search order (relevance, date, views, rating)") flag.Parse() if *format == "-" { *format = readStdin() } items, err := ytparser.Search(strings.Join(flag.Args(), " "), *page, *lang, *order) if err != nil { panic(err) } ytparser.PrintItems(items, *format) }