prevent downloading playlist with format selection
This commit is contained in:
@@ -10,7 +10,6 @@ type ProgressTemplate struct {
|
||||
Eta float32 `json:"eta"`
|
||||
}
|
||||
|
||||
|
||||
type PostprocessTemplate struct {
|
||||
FilePath string `json:"filepath"`
|
||||
}
|
||||
@@ -45,27 +44,6 @@ type DownloadInfo struct {
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
}
|
||||
|
||||
// Used to deser the formats in the -J output
|
||||
type DownloadFormats struct {
|
||||
Formats []Format `json:"formats"`
|
||||
Best Format `json:"best"`
|
||||
Thumbnail string `json:"thumbnail"`
|
||||
Title string `json:"title"`
|
||||
URL string `json:"url"`
|
||||
}
|
||||
|
||||
// A skimmed yt-dlp format node
|
||||
type Format struct {
|
||||
Format_id string `json:"format_id"`
|
||||
Format_note string `json:"format_note"`
|
||||
FPS float32 `json:"fps"`
|
||||
Resolution string `json:"resolution"`
|
||||
VCodec string `json:"vcodec"`
|
||||
ACodec string `json:"acodec"`
|
||||
Size float32 `json:"filesize_approx"`
|
||||
Language string `json:"language"`
|
||||
}
|
||||
|
||||
// struct representing the response sent to the client
|
||||
// as JSON-RPC result field
|
||||
type ProcessResponse struct {
|
||||
|
||||
@@ -11,7 +11,6 @@ import (
|
||||
"log/slog"
|
||||
"regexp"
|
||||
"slices"
|
||||
"sync"
|
||||
"syscall"
|
||||
|
||||
"os"
|
||||
@@ -261,54 +260,6 @@ func (p *Process) Kill() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Returns the available format for this URL
|
||||
//
|
||||
// TODO: Move out from process.go
|
||||
func (p *Process) GetFormats() (DownloadFormats, error) {
|
||||
cmd := exec.Command(config.Instance().DownloaderPath, p.Url, "-J")
|
||||
|
||||
stdout, err := cmd.Output()
|
||||
if err != nil {
|
||||
slog.Error("failed to retrieve metadata", slog.String("err", err.Error()))
|
||||
return DownloadFormats{}, err
|
||||
}
|
||||
|
||||
slog.Info(
|
||||
"retrieving metadata",
|
||||
slog.String("caller", "getFormats"),
|
||||
slog.String("url", p.Url),
|
||||
)
|
||||
|
||||
info := DownloadFormats{URL: p.Url}
|
||||
best := Format{}
|
||||
|
||||
var (
|
||||
wg sync.WaitGroup
|
||||
decodingError error
|
||||
)
|
||||
|
||||
wg.Add(2)
|
||||
|
||||
go func() {
|
||||
decodingError = json.Unmarshal(stdout, &info)
|
||||
wg.Done()
|
||||
}()
|
||||
go func() {
|
||||
decodingError = json.Unmarshal(stdout, &best)
|
||||
wg.Done()
|
||||
}()
|
||||
|
||||
wg.Wait()
|
||||
|
||||
if decodingError != nil {
|
||||
return DownloadFormats{}, err
|
||||
}
|
||||
|
||||
info.Best = best
|
||||
|
||||
return info, nil
|
||||
}
|
||||
|
||||
func (p *Process) GetFileName(o *DownloadOutput) error {
|
||||
cmd := exec.Command(
|
||||
config.Instance().DownloaderPath,
|
||||
|
||||
Reference in New Issue
Block a user