33 lines
656 B
Go
33 lines
656 B
Go
package youtubedl
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"os/exec"
|
|
"path"
|
|
)
|
|
|
|
type Client struct {
|
|
}
|
|
|
|
func New() (*Client, error) {
|
|
return &Client{}, install()
|
|
}
|
|
|
|
func (c *Client) Download(video, local string) error {
|
|
cmd := exec.Command("youtube-dl", "-f", "22", "-o", local, "--write-sub", "--write-auto-sub", "--sub-format", "srt", video)
|
|
log.Println(cmd.Path, cmd.Args)
|
|
out, err := cmd.CombinedOutput()
|
|
if err != nil {
|
|
err = fmt.Errorf("%v: %s", err, out)
|
|
return err
|
|
}
|
|
cmd = exec.Command("python3", "-m", "vtt_to_srt", path.Dir(local))
|
|
out, err = cmd.CombinedOutput()
|
|
if err != nil {
|
|
err = fmt.Errorf("%v: %s", err, out)
|
|
return err
|
|
}
|
|
return nil
|
|
}
|