Add raw ytdlp downloader

This commit is contained in:
2024-11-24 19:39:50 +01:00
parent 83f7676b2e
commit 20e5594f60
5 changed files with 71 additions and 19 deletions

View File

@@ -32,7 +32,7 @@ func (d *KidaiDownloader) Download(url string) error {
ongoingDownloadsMutex.Unlock() ongoingDownloadsMutex.Unlock()
}() }()
log.Printf("Downloading %s", url) log.Printf("Kidai downloading %s", url)
go func() { go func() {
err := beeep.Beep(beeep.DefaultFreq, beeep.DefaultDuration) err := beeep.Beep(beeep.DefaultFreq, beeep.DefaultDuration)

View File

@@ -8,4 +8,4 @@ const OUTPUT_DIR = "."
var ongoingDownloads = make(map[string]struct{}) var ongoingDownloads = make(map[string]struct{})
var ongoingDownloadsMutex = &sync.Mutex{} var ongoingDownloadsMutex = &sync.Mutex{}
const DOWNLOAD_WORKERS = 1 const DOWNLOAD_WORKERS = 12

View File

@@ -33,8 +33,9 @@ func (d *YTDLPLibDownloader) Download(url string) error {
ongoingDownloads[url] = struct{}{} ongoingDownloads[url] = struct{}{}
ongoingDownloadsMutex.Unlock() ongoingDownloadsMutex.Unlock()
log.Printf("Downloading %s", url) log.Printf("YTDLPLib downloading %s", url)
go func() {
err := beeep.Beep(beeep.DefaultFreq, beeep.DefaultDuration) err := beeep.Beep(beeep.DefaultFreq, beeep.DefaultDuration)
if err != nil { if err != nil {
log.Printf("Failed beeping with %+v", err) log.Printf("Failed beeping with %+v", err)
@@ -43,8 +44,9 @@ func (d *YTDLPLibDownloader) Download(url string) error {
if err != nil { if err != nil {
log.Printf("Failed alerting with %+v", err) log.Printf("Failed alerting with %+v", err)
} }
}()
_, err = dl.Run(context.TODO(), url) _, err := dl.Run(context.TODO(), url)
if err != nil { if err != nil {
return fmt.Errorf("failed downloading %s with %+v", url, err) return fmt.Errorf("failed downloading %s with %+v", url, err)
} }

View File

@@ -1 +1,51 @@
package downloaders 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
}

View File

@@ -36,7 +36,7 @@ func init() {
log.Lmicroseconds|log.Lshortfile) log.Lmicroseconds|log.Lshortfile)
} }
var downloader downloaders.Downloader = &downloaders.YTDLPLibDownloader{} var downloader downloaders.Downloader = &downloaders.YTDLPRawDownloader{}
type DLHandler struct{} type DLHandler struct{}
@@ -76,7 +76,7 @@ func (*DLHandler) HandleMessage(message *nsq.Message) error {
} }
func main() { func main() {
// err := DownloadR("https://www.youtube.com/watch?v=QnvGX0C-LKE") //err := downloader.Download("https://www.youtube.com/watch?v=SiKjprtiPaw")
//if err != nil { //if err != nil {
// Error.Printf("Error downloading: %v", err) // Error.Printf("Error downloading: %v", err)
//} //}