fixed yt-dlp duplicated playlist entries

This commit is contained in:
2024-06-07 16:24:36 +02:00
parent c108428243
commit d614433501
2 changed files with 13 additions and 12 deletions

View File

@@ -56,7 +56,7 @@ func (m *MessageQueue) downloadConsumer() {
m.eventBus.SubscribeAsync(queueName, func(p *Process) {
//TODO: provide valid context
sem.Acquire(context.TODO(), 1)
sem.Acquire(context.Background(), 1)
defer sem.Release(1)
m.logger.Info("received process from event bus",

View File

@@ -5,6 +5,7 @@ import (
"errors"
"log/slog"
"os/exec"
"slices"
"strings"
"time"
@@ -41,21 +42,24 @@ func PlaylistDetect(req DownloadRequest, mq *MessageQueue, db *MemoryDB, logger
return err
}
logger.Info("decoded metadata", slog.String("url", req.URL))
if err := cmd.Wait(); err != nil {
return err
}
logger.Info("decoded playlist metadata", slog.String("url", req.URL))
if m.Type == "" {
cmd.Wait()
return errors.New("probably not a valid URL")
}
if m.Type == "playlist" {
logger.Info(
"playlist detected",
slog.String("url", req.URL),
slog.Int("count", m.Count),
)
entries := slices.CompactFunc(slices.Compact(m.Entries), func(a DownloadInfo, b DownloadInfo) bool {
return a.URL == b.URL
})
for _, meta := range m.Entries {
logger.Info("playlist detected", slog.String("url", req.URL), slog.Int("count", len(entries)))
for _, meta := range entries {
// detect playlist title from metadata since each playlist entry will be
// treated as an individual download
req.Rename = strings.Replace(
@@ -81,9 +85,6 @@ func PlaylistDetect(req DownloadRequest, mq *MessageQueue, db *MemoryDB, logger
db.Set(proc)
mq.Publish(proc)
}
err = cmd.Wait()
return err
}
proc := &Process{