package downloaders import ( "fmt" "log" "os" "os/exec" "github.com/gen2brain/beeep" ) type YTDLPRawDownloader struct{} func (d *YTDLPRawDownloader) Download(url string) error { _, ongoing := ongoingDownloads[url] if ongoing { // return fmt.Errorf("Download %s is already ongoing", url) log.Printf("Download %s is already ongoing", url) return nil } ongoingDownloadsMutex.Lock() ongoingDownloads[url] = struct{}{} ongoingDownloadsMutex.Unlock() log.Printf("YTDLPRaw downloading %s", url) go func() { err := beeep.Beep(beeep.DefaultFreq, beeep.DefaultDuration) if err != nil { log.Printf("Failed beeping with %+v", err) } err = beeep.Alert("Download Started", url, "assets/information.png") if err != nil { log.Printf("Failed alerting with %+v", err) } }() cmd := exec.Command("yt-dlp", "-o", "C:/Users/Administrator/ytdlpVideos/%(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) } log.Printf("Downloaded %s", url) ongoingDownloadsMutex.Lock() delete(ongoingDownloads, url) ongoingDownloadsMutex.Unlock() return nil }