Add raw ytdlp downloader
This commit is contained in:
@@ -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)
|
||||||
|
@@ -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
|
@@ -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)
|
||||||
}
|
}
|
||||||
|
@@ -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
|
||||||
|
}
|
||||||
|
@@ -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,11 +76,11 @@ 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)
|
||||||
// }
|
//}
|
||||||
// return
|
//return
|
||||||
|
|
||||||
config := nsq.NewConfig()
|
config := nsq.NewConfig()
|
||||||
config.MaxAttempts = 5
|
config.MaxAttempts = 5
|
||||||
|
Reference in New Issue
Block a user