way faster playlist entries detection

This commit is contained in:
2024-06-12 10:16:24 +02:00
parent d402d71815
commit 9c09c88d06

View File

@@ -22,7 +22,7 @@ type metadata struct {
func PlaylistDetect(req DownloadRequest, mq *MessageQueue, db *MemoryDB, logger *slog.Logger) error { func PlaylistDetect(req DownloadRequest, mq *MessageQueue, db *MemoryDB, logger *slog.Logger) error {
var ( var (
downloader = config.Instance().DownloaderPath downloader = config.Instance().DownloaderPath
cmd = exec.Command(downloader, req.URL, "-J") cmd = exec.Command(downloader, req.URL, "--flat-playlist", "-J")
) )
stdout, err := cmd.StdoutPipe() stdout, err := cmd.StdoutPipe()
@@ -59,7 +59,7 @@ func PlaylistDetect(req DownloadRequest, mq *MessageQueue, db *MemoryDB, logger
logger.Info("playlist detected", slog.String("url", req.URL), slog.Int("count", len(entries))) logger.Info("playlist detected", slog.String("url", req.URL), slog.Int("count", len(entries)))
for _, meta := range entries { for i, meta := range entries {
// detect playlist title from metadata since each playlist entry will be // detect playlist title from metadata since each playlist entry will be
// treated as an individual download // treated as an individual download
req.Rename = strings.Replace( req.Rename = strings.Replace(
@@ -69,8 +69,11 @@ func PlaylistDetect(req DownloadRequest, mq *MessageQueue, db *MemoryDB, logger
1, 1,
) )
//TODO: it's idiotic but it works: virtually delay the creation time
meta.CreatedAt = time.Now().Add(time.Millisecond * time.Duration(i*10))
proc := &Process{ proc := &Process{
Url: meta.OriginalURL, Url: meta.URL,
Progress: DownloadProgress{}, Progress: DownloadProgress{},
Output: DownloadOutput{Filename: req.Rename}, Output: DownloadOutput{Filename: req.Rename},
Info: meta, Info: meta,
@@ -78,7 +81,7 @@ func PlaylistDetect(req DownloadRequest, mq *MessageQueue, db *MemoryDB, logger
Logger: logger, Logger: logger,
} }
proc.Info.URL = meta.OriginalURL proc.Info.URL = meta.URL
time.Sleep(time.Millisecond) time.Sleep(time.Millisecond)