Fix yt-dlp version fetching
This commit is contained in:
parent
e0575cc7de
commit
08a6ab0da7
|
@ -31,7 +31,7 @@ func (r *routes) IndexHandler(c *fiber.Ctx) error {
|
||||||
"Flash": flash.Get(c),
|
"Flash": flash.Get(c),
|
||||||
"Version": version.Version,
|
"Version": version.Version,
|
||||||
"Build": version.Build,
|
"Build": version.Build,
|
||||||
"YtdlpVersion": ytdl.GetVersion(),
|
"YtdlpVersion": r.ytdl.Version(),
|
||||||
}, "views/layouts/main")
|
}, "views/layouts/main")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,7 +66,7 @@ func (r *routes) DownloadHandler(c *fiber.Ctx) error {
|
||||||
"Videos": GetVideos(meta),
|
"Videos": GetVideos(meta),
|
||||||
"Version": version.Version,
|
"Version": version.Version,
|
||||||
"Build": version.Build,
|
"Build": version.Build,
|
||||||
"YtdlpVersion": ytdl.GetVersion(),
|
"YtdlpVersion": r.ytdl.Version,
|
||||||
}, "views/layouts/main")
|
}, "views/layouts/main")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,41 +0,0 @@
|
||||||
package ytdl
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"os/exec"
|
|
||||||
"strings"
|
|
||||||
"sync"
|
|
||||||
|
|
||||||
"github.com/spf13/viper"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
version string
|
|
||||||
versionOnce sync.Once
|
|
||||||
)
|
|
||||||
|
|
||||||
func GetVersion() string {
|
|
||||||
var err error
|
|
||||||
versionOnce.Do(func() {
|
|
||||||
cmd := exec.Command(
|
|
||||||
viper.GetString("ytdlp_path"),
|
|
||||||
"--version",
|
|
||||||
)
|
|
||||||
|
|
||||||
var out bytes.Buffer
|
|
||||||
cmd.Stdout = &out
|
|
||||||
|
|
||||||
err = cmd.Run()
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
version = strings.TrimSpace(out.String())
|
|
||||||
})
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
return "Error getting version"
|
|
||||||
}
|
|
||||||
|
|
||||||
return version
|
|
||||||
}
|
|
30
ytdl/ytdl.go
30
ytdl/ytdl.go
|
@ -1,7 +1,10 @@
|
||||||
package ytdl
|
package ytdl
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"io"
|
"io"
|
||||||
|
"os/exec"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"go.fifitido.net/ytdl-web/config"
|
"go.fifitido.net/ytdl-web/config"
|
||||||
"go.fifitido.net/ytdl-web/ytdl/cache"
|
"go.fifitido.net/ytdl-web/ytdl/cache"
|
||||||
|
@ -12,19 +15,30 @@ import (
|
||||||
type Ytdl interface {
|
type Ytdl interface {
|
||||||
GetMetadata(url string) (*metadata.Metadata, error)
|
GetMetadata(url string) (*metadata.Metadata, error)
|
||||||
Download(w io.Writer, url, format string, index int) error
|
Download(w io.Writer, url, format string, index int) error
|
||||||
|
Version() string
|
||||||
}
|
}
|
||||||
|
|
||||||
type ytdlImpl struct {
|
type ytdlImpl struct {
|
||||||
cfg *config.Config
|
cfg *config.Config
|
||||||
logger *slog.Logger
|
logger *slog.Logger
|
||||||
cache cache.MetadataCache
|
cache cache.MetadataCache
|
||||||
|
version string
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewYtdl(cfg *config.Config, logger *slog.Logger, cache cache.MetadataCache) Ytdl {
|
func NewYtdl(cfg *config.Config, logger *slog.Logger, cache cache.MetadataCache) Ytdl {
|
||||||
|
cmd := exec.Command(
|
||||||
|
cfg.BinaryPath,
|
||||||
|
"--version",
|
||||||
|
)
|
||||||
|
var out bytes.Buffer
|
||||||
|
cmd.Stdout = &out
|
||||||
|
_ = cmd.Run()
|
||||||
|
|
||||||
return &ytdlImpl{
|
return &ytdlImpl{
|
||||||
cfg: cfg,
|
cfg: cfg,
|
||||||
logger: logger.With(slog.String("module", "ytdl")),
|
logger: logger.With(slog.String("module", "ytdl")),
|
||||||
cache: cache,
|
cache: cache,
|
||||||
|
version: strings.TrimSpace(out.String()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,6 +70,10 @@ func (y *ytdlImpl) baseOptions(url string) []Option {
|
||||||
return options
|
return options
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (y *ytdlImpl) Version() string {
|
||||||
|
return y.version
|
||||||
|
}
|
||||||
|
|
||||||
// GetMetadata implements Ytdl
|
// GetMetadata implements Ytdl
|
||||||
func (y *ytdlImpl) GetMetadata(url string) (*metadata.Metadata, error) {
|
func (y *ytdlImpl) GetMetadata(url string) (*metadata.Metadata, error) {
|
||||||
meta, err := y.cache.Get(url)
|
meta, err := y.cache.Get(url)
|
||||||
|
|
Loading…
Reference in New Issue