diff --git a/src/main.go b/src/main.go index b0e890d..1370778 100644 --- a/src/main.go +++ b/src/main.go @@ -37,6 +37,7 @@ func main() { log.Panic().Msgf("%s\n", err.Error()) } + media.GetInstalledVersion() go startYtDlpUpdater() // The HTTP Server @@ -86,14 +87,14 @@ func startYtDlpUpdater() { ticker := time.NewTicker(12 * time.Hour) // Do one update now - _, _ = media.UpdateYtDlp() + _ = media.UpdateYtDlp() quit := make(chan struct{}) go func() { for { select { case <-ticker.C: - _, _ = media.UpdateYtDlp() + _ = media.UpdateYtDlp() log.Info().Msgf("yt-dlp version: %s", media.GetInstalledVersion()) case <-quit: ticker.Stop() diff --git a/src/media/fetch.go b/src/media/fetch.go index 4b918a4..2c9a256 100644 --- a/src/media/fetch.go +++ b/src/media/fetch.go @@ -46,7 +46,7 @@ var idCharSet = regexp.MustCompile(`^[a-zA-Z0-9]+$`).MatchString func Index(w http.ResponseWriter, _ *http.Request) { data := map[string]string{ - "ytDlpVersion": GetInstalledVersion(), + "ytDlpVersion": CachedYtDlpVersion, } if err := fetchIndexTmpl.Execute(w, data); err != nil { log.Error().Msgf("Error rendering template: %v", err) diff --git a/src/media/updater.go b/src/media/updater.go index c82cf82..ccde2af 100644 --- a/src/media/updater.go +++ b/src/media/updater.go @@ -10,7 +10,9 @@ import ( "sync" ) -func UpdateYtDlp() (string, error) { +var CachedYtDlpVersion = "" + +func UpdateYtDlp() error { log.Info().Msgf("Updateing yt-dlp") cmd := exec.Command("yt-dlp", @@ -29,7 +31,7 @@ func UpdateYtDlp() (string, error) { err := cmd.Start() if err != nil { log.Error().Msgf("Error starting command: %v", err) - return "", err + return err } var wg sync.WaitGroup @@ -46,15 +48,16 @@ func UpdateYtDlp() (string, error) { err = cmd.Wait() if err != nil { log.Error().Msgf("cmd.Run() failed with %s", err) - return "", err + return err } else if errStdout != nil { log.Error().Msgf("failed to capture stdout: %v", errStdout) } else if errStderr != nil { 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 { @@ -69,8 +72,9 @@ func GetInstalledVersion() string { } version := strings.TrimSpace(string(s.Bytes())) - if version != "" { - return version + if version == "" { + version = "unknown" } - return "unknown" + CachedYtDlpVersion = version + return version }