Files

41 lines
1.1 KiB
Go

package downloaders
import (
"fmt"
"os"
"os/exec"
logger "git.site.quack-lab.dev/dave/cylogger"
)
type YTDLPRawDownloader struct{}
func (d *YTDLPRawDownloader) Download(url string) error {
downloadlogger := logger.Default.WithPrefix(fmt.Sprintf("url=%q", url))
_, ongoing := ongoingDownloads[url]
if ongoing {
// return fmt.Errorf("Download %s is already ongoing", url)
downloadlogger.Info("Download is already ongoing")
return nil
}
ongoingDownloadsMutex.Lock()
ongoingDownloads[url] = struct{}{}
ongoingDownloadsMutex.Unlock()
downloadlogger.Info("YTDLPRaw downloading")
cmd := exec.Command("yt-dlp", "-o", "C:/Users/Administrator/ytdlpVideos/%(uploader)s/%(title)s.%(ext)s", "-f", "bestvideo[ext=mp4]+bestaudio[ext=m4a]", "-N", "12", "--sponsorblock-mark", "all", url)
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
err := cmd.Run()
if err != nil {
return fmt.Errorf("failed downloading %s with %+v", url, err)
}
downloadlogger.Info("Downloaded")
ongoingDownloadsMutex.Lock()
delete(ongoingDownloads, url)
ongoingDownloadsMutex.Unlock()
return nil
}