package dl import ( "bufio" "log" "os/exec" "sync" ) func List(channelId string) { cmd := exec.Command("yt-dlp", "--skip-download", "--force-write-archive", "--download-archive", "test.txt", channelId, ) stdout, err := cmd.StdoutPipe() if err != nil { log.Fatal(err) } stderr, err := cmd.StderrPipe() if err != nil { log.Fatal(err) } log.Printf("Running yt-dlp for: %s", d.Url) var wg sync.WaitGroup wg.Add(2) go func() { defer wg.Done() scanner := bufio.NewScanner(stdout) for scanner.Scan() { log.Printf("%s\n", scanner.Text()) } }() go func() { defer wg.Done() scanner := bufio.NewScanner(stderr) for scanner.Scan() { log.Printf("%s\n", scanner.Text()) } }() err = cmd.Start() if err != nil { log.Fatal(err) } wg.Wait() err = cmd.Wait() if err != nil { log.Printf("Error: %s\n", err) } }