aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Jellyfin.Server/Migrations/MigrationRunner.cs3
-rw-r--r--Jellyfin.Server/Migrations/Routines/DownloadTheTvdbPlugin.cs63
2 files changed, 65 insertions, 1 deletions
diff --git a/Jellyfin.Server/Migrations/MigrationRunner.cs b/Jellyfin.Server/Migrations/MigrationRunner.cs
index 844dae61f..68815655b 100644
--- a/Jellyfin.Server/Migrations/MigrationRunner.cs
+++ b/Jellyfin.Server/Migrations/MigrationRunner.cs
@@ -23,7 +23,8 @@ namespace Jellyfin.Server.Migrations
typeof(Routines.AddDefaultPluginRepository),
typeof(Routines.MigrateUserDb),
typeof(Routines.ReaddDefaultPluginRepository),
- typeof(Routines.MigrateDisplayPreferencesDb)
+ typeof(Routines.MigrateDisplayPreferencesDb),
+ typeof(Routines.DownloadTheTvdbPlugin)
};
/// <summary>
diff --git a/Jellyfin.Server/Migrations/Routines/DownloadTheTvdbPlugin.cs b/Jellyfin.Server/Migrations/Routines/DownloadTheTvdbPlugin.cs
new file mode 100644
index 000000000..0dfb27bc9
--- /dev/null
+++ b/Jellyfin.Server/Migrations/Routines/DownloadTheTvdbPlugin.cs
@@ -0,0 +1,63 @@
+using System;
+using System.Linq;
+using MediaBrowser.Common.Updates;
+using Microsoft.Extensions.Logging;
+
+namespace Jellyfin.Server.Migrations.Routines
+{
+ /// <summary>
+ /// Download TheTvdb plugin after update.
+ /// </summary>
+ public class DownloadTheTvdbPlugin : IMigrationRoutine
+ {
+ private readonly Guid _tvdbPluginId = new Guid("a677c0da-fac5-4cde-941a-7134223f14c8");
+ private readonly IInstallationManager _installationManager;
+ private readonly ILogger<DownloadTheTvdbPlugin> _logger;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="DownloadTheTvdbPlugin"/> class.
+ /// </summary>
+ /// <param name="installationManager">Instance of the <see cref="IInstallationManager"/> interface.</param>
+ /// <param name="logger">Instance of the <see cref="ILogger{DownloadTvdbPlugin}"/> interface.</param>
+ public DownloadTheTvdbPlugin(IInstallationManager installationManager, ILogger<DownloadTheTvdbPlugin> logger)
+ {
+ _installationManager = installationManager;
+ _logger = logger;
+ }
+
+ /// <inheritdoc />
+ public Guid Id => new Guid("42E45BB4-5D78-4EE2-8C45-9095216D4769");
+
+ /// <inheritdoc />
+ public string Name => "DownloadTheTvdbPlugin";
+
+ /// <inheritdoc />
+ public bool PerformOnNewInstall => false;
+
+ /// <inheritdoc />
+ public void Perform()
+ {
+ try
+ {
+ var packages = _installationManager.GetAvailablePackages().GetAwaiter().GetResult();
+ var package = _installationManager.GetCompatibleVersions(
+ packages,
+ guid: _tvdbPluginId)
+ .FirstOrDefault();
+
+ if (package == null)
+ {
+ _logger.LogWarning("TheTVDB Plugin not found, skipping migration.");
+ return;
+ }
+
+ _installationManager.InstallPackage(package).GetAwaiter().GetResult();
+ _logger.LogInformation("TheTVDB Plugin installed, please restart Jellyfin.");
+ }
+ catch (Exception e)
+ {
+ _logger.LogWarning(e, "Unable to install TheTVDB Plugin.");
+ }
+ }
+ }
+} \ No newline at end of file