works with ubuntu

This commit is contained in:
bel
2020-01-29 03:44:44 +00:00
commit ccfefd5b77
9 changed files with 285 additions and 0 deletions

32
youtubedl/client.go Normal file
View File

@@ -0,0 +1,32 @@
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
}

39
youtubedl/install.go Normal file
View File

@@ -0,0 +1,39 @@
package youtubedl
import "os/exec"
func install() error {
cmd := exec.Command("youtube-dl", "--version")
if err := cmd.Run(); err == nil {
return err
}
cmd = exec.Command("sudo", "pip3", "install", "youtube-dl")
if err := cmd.Run(); err == nil {
return err
}
return nil
}
func installYtdl() error {
cmd := exec.Command("youtube-dl", "--version")
if err := cmd.Run(); err == nil {
return err
}
cmd = exec.Command("sudo", "pip3", "install", "youtube-dl")
if err := cmd.Run(); err == nil {
return err
}
return nil
}
func installVTT() error {
cmd := exec.Command("python3", "-m", "vtt_to_srt")
if err := cmd.Run(); err == nil {
return err
}
cmd = exec.Command("sudo", "pip3", "install", "vtt_to_srt3")
if err := cmd.Run(); err == nil {
return err
}
return nil
}