Files
youtube-downloader/downloader/download_downloadr.go
PhatPhuckDave f5c072360b Add alternate downloader
That works a lot faster, pog
2024-11-05 15:36:08 +01:00

75 lines
2.0 KiB
Go

package main
import (
"context"
"fmt"
"log"
"github.com/gen2brain/beeep"
"github.com/kkdai/youtube/v2"
ytd "github.com/kkdai/youtube/v2/downloader"
)
func DownloadR(url string) error {
_, ongoing := ongoingDownloads[url]
if ongoing {
// return fmt.Errorf("Download %s is already ongoing", url)
Warning.Printf("Download %s is already ongoing", url)
return nil
}
ongoingDownloadsMutex.Lock()
ongoingDownloads[url] = struct{}{}
ongoingDownloadsMutex.Unlock()
log.Printf("Downloading %s", url)
err := beeep.Beep(beeep.DefaultFreq, beeep.DefaultDuration)
if err != nil {
Warning.Printf("Failed beeping with %+v", err)
}
err = beeep.Alert("Download Started", url, "assets/information.png")
if err != nil {
Warning.Printf("Failed alerting with %+v", err)
}
client := youtube.Client{}
video, err := client.GetVideo(url)
if err != nil {
return fmt.Errorf("failed downloading %s with %+v", url, err)
}
// $ go run . download -m mp4 -q hd https://www.youtube.com/watch?v=D9trBXaXCgA
// This works fine, now I have to figure out how to plug -m and -q into this shit below
downloader := ytd.Downloader{
OutputDir: OUTPUT_DIR,
Client: client,
}
//formats := video.Formats.WithAudioChannels()
err = downloader.DownloadComposite(context.Background(), "", video, "hd", "mp4", "")
if err != nil {
return fmt.Errorf("failed downloading %s with %+v", url, err)
}
// stream, _, err := client.GetStream(video, &formats[1])
// if err != nil {
// return fmt.Errorf("failed downloading %s with %+v", url, err)
// }
// defer stream.Close()
//
// file, err := os.Create("video.mp4")
// if err != nil {
// return fmt.Errorf("failed downloading %s with %+v", url, err)
// }
// defer file.Close()
//
// _, err = io.Copy(file, stream)
// 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
}