Cache yt-dlp version

This commit is contained in:
rroller 2024-10-20 11:47:24 -07:00
parent 43230aa401
commit 5fd2d648dd
3 changed files with 16 additions and 11 deletions

View file

@ -37,6 +37,7 @@ func main() {
log.Panic().Msgf("%s\n", err.Error()) log.Panic().Msgf("%s\n", err.Error())
} }
media.GetInstalledVersion()
go startYtDlpUpdater() go startYtDlpUpdater()
// The HTTP Server // The HTTP Server
@ -86,14 +87,14 @@ func startYtDlpUpdater() {
ticker := time.NewTicker(12 * time.Hour) ticker := time.NewTicker(12 * time.Hour)
// Do one update now // Do one update now
_, _ = media.UpdateYtDlp() _ = media.UpdateYtDlp()
quit := make(chan struct{}) quit := make(chan struct{})
go func() { go func() {
for { for {
select { select {
case <-ticker.C: case <-ticker.C:
_, _ = media.UpdateYtDlp() _ = media.UpdateYtDlp()
log.Info().Msgf("yt-dlp version: %s", media.GetInstalledVersion()) log.Info().Msgf("yt-dlp version: %s", media.GetInstalledVersion())
case <-quit: case <-quit:
ticker.Stop() ticker.Stop()

View file

@ -46,7 +46,7 @@ var idCharSet = regexp.MustCompile(`^[a-zA-Z0-9]+$`).MatchString
func Index(w http.ResponseWriter, _ *http.Request) { func Index(w http.ResponseWriter, _ *http.Request) {
data := map[string]string{ data := map[string]string{
"ytDlpVersion": GetInstalledVersion(), "ytDlpVersion": CachedYtDlpVersion,
} }
if err := fetchIndexTmpl.Execute(w, data); err != nil { if err := fetchIndexTmpl.Execute(w, data); err != nil {
log.Error().Msgf("Error rendering template: %v", err) log.Error().Msgf("Error rendering template: %v", err)

View file

@ -10,7 +10,9 @@ import (
"sync" "sync"
) )
func UpdateYtDlp() (string, error) { var CachedYtDlpVersion = ""
func UpdateYtDlp() error {
log.Info().Msgf("Updateing yt-dlp") log.Info().Msgf("Updateing yt-dlp")
cmd := exec.Command("yt-dlp", cmd := exec.Command("yt-dlp",
@ -29,7 +31,7 @@ func UpdateYtDlp() (string, error) {
err := cmd.Start() err := cmd.Start()
if err != nil { if err != nil {
log.Error().Msgf("Error starting command: %v", err) log.Error().Msgf("Error starting command: %v", err)
return "", err return err
} }
var wg sync.WaitGroup var wg sync.WaitGroup
@ -46,15 +48,16 @@ func UpdateYtDlp() (string, error) {
err = cmd.Wait() err = cmd.Wait()
if err != nil { if err != nil {
log.Error().Msgf("cmd.Run() failed with %s", err) log.Error().Msgf("cmd.Run() failed with %s", err)
return "", err return err
} else if errStdout != nil { } else if errStdout != nil {
log.Error().Msgf("failed to capture stdout: %v", errStdout) log.Error().Msgf("failed to capture stdout: %v", errStdout)
} else if errStderr != nil { } else if errStderr != nil {
log.Error().Msgf("failed to capture stderr: %v", errStderr) log.Error().Msgf("failed to capture stderr: %v", errStderr)
} }
log.Info().Msgf("Done updating yt-dlp")
return "", nil log.Info().Msgf("Done updating yt-dlp. Version=%s", GetInstalledVersion())
return nil
} }
func GetInstalledVersion() string { func GetInstalledVersion() string {
@ -69,8 +72,9 @@ func GetInstalledVersion() string {
} }
version := strings.TrimSpace(string(s.Bytes())) version := strings.TrimSpace(string(s.Bytes()))
if version != "" { if version == "" {
return version version = "unknown"
} }
return "unknown" CachedYtDlpVersion = version
return version
} }