From 77295cc400e71c7c065e6fd20a210dfcb24ece78 Mon Sep 17 00:00:00 2001 From: SBCrumb Date: Fri, 12 Sep 2025 10:30:12 -0400 Subject: [PATCH] various NFOguard versions --- NFOGuard.Emby.Plugin/FreeTierManager.cs | 173 ++++ NFOGuard.Emby.Plugin/LibraryEventHandler.cs | 30 +- NFOGuard.Emby.Plugin/LicenseManager.cs | 234 ++++- .../NFOGuard.Emby.Plugin.csproj | 7 +- NFOGuard.Emby.Plugin/NFOGuardScheduledTask.cs | 94 +- NFOGuard.Emby.Plugin/Plugin.cs | 118 ++- NFOGuard.Emby.Plugin/PluginEntryPoint.cs | 55 ++ .../net48/Microsoft.Bcl.AsyncInterfaces.dll | Bin 0 -> 22144 bytes .../Release/net48/NFOGuard.Emby.Plugin.dll | Bin 17408 -> 41984 bytes .../Release/net48/NFOGuard.Emby.Plugin.pdb | Bin 5688 -> 16088 bytes ...System.Runtime.CompilerServices.Unsafe.dll | Bin 16768 -> 18024 bytes .../net48/System.Text.Encodings.Web.dll | Bin 0 -> 76904 bytes .../bin/Release/net48/System.Text.Json.dll | Bin 0 -> 513128 bytes .../System.Threading.Tasks.Extensions.dll | Bin 0 -> 25984 bytes .../bin/Release/net48/System.ValueTuple.dll | Bin 0 -> 25232 bytes NFOGuard.Emby.Plugin/build-automatic.sh | 58 ++ NFOGuard.Emby.Plugin/build-clean.sh | 52 ++ NFOGuard.Emby.Plugin/build-debug.sh | 46 + NFOGuard.Emby.Plugin/build-diagnostic-safe.sh | 46 + NFOGuard.Emby.Plugin/build-diagnostic.sh | 43 + NFOGuard.Emby.Plugin/build-minimal.sh | 51 + NFOGuard.Emby.Plugin/build-unified.sh | 43 + NFOGuard.Emby.Plugin/build-versions.sh | 60 ++ ...Guard.Emby.Plugin.csproj.nuget.dgspec.json | 8 + ...FOGuard.Emby.Plugin.csproj.nuget.g.targets | 1 + .../net48/NFOGuard.Emby.Plugin.assets.cache | Bin 2985 -> 12093 bytes ...Emby.Plugin.csproj.AssemblyReference.cache | Bin 4931 -> 12365 bytes ...Emby.Plugin.csproj.CoreCompileInputs.cache | 2 +- ...rd.Emby.Plugin.csproj.FileListAbsolute.txt | 5 + .../Release/net48/NFOGuard.Emby.Plugin.dll | Bin 17408 -> 41984 bytes .../Release/net48/NFOGuard.Emby.Plugin.pdb | Bin 5688 -> 16088 bytes NFOGuard.Emby.Plugin/obj/project.assets.json | 873 +++++++++++++++++- NFOGuard.Emby.Plugin/obj/project.nuget.cache | 29 +- plugin-release/DateSync.Emby.Plugin.dll | Bin 0 -> 41984 bytes plugin-release/NFOGuard.Emby.Plugin.dll | Bin 17408 -> 41984 bytes projectsummary.md | 50 +- releases/README.md | 28 + .../v1.0.0-working/NFOGuard.Emby.Plugin.dll | Bin 0 -> 17408 bytes releases/v1.0.0-working/RELEASE_NOTES.md | 37 + .../NFOGuard.Emby.Plugin.dll | Bin 0 -> 41984 bytes .../NFOGuard.Emby.Plugin.dll | Bin 0 -> 46592 bytes .../v1.0.2-debug/NFOGuard.Emby.Plugin.dll | Bin 0 -> 41984 bytes .../v1.0.3-minimal/NFOGuard.Emby.Plugin.dll | Bin 0 -> 41984 bytes .../v1.0.4-clean/DateSync.Emby.Plugin.dll | Bin 0 -> 41984 bytes .../v1.1.0-free-tier/NFOGuard.Emby.Plugin.dll | Bin 0 -> 22016 bytes .../NFOGuard.Emby.Plugin.dll | Bin 0 -> 22016 bytes .../v1.3.0-unified/NFOGuard.Emby.Plugin.dll | Bin 0 -> 26624 bytes .../v2.0.0-automatic/NFOGuard.Emby.Plugin.dll | Bin 0 -> 40960 bytes 48 files changed, 2051 insertions(+), 92 deletions(-) create mode 100644 NFOGuard.Emby.Plugin/FreeTierManager.cs create mode 100755 NFOGuard.Emby.Plugin/bin/Release/net48/Microsoft.Bcl.AsyncInterfaces.dll create mode 100755 NFOGuard.Emby.Plugin/bin/Release/net48/System.Text.Encodings.Web.dll create mode 100755 NFOGuard.Emby.Plugin/bin/Release/net48/System.Text.Json.dll create mode 100755 NFOGuard.Emby.Plugin/bin/Release/net48/System.Threading.Tasks.Extensions.dll create mode 100755 NFOGuard.Emby.Plugin/bin/Release/net48/System.ValueTuple.dll create mode 100755 NFOGuard.Emby.Plugin/build-automatic.sh create mode 100755 NFOGuard.Emby.Plugin/build-clean.sh create mode 100755 NFOGuard.Emby.Plugin/build-debug.sh create mode 100755 NFOGuard.Emby.Plugin/build-diagnostic-safe.sh create mode 100755 NFOGuard.Emby.Plugin/build-diagnostic.sh create mode 100755 NFOGuard.Emby.Plugin/build-minimal.sh create mode 100755 NFOGuard.Emby.Plugin/build-unified.sh create mode 100755 NFOGuard.Emby.Plugin/build-versions.sh create mode 100644 plugin-release/DateSync.Emby.Plugin.dll create mode 100644 releases/README.md create mode 100644 releases/v1.0.0-working/NFOGuard.Emby.Plugin.dll create mode 100644 releases/v1.0.0-working/RELEASE_NOTES.md create mode 100644 releases/v1.0.1-diagnostic-safe/NFOGuard.Emby.Plugin.dll create mode 100644 releases/v1.0.1-diagnostic/NFOGuard.Emby.Plugin.dll create mode 100644 releases/v1.0.2-debug/NFOGuard.Emby.Plugin.dll create mode 100644 releases/v1.0.3-minimal/NFOGuard.Emby.Plugin.dll create mode 100644 releases/v1.0.4-clean/DateSync.Emby.Plugin.dll create mode 100644 releases/v1.1.0-free-tier/NFOGuard.Emby.Plugin.dll create mode 100644 releases/v1.2.0-production/NFOGuard.Emby.Plugin.dll create mode 100644 releases/v1.3.0-unified/NFOGuard.Emby.Plugin.dll create mode 100644 releases/v2.0.0-automatic/NFOGuard.Emby.Plugin.dll diff --git a/NFOGuard.Emby.Plugin/FreeTierManager.cs b/NFOGuard.Emby.Plugin/FreeTierManager.cs new file mode 100644 index 0000000..e752f07 --- /dev/null +++ b/NFOGuard.Emby.Plugin/FreeTierManager.cs @@ -0,0 +1,173 @@ +using System; +using System.Linq; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities.Movies; +using MediaBrowser.Controller.Entities.TV; +using MediaBrowser.Controller.Library; +using MediaBrowser.Model.Logging; + +namespace NFOGuard.Emby.Plugin +{ + public class FreeTierManager + { + private readonly ILogger _logger; + private readonly ILibraryManager _libraryManager; + + public FreeTierManager(ILogger logger, ILibraryManager libraryManager = null) + { + _logger = logger; + _libraryManager = libraryManager; + } + + public bool CanProcessItems(int itemCount, out string reason) + { + var config = Plugin.Instance.Configuration; + reason = string.Empty; + + // If licensed or no limit set, allow processing + if (config.LicenseValid || config.MonthlyProcessingLimit == 0) + { + return true; + } + + // Check if month has rolled over + ResetMonthlyCounterIfNeeded(); + + // Check if this processing would exceed the limit + var wouldExceed = config.ProcessedThisMonth + itemCount > config.MonthlyProcessingLimit; + + if (wouldExceed) + { + var remaining = Math.Max(0, config.MonthlyProcessingLimit - config.ProcessedThisMonth); + reason = $"Free tier limit reached. {remaining} items remaining this month of {config.MonthlyProcessingLimit} allowed. Upgrade to process unlimited items."; + _logger.Info($"NFOGuard :: {reason}"); + return false; + } + + return true; + } + + public void RecordProcessedItems(int count) + { + var config = Plugin.Instance.Configuration; + + // Only track if using free tier limits + if (config.MonthlyProcessingLimit > 0 && !config.LicenseValid) + { + config.ProcessedThisMonth += count; + Plugin.Instance.SaveConfiguration(); + + _logger.Info($"NFOGuard :: Free tier usage: {config.ProcessedThisMonth}/{config.MonthlyProcessingLimit} items this month"); + } + } + + public void SetFreeTierLimits(int monthlyLimit) + { + var config = Plugin.Instance.Configuration; + config.MonthlyProcessingLimit = monthlyLimit; + config.LicenseValid = false; + + if (config.InstallDate == DateTime.MinValue) + { + config.InstallDate = DateTime.UtcNow; + } + + ResetMonthlyCounterIfNeeded(); + Plugin.Instance.SaveConfiguration(); + + _logger.Info($"NFOGuard :: Free tier configured: {monthlyLimit} items per month"); + } + + public void SetPercentageBasedLimits() + { + if (_libraryManager == null) + { + _logger.Warn("NFOGuard :: Cannot calculate percentage limits without LibraryManager"); + SetFreeTierLimits(500); // Fallback to fixed limit + return; + } + + try + { + // Get library counts + var episodes = _libraryManager.GetItemList(new InternalItemsQuery + { + IncludeItemTypes = new[] { "Episode" }, + Recursive = true + }).OfType().Count(); + + var movies = _libraryManager.GetItemList(new InternalItemsQuery + { + IncludeItemTypes = new[] { "Movie" }, + Recursive = true + }).OfType().Count(); + + // Calculate 2% of TV episodes + 5% of movies + var episodeLimit = Math.Max(1, (int)(episodes * 0.02)); // At least 1 episode + var movieLimit = Math.Max(1, (int)(movies * 0.05)); // At least 1 movie + var totalLimit = episodeLimit + movieLimit; + + _logger.Info($"NFOGuard :: Library analysis - Episodes: {episodes}, Movies: {movies}"); + _logger.Info($"NFOGuard :: Free tier limits - Episodes: {episodeLimit} (2%), Movies: {movieLimit} (5%), Total: {totalLimit}"); + + var config = Plugin.Instance.Configuration; + config.MonthlyProcessingLimit = totalLimit; + config.LicenseValid = false; + + if (config.InstallDate == DateTime.MinValue) + { + config.InstallDate = DateTime.UtcNow; + } + + ResetMonthlyCounterIfNeeded(); + Plugin.Instance.SaveConfiguration(); + } + catch (Exception ex) + { + _logger.ErrorException("NFOGuard :: Error calculating percentage limits", ex); + SetFreeTierLimits(500); // Fallback + } + } + + public void EnableFullVersion() + { + var config = Plugin.Instance.Configuration; + config.LicenseValid = true; + config.MonthlyProcessingLimit = 0; + Plugin.Instance.SaveConfiguration(); + + _logger.Info("NFOGuard :: Full version enabled - unlimited processing"); + } + + private void ResetMonthlyCounterIfNeeded() + { + var config = Plugin.Instance.Configuration; + var now = DateTime.UtcNow; + + // Reset if last reset was more than a month ago or never set + if (config.LastProcessingReset == DateTime.MinValue || + now > config.LastProcessingReset.AddMonths(1)) + { + config.ProcessedThisMonth = 0; + config.LastProcessingReset = new DateTime(now.Year, now.Month, 1); // First of current month + Plugin.Instance.SaveConfiguration(); + + _logger.Info("NFOGuard :: Monthly processing counter reset"); + } + } + + public string GetUsageInfo() + { + var config = Plugin.Instance.Configuration; + + if (config.LicenseValid || config.MonthlyProcessingLimit == 0) + { + return "Full version - unlimited processing"; + } + + ResetMonthlyCounterIfNeeded(); + var remaining = Math.Max(0, config.MonthlyProcessingLimit - config.ProcessedThisMonth); + return $"Free tier: {remaining} items remaining this month (of {config.MonthlyProcessingLimit} allowed)"; + } + } +} \ No newline at end of file diff --git a/NFOGuard.Emby.Plugin/LibraryEventHandler.cs b/NFOGuard.Emby.Plugin/LibraryEventHandler.cs index 4c5f9d2..bb52ca0 100644 --- a/NFOGuard.Emby.Plugin/LibraryEventHandler.cs +++ b/NFOGuard.Emby.Plugin/LibraryEventHandler.cs @@ -14,6 +14,7 @@ namespace NFOGuard.Emby.Plugin private readonly IItemRepository _itemRepository; private readonly ILogger _logger; private readonly LicenseManager _licenseManager; + private readonly FreeTierManager _freeTierManager; public LibraryEventHandler(ILibraryManager libraryManager, IItemRepository itemRepository, ILogger logger) { @@ -21,6 +22,7 @@ namespace NFOGuard.Emby.Plugin _itemRepository = itemRepository; _logger = logger; _licenseManager = new LicenseManager(_logger); + _freeTierManager = new FreeTierManager(_logger); // Subscribe to library events _libraryManager.ItemAdded += OnItemAdded; @@ -45,13 +47,21 @@ namespace NFOGuard.Emby.Plugin if (!Plugin.Instance.Configuration.EnableRealTimeSync) return; - // TODO: Re-enable licensing when ready for production - // Check license/trial status - // if (!_licenseManager.CanUseFeature()) - // { - // _logger.Info("NFOGuard :: License expired or invalid. Please purchase a license to continue using NFOGuard."); - // return; - // } + // Free tier: disable real-time processing + var config = Plugin.Instance.Configuration; + if (config.MonthlyProcessingLimit > 0 && !config.LicenseValid) + { + if (Plugin.Instance.Configuration.LogVerbose) + _logger.Info($"NFOGuard :: Real-time processing disabled in free tier. Use scheduled task instead."); + return; + } + + // Check if we can process this item + if (!_freeTierManager.CanProcessItems(1, out string reason)) + { + _logger.Info($"NFOGuard :: Skipping real-time processing: {reason}"); + return; + } // Process TV episodes and Movies if (item is Episode episode) @@ -92,6 +102,9 @@ namespace NFOGuard.Emby.Plugin // Save to repository using ItemUpdateType.MetadataEdit episode.UpdateToRepository(ItemUpdateType.MetadataEdit); _logger.Info($"NFOGuard :: Successfully updated episode :: {episode.Name}"); + + // Record usage for free tier tracking + _freeTierManager.RecordProcessedItems(1); } catch (Exception ex) { @@ -128,6 +141,9 @@ namespace NFOGuard.Emby.Plugin // Save to repository using ItemUpdateType.MetadataEdit movie.UpdateToRepository(ItemUpdateType.MetadataEdit); _logger.Info($"NFOGuard :: Successfully updated movie :: {movie.Name}"); + + // Record usage for free tier tracking + _freeTierManager.RecordProcessedItems(1); } catch (Exception ex) { diff --git a/NFOGuard.Emby.Plugin/LicenseManager.cs b/NFOGuard.Emby.Plugin/LicenseManager.cs index bbe6adb..c2d8364 100644 --- a/NFOGuard.Emby.Plugin/LicenseManager.cs +++ b/NFOGuard.Emby.Plugin/LicenseManager.cs @@ -1,46 +1,128 @@ using System; +using System.Net.Http; +using System.Text; using System.Threading.Tasks; using MediaBrowser.Model.Logging; +using MediaBrowser.Model.Serialization; namespace NFOGuard.Emby.Plugin { public class LicenseManager { private readonly ILogger _logger; + private readonly HttpClient _httpClient; + private const string NFOGUARD_API_URL = "https://nfoguard.com/api"; // Your future API endpoint public LicenseManager(ILogger logger) { _logger = logger; + _httpClient = new HttpClient(); + _httpClient.Timeout = TimeSpan.FromSeconds(10); // Quick timeout for license checks } - public async Task ValidateLicenseAsync(string licenseKey) + public async Task CheckLicenseStatusAsync() { try { - // TODO: Implement actual license validation - // For now, return true for testing - // In production, this would call your licensing server + var config = Plugin.Instance.Configuration; - if (string.IsNullOrEmpty(licenseKey)) + // Get unique identifier for this installation + var machineId = GetMachineIdentifier(); + + _logger.Info("NFOGuard :: Checking automatic license status..."); + + // Check Patreon subscription + var patreonValid = await CheckPatreonSubscriptionAsync(machineId); + if (patreonValid) { - _logger.Info("NFOGuard :: No license key provided, running in trial mode"); - return false; + _logger.Info("NFOGuard :: Valid Patreon subscription found"); + return true; } - - // Placeholder for license validation logic - // You would implement your own licensing server/API here - _logger.Info($"NFOGuard :: Validating license key: {licenseKey.Substring(0, Math.Min(8, licenseKey.Length))}..."); - // For now, accept any non-empty key as valid - return !string.IsNullOrWhiteSpace(licenseKey); + // Check PayPal recurring payment + var paypalValid = await CheckPayPalSubscriptionAsync(machineId); + if (paypalValid) + { + _logger.Info("NFOGuard :: Valid PayPal subscription found"); + return true; + } + + _logger.Info("NFOGuard :: No active subscription found, using free tier"); + return false; } catch (Exception ex) { _logger.ErrorException("NFOGuard :: License validation error", ex); + return false; // Default to free tier on error + } + } + + private async Task CheckPatreonSubscriptionAsync(string machineId) + { + try + { + var requestUrl = $"{NFOGUARD_API_URL}/patreon/check?machine_id={machineId}"; + var response = await _httpClient.GetStringAsync(requestUrl); + + // Parse response (you'll implement the API to return JSON like {"active": true, "tier": "supporter"}) + return response.Contains("\"active\":true"); + } + catch (HttpRequestException) + { + _logger.Info("NFOGuard :: Cannot reach license server, running in offline mode"); + return false; // Offline mode - use free tier + } + catch (Exception ex) + { + _logger.ErrorException("NFOGuard :: Patreon check error", ex); return false; } } + private async Task CheckPayPalSubscriptionAsync(string machineId) + { + try + { + var requestUrl = $"{NFOGUARD_API_URL}/paypal/check?machine_id={machineId}"; + var response = await _httpClient.GetStringAsync(requestUrl); + + // Parse response + return response.Contains("\"active\":true"); + } + catch (HttpRequestException) + { + _logger.Info("NFOGuard :: Cannot reach license server, running in offline mode"); + return false; + } + catch (Exception ex) + { + _logger.ErrorException("NFOGuard :: PayPal check error", ex); + return false; + } + } + + public string GetMachineIdentifier() + { + try + { + // Create a unique but consistent identifier for this installation + // Combine multiple factors to create a stable machine ID + var machineName = Environment.MachineName ?? "unknown"; + var userDomain = Environment.UserDomainName ?? "unknown"; + var installPath = Plugin.Instance.ConfigurationFilePath; + + var combined = $"{machineName}-{userDomain}-{installPath}".GetHashCode().ToString("X8"); + + _logger.Info($"NFOGuard :: Machine ID: {combined}"); + return combined; + } + catch (Exception ex) + { + _logger.ErrorException("NFOGuard :: Error generating machine ID", ex); + return "FALLBACK-ID"; + } + } + public bool IsTrialExpired() { // Implement trial logic here @@ -62,5 +144,131 @@ namespace NFOGuard.Emby.Plugin // Check if license is valid or trial is still active return Plugin.Instance.Configuration.LicenseValid || !IsTrialExpired(); } + + public async Task CheckAndActivateLicenseAsync() + { + try + { + _logger.Info("NFOGuard :: Checking for active subscriptions..."); + + var isValid = await CheckLicenseStatusAsync(); + var config = Plugin.Instance.Configuration; + + if (isValid && !config.LicenseValid) + { + // Activate license + config.LicenseValid = true; + config.MonthlyProcessingLimit = 0; // Remove limits + config.ProcessedThisMonth = 0; // Reset counter + Plugin.Instance.SaveConfiguration(); + + var freeTierManager = new FreeTierManager(_logger); + freeTierManager.EnableFullVersion(); + + _logger.Info("NFOGuard :: Subscription detected - unlimited processing activated!"); + return true; + } + else if (!isValid && config.LicenseValid) + { + // Deactivate license + config.LicenseValid = false; + Plugin.Instance.SaveConfiguration(); + + var freeTierManager = new FreeTierManager(_logger); + freeTierManager.SetPercentageBasedLimits(); + + _logger.Info("NFOGuard :: No active subscription found - switched to free tier"); + return false; + } + + return isValid; + } + catch (Exception ex) + { + _logger.ErrorException("NFOGuard :: License check error", ex); + return false; + } + } + + public async Task RegisterMachineAsync(string userEmail) + { + try + { + var machineId = GetMachineIdentifier(); + var config = Plugin.Instance.Configuration; + + var registrationData = new + { + machine_id = machineId, + email = userEmail, + emby_version = Environment.OSVersion.ToString(), + plugin_version = Plugin.Instance.Description, + install_date = config.InstallDate.ToString("yyyy-MM-dd"), + library_stats = GetLibraryStats() + }; + + var json = System.Text.Json.JsonSerializer.Serialize(registrationData); + var content = new StringContent(json, Encoding.UTF8, "application/json"); + + var response = await _httpClient.PostAsync($"{NFOGUARD_API_URL}/register", content); + var responseText = await response.Content.ReadAsStringAsync(); + + if (response.IsSuccessStatusCode) + { + _logger.Info($"NFOGuard :: Machine registered successfully: {machineId}"); + return $"Registration successful!\n\nMachine ID: {machineId}\n\nTo activate unlimited processing:\n• Subscribe on Patreon: https://patreon.com/nfoguard\n• Or PayPal recurring: https://nfoguard.com/paypal\n\nThe plugin will automatically detect your subscription within 24 hours."; + } + else + { + _logger.Warn($"NFOGuard :: Registration failed: {responseText}"); + return $"Registration failed. You can still use the free tier.\n\nMachine ID: {machineId}\nError: {responseText}"; + } + } + catch (Exception ex) + { + _logger.ErrorException("NFOGuard :: Registration error", ex); + var machineId = GetMachineIdentifier(); + return $"Registration failed (offline mode).\n\nMachine ID: {machineId}\n\nTo activate later, visit: https://nfoguard.com/register"; + } + } + + private object GetLibraryStats() + { + try + { + // This would be used for analytics (anonymized) + return new + { + episodes_estimated = "unknown", + movies_estimated = "unknown", + free_tier_usage = Plugin.Instance.Configuration.ProcessedThisMonth + }; + } + catch + { + return new { error = "stats_unavailable" }; + } + } + + public void DeactivateLicense() + { + try + { + var config = Plugin.Instance.Configuration; + config.LicenseValid = false; + + // Reset to percentage-based free tier + var freeTierManager = new FreeTierManager(_logger); + freeTierManager.SetPercentageBasedLimits(); + + Plugin.Instance.SaveConfiguration(); + + _logger.Info("NFOGuard :: License deactivated - switched to free tier"); + } + catch (Exception ex) + { + _logger.ErrorException("NFOGuard :: License deactivation error", ex); + } + } } } \ No newline at end of file diff --git a/NFOGuard.Emby.Plugin/NFOGuard.Emby.Plugin.csproj b/NFOGuard.Emby.Plugin/NFOGuard.Emby.Plugin.csproj index 3ff8482..cb82453 100644 --- a/NFOGuard.Emby.Plugin/NFOGuard.Emby.Plugin.csproj +++ b/NFOGuard.Emby.Plugin/NFOGuard.Emby.Plugin.csproj @@ -10,6 +10,8 @@ + + @@ -28,8 +30,5 @@ - - - - + \ No newline at end of file diff --git a/NFOGuard.Emby.Plugin/NFOGuardScheduledTask.cs b/NFOGuard.Emby.Plugin/NFOGuardScheduledTask.cs index c288409..bcde428 100644 --- a/NFOGuard.Emby.Plugin/NFOGuardScheduledTask.cs +++ b/NFOGuard.Emby.Plugin/NFOGuardScheduledTask.cs @@ -16,8 +16,9 @@ namespace NFOGuard.Emby.Plugin { private readonly ILibraryManager _libraryManager; private readonly ILogger _logger; + private readonly FreeTierManager _freeTierManager; - public string Name => "NFOGuard Date Sync"; + public string Name => "DateSync Task"; public string Key => "NFOGuardSync"; @@ -29,6 +30,7 @@ namespace NFOGuard.Emby.Plugin { _libraryManager = libraryManager; _logger = logManager.GetLogger("NFOGuard"); + _freeTierManager = new FreeTierManager(_logger); } public async Task Execute(CancellationToken cancellationToken, IProgress progress) @@ -59,27 +61,79 @@ namespace NFOGuard.Emby.Plugin var totalItems = episodes.Count + movies.Count; _logger.Info($"NFOGuard :: Found {episodes.Count} episodes and {movies.Count} movies to process ({totalItems} total)"); + // Calculate items that need processing + var itemsNeedingSync = episodes.Where(e => e.PremiereDate.HasValue && e.DateCreated != e.PremiereDate.Value).Count() + + movies.Where(m => m.PremiereDate.HasValue && m.DateCreated != m.PremiereDate.Value).Count(); + + _logger.Info($"NFOGuard :: {itemsNeedingSync} items need date synchronization"); + + // Check free tier limits + if (!_freeTierManager.CanProcessItems(itemsNeedingSync, out string reason)) + { + _logger.Info($"NFOGuard :: {reason}"); + + // In free tier, process only what we can + var pluginConfig = Plugin.Instance.Configuration; + if (pluginConfig.MonthlyProcessingLimit > 0 && !pluginConfig.LicenseValid) + { + var allowedCount = Math.Max(0, pluginConfig.MonthlyProcessingLimit - pluginConfig.ProcessedThisMonth); + _logger.Info($"NFOGuard :: Free tier: Processing {allowedCount} items only"); + + if (allowedCount == 0) + { + _logger.Info("NFOGuard :: Free tier limit reached. No items will be processed this month."); + return; + } + } + } + var processedCount = 0; var updatedCount = 0; + var config = Plugin.Instance.Configuration; + var remainingQuota = config.MonthlyProcessingLimit > 0 && !config.LicenseValid + ? Math.Max(0, config.MonthlyProcessingLimit - config.ProcessedThisMonth) + : int.MaxValue; // Process episodes - for (int i = 0; i < episodes.Count; i++) + for (int i = 0; i < episodes.Count && (config.LicenseValid || remainingQuota > 0); i++) { cancellationToken.ThrowIfCancellationRequested(); var episode = episodes[i]; try { + // Always log detailed info to diagnose the issue + if (Plugin.Instance.Configuration.LogVerbose) + _logger.Info($"NFOGuard :: Episode: {episode.Name} :: " + + $"PremiereDate: {episode.PremiereDate?.ToString("yyyy-MM-dd HH:mm:ss") ?? "NULL"}, " + + $"DateCreated: {episode.DateCreated.ToString("yyyy-MM-dd HH:mm:ss")}"); + if (episode.PremiereDate.HasValue && episode.DateCreated != episode.PremiereDate.Value) { - if (Plugin.Instance.Configuration.LogVerbose) - _logger.Info($"NFOGuard :: Syncing episode: {episode.Name} :: " + - $"PremiereDate: {episode.PremiereDate.Value}, DateCreated: {episode.DateCreated}"); + _logger.Info($"NFOGuard :: SYNCING episode: {episode.Name} :: " + + $"PremiereDate: {episode.PremiereDate.Value}, DateCreated: {episode.DateCreated}"); episode.DateCreated = episode.PremiereDate.Value; episode.UpdateToRepository(ItemUpdateType.MetadataEdit); updatedCount++; + + // Track usage and decrement quota + _freeTierManager.RecordProcessedItems(1); + if (!config.LicenseValid && config.MonthlyProcessingLimit > 0) + { + remainingQuota--; + } + } + else if (!episode.PremiereDate.HasValue) + { + if (Plugin.Instance.Configuration.LogVerbose) + _logger.Info($"NFOGuard :: Episode {episode.Name} has no PremiereDate - skipping"); + } + else + { + if (Plugin.Instance.Configuration.LogVerbose) + _logger.Info($"NFOGuard :: Episode {episode.Name} dates already match - no sync needed"); } processedCount++; @@ -94,23 +148,45 @@ namespace NFOGuard.Emby.Plugin } // Process movies - for (int i = 0; i < movies.Count; i++) + for (int i = 0; i < movies.Count && (config.LicenseValid || remainingQuota > 0); i++) { cancellationToken.ThrowIfCancellationRequested(); var movie = movies[i]; try { + // Always log detailed info to diagnose the issue + if (Plugin.Instance.Configuration.LogVerbose) + _logger.Info($"NFOGuard :: Movie: {movie.Name} :: " + + $"PremiereDate: {movie.PremiereDate?.ToString("yyyy-MM-dd HH:mm:ss") ?? "NULL"}, " + + $"DateCreated: {movie.DateCreated.ToString("yyyy-MM-dd HH:mm:ss")}"); + if (movie.PremiereDate.HasValue && movie.DateCreated != movie.PremiereDate.Value) { - if (Plugin.Instance.Configuration.LogVerbose) - _logger.Info($"NFOGuard :: Syncing movie: {movie.Name} :: " + - $"PremiereDate: {movie.PremiereDate.Value}, DateCreated: {movie.DateCreated}"); + _logger.Info($"NFOGuard :: SYNCING movie: {movie.Name} :: " + + $"PremiereDate: {movie.PremiereDate.Value}, DateCreated: {movie.DateCreated}"); movie.DateCreated = movie.PremiereDate.Value; movie.UpdateToRepository(ItemUpdateType.MetadataEdit); updatedCount++; + + // Track usage and decrement quota + _freeTierManager.RecordProcessedItems(1); + if (!config.LicenseValid && config.MonthlyProcessingLimit > 0) + { + remainingQuota--; + } + } + else if (!movie.PremiereDate.HasValue) + { + if (Plugin.Instance.Configuration.LogVerbose) + _logger.Info($"NFOGuard :: Movie {movie.Name} has no PremiereDate - skipping"); + } + else + { + if (Plugin.Instance.Configuration.LogVerbose) + _logger.Info($"NFOGuard :: Movie {movie.Name} dates already match - no sync needed"); } processedCount++; diff --git a/NFOGuard.Emby.Plugin/Plugin.cs b/NFOGuard.Emby.Plugin/Plugin.cs index 9e9ff4b..51626b6 100644 --- a/NFOGuard.Emby.Plugin/Plugin.cs +++ b/NFOGuard.Emby.Plugin/Plugin.cs @@ -1,49 +1,139 @@ using System; using System.IO; +using System.Threading.Tasks; using MediaBrowser.Common.Plugins; using MediaBrowser.Model.Drawing; using MediaBrowser.Common.Configuration; using MediaBrowser.Model.Plugins; using MediaBrowser.Model.Serialization; +using MediaBrowser.Model.Logging; namespace NFOGuard.Emby.Plugin { - public class Plugin : BasePlugin, IHasThumbImage + public class Plugin : BasePlugin { - private Guid _id = new Guid("A1B2C3D4-5678-9ABC-DEF0-123456789ABC"); + private Guid _id = new Guid("B2C3D4E5-6789-ABCD-EF01-23456789ABCE"); // Completely new GUID to clear cache - public override string Name => "NFOGuard"; + public override string Name => "DateSync"; public override string Description => "Synchronizes TV episode PremiereDate to DateCreated to preserve import dates in Emby"; public override Guid Id => _id; - public override string ConfigurationFileName => "nfoguard.xml"; - - public ImageFormat ThumbImageFormat => ImageFormat.Png; + public override string ConfigurationFileName => "datesync.xml"; public static Plugin Instance { get; private set; } - public Stream GetThumbImage() - { - var type = GetType(); - return type.Assembly.GetManifestResourceStream(type.Namespace + ".thumb.png"); - } - public Plugin(IApplicationPaths applicationPaths, IXmlSerializer xmlSerializer) : base(applicationPaths, xmlSerializer) { Instance = this; } + + /// + /// Registers machine and checks for automatic subscription activation + /// + public async Task RegisterAndCheckSubscriptionAsync(string userEmail, ILogger logger) + { + try + { + var licenseManager = new LicenseManager(logger); + + // Register machine first + var registrationResult = await licenseManager.RegisterMachineAsync(userEmail); + + // Then check for existing subscription + await licenseManager.CheckAndActivateLicenseAsync(); + + return registrationResult; + } + catch (Exception ex) + { + return $"Registration error: {ex.Message}"; + } + } + + /// + /// Gets current license status and usage information + /// + public string GetLicenseStatus(ILogger logger) + { + try + { + var freeTierManager = new FreeTierManager(logger); + var licenseManager = new LicenseManager(logger); + var machineId = licenseManager.GetMachineIdentifier(); + + if (Configuration.LicenseValid) + { + return $"āœ… Subscription Active\nMachine ID: {machineId}\nStatus: Unlimited processing enabled\n\nSubscription automatically detected via Patreon/PayPal."; + } + else + { + var usageInfo = freeTierManager.GetUsageInfo(); + var trialInfo = licenseManager.IsTrialExpired() ? "Trial expired" : $"Trial active ({Math.Max(0, (Configuration.InstallDate.AddDays(30) - DateTime.UtcNow).Days)} days remaining)"; + return $"šŸ†“ Free Tier Active\nMachine ID: {machineId}\nUsage: {usageInfo}\nTrial: {trialInfo}\n\nTo unlock unlimited processing:\n• Subscribe: https://patreon.com/nfoguard\n• PayPal: https://nfoguard.com/paypal\n\nActivation is automatic within 24 hours."; + } + } + catch (Exception ex) + { + return $"Error getting license status: {ex.Message}"; + } + } + + /// + /// Manually checks for subscription updates + /// + public async Task RefreshSubscriptionStatusAsync(ILogger logger) + { + try + { + var licenseManager = new LicenseManager(logger); + var wasLicensed = Configuration.LicenseValid; + + await licenseManager.CheckAndActivateLicenseAsync(); + + if (!wasLicensed && Configuration.LicenseValid) + { + return "āœ… Subscription found and activated! Unlimited processing enabled."; + } + else if (wasLicensed && !Configuration.LicenseValid) + { + return "āš ļø Subscription expired or cancelled. Switched to free tier."; + } + else if (Configuration.LicenseValid) + { + return "āœ… Subscription is still active."; + } + else + { + return "šŸ†“ No active subscription found. Still using free tier."; + } + } + catch (Exception ex) + { + return $"Error checking subscription: {ex.Message}"; + } + } } public class PluginConfiguration : BasePluginConfiguration { public bool EnableRealTimeSync { get; set; } = true; public bool EnableScheduledTask { get; set; } = true; - public bool LogVerbose { get; set; } = false; + public bool LogVerbose { get; set; } = true; // Enabled by default for diagnostic version public bool LicenseValid { get; set; } = false; - public string LicenseKey { get; set; } = string.Empty; + public string RegisteredEmail { get; set; } = string.Empty; public DateTime InstallDate { get; set; } = DateTime.MinValue; + public DateTime LastLicenseCheck { get; set; } = DateTime.MinValue; + + // Free tier tracking + public DateTime LastProcessingReset { get; set; } = DateTime.MinValue; + public int ProcessedThisMonth { get; set; } = 0; + public int MonthlyProcessingLimit { get; set; } = 0; // 0 = no limit (full version) + + // Machine registration + public bool MachineRegistered { get; set; } = false; + public string MachineId { get; set; } = string.Empty; } } \ No newline at end of file diff --git a/NFOGuard.Emby.Plugin/PluginEntryPoint.cs b/NFOGuard.Emby.Plugin/PluginEntryPoint.cs index d70ea35..40e6251 100644 --- a/NFOGuard.Emby.Plugin/PluginEntryPoint.cs +++ b/NFOGuard.Emby.Plugin/PluginEntryPoint.cs @@ -26,6 +26,9 @@ namespace NFOGuard.Emby.Plugin try { + // Initialize tier settings based on build configuration + InitializeTierSettings(); + _eventHandler = new LibraryEventHandler(_libraryManager, _itemRepository, _logger); _logger.Info("NFOGuard :: Event handlers registered successfully"); } @@ -35,6 +38,58 @@ namespace NFOGuard.Emby.Plugin } } + private void InitializeTierSettings() + { + var freeTierManager = new FreeTierManager(_logger, _libraryManager); + var config = Plugin.Instance.Configuration; + + // Initialize as percentage-based free tier by default if not configured + if (config.MonthlyProcessingLimit == 0 && !config.LicenseValid) + { + freeTierManager.SetPercentageBasedLimits(); // 2% episodes, 5% movies + _logger.Info("NFOGuard :: Free tier initialized - 2% of TV episodes + 5% of movies per month. Subscribe to unlock unlimited processing."); + } + else if (config.LicenseValid) + { + _logger.Info("NFOGuard :: Licensed version active - unlimited processing enabled"); + } + else + { + _logger.Info($"NFOGuard :: Free tier active - {freeTierManager.GetUsageInfo()}"); + } + + // Start periodic license checking + StartPeriodicLicenseCheck(); + } + + private async void StartPeriodicLicenseCheck() + { + try + { + // Check every 24 hours for subscription changes + var timer = new System.Threading.Timer(async _ => + { + try + { + var licenseManager = new LicenseManager(_logger); + await licenseManager.CheckAndActivateLicenseAsync(); + + var config = Plugin.Instance.Configuration; + config.LastLicenseCheck = DateTime.UtcNow; + Plugin.Instance.SaveConfiguration(); + } + catch (Exception ex) + { + _logger.ErrorException("NFOGuard :: Periodic license check failed", ex); + } + }, null, TimeSpan.FromHours(1), TimeSpan.FromHours(24)); // First check in 1 hour, then every 24 hours + } + catch (Exception ex) + { + _logger.ErrorException("NFOGuard :: Failed to start periodic license check", ex); + } + } + public void Dispose() { _logger.Info("NFOGuard :: Plugin shutting down"); diff --git a/NFOGuard.Emby.Plugin/bin/Release/net48/Microsoft.Bcl.AsyncInterfaces.dll b/NFOGuard.Emby.Plugin/bin/Release/net48/Microsoft.Bcl.AsyncInterfaces.dll new file mode 100755 index 0000000000000000000000000000000000000000..476f1b160787e8793399a1f6256da26610ff60d3 GIT binary patch literal 22144 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 literal 0 HcmV?d00001 diff --git a/NFOGuard.Emby.Plugin/bin/Release/net48/NFOGuard.Emby.Plugin.dll b/NFOGuard.Emby.Plugin/bin/Release/net48/NFOGuard.Emby.Plugin.dll index 2b50630e8c97c4be14f6875e91bce54ad31e84b0..041dfd7b8bc4773462be2ff59c1997f76c386e2a 100644 GIT binary patch literal 41984 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 literal 17408 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 diff --git a/NFOGuard.Emby.Plugin/bin/Release/net48/NFOGuard.Emby.Plugin.pdb b/NFOGuard.Emby.Plugin/bin/Release/net48/NFOGuard.Emby.Plugin.pdb index 810d2cd993eb6814d879fa84c4b66370133ca2cc..fdc70bd2d370708b1af1273f68c17b0166d558b7 100644 GIT binary patch literal 16088 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 T{UlEK78$1y=Yx|gMBV=bFmxXo delta 3139 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 HN5uaDZ=b#M delta 5585 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 Y{P$YDHs)vQUwhuEAtKHviYjdX1}FB=6951J diff --git a/NFOGuard.Emby.Plugin/bin/Release/net48/System.Text.Encodings.Web.dll b/NFOGuard.Emby.Plugin/bin/Release/net48/System.Text.Encodings.Web.dll new file mode 100755 index 0000000000000000000000000000000000000000..a85aa43cfef5351b53c4b039a743296e1a34bd34 GIT binary patch literal 76904 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