Compare commits

..

No commits in common. "02baccf0fc1581e5f078722ca8d9ff1f88851681" and "1a8351b3e5890cb42219c1de0963716b1adc7b99" have entirely different histories.

2 changed files with 0 additions and 101 deletions

View file

@ -25,103 +25,6 @@ type Download struct {
Metadata bool
}
func UpgradeYtDlp(cmd string) error {
resolved, err := resolveYtDlpPath(cmd)
if err != nil {
return err
}
if strings.Contains(resolved, filepath.Join("pipx", "venvs")) {
return runLoggedCommand("pipx", exec.Command("pipx", "upgrade-all"))
}
return runLoggedCommand("yt-dlp", exec.Command(resolved, "--update"))
}
func resolveYtDlpPath(cmd string) (string, error) {
if cmd == "" {
cmd = "yt-dlp"
}
if filepath.IsAbs(cmd) {
return evalPath(cmd)
}
if strings.Contains(cmd, string(os.PathSeparator)) {
abs, err := filepath.Abs(cmd)
if err != nil {
return "", fmt.Errorf("resolve yt-dlp path: %w", err)
}
return evalPath(abs)
}
located, err := exec.LookPath(cmd)
if err != nil {
return "", fmt.Errorf("locate yt-dlp: %w", err)
}
return evalPath(located)
}
func evalPath(path string) (string, error) {
resolved, err := filepath.EvalSymlinks(path)
if err != nil {
return "", fmt.Errorf("resolve yt-dlp symlink: %w", err)
}
return resolved, nil
}
func runLoggedCommand(tag string, cmd *exec.Cmd) error {
stdout, err := cmd.StdoutPipe()
if err != nil {
return fmt.Errorf("%s stdout: %w", tag, err)
}
stderr, err := cmd.StderrPipe()
if err != nil {
return fmt.Errorf("%s stderr: %w", tag, err)
}
log.Printf("[%s] running %s %v\n", tag, cmd.Path, cmd.Args[1:])
var wg sync.WaitGroup
wg.Add(2)
go func() {
defer wg.Done()
scanner := bufio.NewScanner(stdout)
for scanner.Scan() {
log.Printf("[%s] %s\n", tag, scanner.Text())
}
if err := scanner.Err(); err != nil {
log.Printf("[%s] stdout error: %v\n", tag, err)
}
}()
go func() {
defer wg.Done()
scanner := bufio.NewScanner(stderr)
for scanner.Scan() {
log.Printf("[%s] %s\n", tag, scanner.Text())
}
if err := scanner.Err(); err != nil {
log.Printf("[%s] stderr error: %v\n", tag, err)
}
}()
if err := cmd.Start(); err != nil {
return fmt.Errorf("%s start: %w", tag, err)
}
wg.Wait()
if err := cmd.Wait(); err != nil {
return fmt.Errorf("%s failed: %w", tag, err)
}
return nil
}
func Youtube(d Download, p config.Provider) {
if p.Bgutil_server != "" && p.Po_token != "" {
log.Fatal("please only provide bgutil_server OR po_token, not both")

View file

@ -17,10 +17,6 @@ import (
func run(cfg config.Config) {
provider := cfg.Provider["youtube"]
if err := dl.UpgradeYtDlp(provider.Cmd); err != nil {
log.Fatalf("failed to ensure yt-dlp is up to date: %v", err)
}
opml, err := format.OpmlLoad(provider.Opml_file)
if err != nil {
panic(err)