package ytdlp import ( "bytes" "context" "encoding/json" "os/exec" ) func (c *Client) Info(ctx context.Context, url string) (*Info, error) { args := []string{ "-q", "-J", url, } cmd := exec.CommandContext(ctx, c.binary, args...) var stdout bytes.Buffer var stderr bytes.Buffer cmd.Stdout = &stdout cmd.Stderr = &stderr err := cmd.Run() if err != nil { return nil, err } var info Info err = json.Unmarshal(stdout.Bytes(), &info) if err != nil { return nil, err } return &info, nil }