works with ubuntu
This commit is contained in:
32
youtubedl/client.go
Normal file
32
youtubedl/client.go
Normal 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
39
youtubedl/install.go
Normal 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
|
||||
}
|
||||
Reference in New Issue
Block a user