Simplify everything

This commit is contained in:
2024-07-14 14:59:12 +02:00
parent 4fd836c0b6
commit 468de9e401
4 changed files with 84 additions and 159 deletions

View File

@@ -3,53 +3,69 @@ package main
import (
"context"
"log"
"sync"
"github.com/lrstanley/go-ytdlp"
"github.com/gen2brain/beeep"
"github.com/lrstanley/go-ytdlp"
)
const OUTPUT_DIR = "C:/Users/Administrator/ytdlpVideos"
type DownloadWorker struct {
id int
input chan *DownloadTask
}
var ongoingDownloads = make(map[string]struct{})
var ongoingDownloadsMutex = &sync.Mutex{}
var dl = ytdlp.New().
// FormatSort("bestvideo[ext=mp4]+bestaudio[ext=m4a]").
FormatSort("res,ext:mp4:m4a").
Output("C:/Users/Administrator/ytdlpVideos/%(uploader)s/%(title)s.%(ext)s").
LimitRate("5M").
LimitRate("10M").
// HTTPChunkSize("20M").
MarkWatched().
SponsorblockMark("all").
RecodeVideo("mp4").
ConcurrentFragments(6)
// func Download(event PBEvent, status chan error) {
// _, err := dl.Run(context.TODO(), event.Record.Link)
// if err != nil {
// status <- err
// return
// }
func (w *DownloadWorker) Run() {
for {
task, ok := <-w.input
if !ok {
log.Printf("DownloadWorker %d: input channel closed, exiting", w.id)
return
}
_, ongoing := ongoingDownloads[task.Url]
if ongoing {
log.Printf("DownloadWorker %d: Download %s is already ongoing", w.id, task.Url)
continue
}
ongoingDownloadsMutex.Lock()
ongoingDownloads[task.Url] = struct{}{}
ongoingDownloadsMutex.Unlock()
// log.Printf("Downloaded %s (%s)", event.Record.Id, event.Record.Link)
// SetDownloaded(event)
// }
log.Printf("DownloadWorker %d: Downloading %s", w.id, task.Url)
func DownloadURL(url string, status chan error) {
log.Printf("Downloading %s", url)
err := beeep.Beep(beeep.DefaultFreq, beeep.DefaultDuration)
if err != nil {
log.Printf("Failed beeping with %+v", err)
err := beeep.Beep(beeep.DefaultFreq, beeep.DefaultDuration)
if err != nil {
log.Printf("Failed beeping with %+v", err)
}
err = beeep.Alert("Download Started", task.Url, "assets/information.png")
if err != nil {
log.Printf("Failed alerting with %+v", err)
}
_, err = dl.Run(context.TODO(), task.Url)
if err != nil {
log.Printf("DownloadWorker %d: Failed downloading %s with %+v", w.id, task.Url, err)
continue
}
log.Printf("DownloadWorker %d: Downloaded %s", w.id, task.Url)
ongoingDownloadsMutex.Lock()
delete(ongoingDownloads, task.Url)
ongoingDownloadsMutex.Unlock()
}
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)
if err != nil {
status <- err
return
}
log.Printf("Downloaded %s", url)
close(status)
}