Add raw ytdlp downloader
This commit is contained in:
@@ -32,7 +32,7 @@ func (d *KidaiDownloader) Download(url string) error {
|
||||
ongoingDownloadsMutex.Unlock()
|
||||
}()
|
||||
|
||||
log.Printf("Downloading %s", url)
|
||||
log.Printf("Kidai downloading %s", url)
|
||||
|
||||
go func() {
|
||||
err := beeep.Beep(beeep.DefaultFreq, beeep.DefaultDuration)
|
||||
|
@@ -8,4 +8,4 @@ const OUTPUT_DIR = "."
|
||||
var ongoingDownloads = make(map[string]struct{})
|
||||
var ongoingDownloadsMutex = &sync.Mutex{}
|
||||
|
||||
const DOWNLOAD_WORKERS = 1
|
||||
const DOWNLOAD_WORKERS = 12
|
@@ -33,18 +33,20 @@ func (d *YTDLPLibDownloader) Download(url string) error {
|
||||
ongoingDownloads[url] = struct{}{}
|
||||
ongoingDownloadsMutex.Unlock()
|
||||
|
||||
log.Printf("Downloading %s", url)
|
||||
log.Printf("YTDLPLib downloading %s", url)
|
||||
|
||||
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)
|
||||
}
|
||||
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)
|
||||
}
|
||||
}()
|
||||
|
||||
_, err = dl.Run(context.TODO(), url)
|
||||
_, err := dl.Run(context.TODO(), url)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed downloading %s with %+v", url, err)
|
||||
}
|
||||
|
@@ -1 +1,51 @@
|
||||
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
|
||||
}
|
||||
|
@@ -36,7 +36,7 @@ func init() {
|
||||
log.Lmicroseconds|log.Lshortfile)
|
||||
}
|
||||
|
||||
var downloader downloaders.Downloader = &downloaders.YTDLPLibDownloader{}
|
||||
var downloader downloaders.Downloader = &downloaders.YTDLPRawDownloader{}
|
||||
|
||||
type DLHandler struct{}
|
||||
|
||||
@@ -76,11 +76,11 @@ func (*DLHandler) HandleMessage(message *nsq.Message) error {
|
||||
}
|
||||
|
||||
func main() {
|
||||
// err := DownloadR("https://www.youtube.com/watch?v=QnvGX0C-LKE")
|
||||
// if err != nil {
|
||||
// Error.Printf("Error downloading: %v", err)
|
||||
// }
|
||||
// return
|
||||
//err := downloader.Download("https://www.youtube.com/watch?v=SiKjprtiPaw")
|
||||
//if err != nil {
|
||||
// Error.Printf("Error downloading: %v", err)
|
||||
//}
|
||||
//return
|
||||
|
||||
config := nsq.NewConfig()
|
||||
config.MaxAttempts = 5
|
||||
|
Reference in New Issue
Block a user