From 6c4c73a5b0e38adc2b3cf1721a4ba675a3af1f72 Mon Sep 17 00:00:00 2001 From: Ben Sarmiento Date: Tue, 9 Jan 2024 00:00:23 +0100 Subject: [PATCH] Add premium status monitoring and it wont start unless you are premium --- internal/app.go | 3 +++ pkg/premium/monitor.go | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 pkg/premium/monitor.go diff --git a/internal/app.go b/internal/app.go index 4271818..0ad23e4 100644 --- a/internal/app.go +++ b/internal/app.go @@ -14,6 +14,7 @@ import ( "github.com/debridmediamanager/zurg/internal/universal" "github.com/debridmediamanager/zurg/pkg/http" "github.com/debridmediamanager/zurg/pkg/logutil" + "github.com/debridmediamanager/zurg/pkg/premium" "github.com/debridmediamanager/zurg/pkg/realdebrid" "github.com/debridmediamanager/zurg/pkg/utils" "github.com/go-chi/chi/v5" @@ -38,6 +39,8 @@ func MainApp(configPath string) { rd := realdebrid.NewRealDebrid(apiClient, log.Named("realdebrid")) + premium.MonitorPremiumStatus(rd, zurglog) + p, err := ants.NewPool(config.GetNumOfWorkers() + 1) if err != nil { zurglog.Errorf("Failed to create worker pool: %v", err) diff --git a/pkg/premium/monitor.go b/pkg/premium/monitor.go new file mode 100644 index 0000000..019e405 --- /dev/null +++ b/pkg/premium/monitor.go @@ -0,0 +1,35 @@ +package premium + +import ( + "time" + + "github.com/debridmediamanager/zurg/pkg/logutil" + "github.com/debridmediamanager/zurg/pkg/realdebrid" +) + +const PREMIUM_THRESHOLD = 172800 + +func MonitorPremiumStatus(rd *realdebrid.RealDebrid, zurglog *logutil.Logger) { + go func() { + for { + userInfo, err := rd.GetUserInformation() + if err != nil { + zurglog.Errorf("Failed to get user information: %v", err) + time.Sleep(5 * time.Minute) + continue + } + if userInfo.Premium <= 0 { + zurglog.Fatal("Your account is no longer premium, exiting...") + } else { + if userInfo.Premium <= PREMIUM_THRESHOLD { + zurglog.Warnf("Your account will expire in %d hours", userInfo.Premium/3600) + } else { + zurglog.Infof("Your account will expire in %d days", userInfo.Premium/86400) + } + } + remaining := userInfo.Premium - PREMIUM_THRESHOLD + sleepDuration := time.Duration(remaining) * time.Second + time.Sleep(sleepDuration) + } + }() +}