allow users to override the URL (#360)

e.g. intro-skipper.org is not available for use in mainland China
This commit is contained in:
Kilian von Pflugk 2024-10-27 22:38:46 +01:00 committed by GitHub
parent 718a86945e
commit 6d93df1c76
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 22 additions and 14 deletions

View File

@ -248,12 +248,17 @@ public class PluginConfiguration : BasePluginConfiguration
public string AutoSkipCreditsNotificationText { get; set; } = "Credits skipped";
/// <summary>
/// Gets or sets the number of threads for an ffmpeg process.
/// Gets or sets the number of threads for a ffmpeg process.
/// </summary>
public int ProcessThreads { get; set; }
/// <summary>
/// Gets or sets the relative priority for an ffmpeg process.
/// Gets or sets the relative priority for a ffmpeg process.
/// </summary>
public ProcessPriorityClass ProcessPriority { get; set; } = ProcessPriorityClass.BelowNormal;
/// <summary>
/// Gets or sets a value indicating whether the ManifestUrl is self-managed, e.g. for mainland China.
/// </summary>
public bool OverrideManifestUrl { get; set; }
}

View File

@ -92,8 +92,6 @@ public class Plugin : BasePlugin<PluginConfiguration>, IHasWebPages
XmlSerializationHelper.MigrateXML(_introPath);
XmlSerializationHelper.MigrateXML(_creditsPath);
MigrateRepoUrl(serverConfiguration);
var oldConfigFile = Path.Join(applicationPaths.PluginConfigurationsPath, "ConfusedPolarBear.Plugin.IntroSkipper.xml");
if (File.Exists(oldConfigFile))
@ -124,6 +122,8 @@ public class Plugin : BasePlugin<PluginConfiguration>, IHasWebPages
}
}
MigrateRepoUrl(serverConfiguration);
// TODO: remove when https://github.com/jellyfin/jellyfin-meta/discussions/30 is complete
try
{
@ -458,16 +458,16 @@ public class Plugin : BasePlugin<PluginConfiguration>, IHasWebPages
var config = serverConfiguration.Configuration;
// Get the list of current plugin repositories
var pluginRepositories = config.PluginRepositories?.ToList() ?? [];
var pluginRepositories = config.PluginRepositories.ToList();
// check if old plugins exits
if (pluginRepositories.Exists(repo => repo != null && repo.Url != null && oldRepos.Contains(repo.Url)))
if (pluginRepositories.Exists(repo => repo.Url != null && oldRepos.Contains(repo.Url)))
{
// remove all old plugins
pluginRepositories.RemoveAll(repo => repo != null && repo.Url != null && oldRepos.Contains(repo.Url));
pluginRepositories.RemoveAll(repo => repo.Url != null && oldRepos.Contains(repo.Url));
// Add repository only if it does not exit
if (!pluginRepositories.Exists(repo => repo.Url == "https://manifest.intro-skipper.org/manifest.json"))
// Add repository only if it does not exit and the OverideManifestUrl Option is activated
if (!pluginRepositories.Exists(repo => repo.Url == "https://manifest.intro-skipper.org/manifest.json") && Instance!.Configuration.OverrideManifestUrl)
{
// Add the new repository to the list
pluginRepositories.Add(new RepositoryInfo
@ -500,8 +500,7 @@ public class Plugin : BasePlugin<PluginConfiguration>, IHasWebPages
string searchPattern = "dashboard-dashboard.*.chunk.js";
string[] filePaths = Directory.GetFiles(webPath, searchPattern, SearchOption.TopDirectoryOnly);
string pattern = @"buildVersion""\)\.innerText=""(?<buildVersion>\d+\.\d+\.\d+)"",.*?webVersion""\)\.innerText=""(?<webVersion>\d+\.\d+\.\d+)";
string buildVersionString = "unknow";
string webVersionString = "unknow";
string webVersionString = "unknown";
// Create a Regex object
Regex regex = new Regex(pattern);
@ -514,14 +513,13 @@ public class Plugin : BasePlugin<PluginConfiguration>, IHasWebPages
// search for buildVersion and webVersion
if (match.Success)
{
buildVersionString = match.Groups["buildVersion"].Value;
webVersionString = match.Groups["webVersion"].Value;
_logger.LogInformation("Found jellyfin-web <{WebVersion}>", webVersionString);
break;
}
}
if (webVersionString != "unknow")
if (webVersionString != "unknown")
{
// append Revision
webVersionString += ".0";
@ -565,12 +563,17 @@ public class Plugin : BasePlugin<PluginConfiguration>, IHasWebPages
if (!Instance!.Configuration.SkipButtonEnabled)
{
pattern = @"<script src=""configurationpage\?name=skip-intro-button\.js.*<\/script>";
if (!Regex.IsMatch(contents, pattern, RegexOptions.IgnoreCase))
{
return;
}
contents = Regex.Replace(contents, pattern, string.Empty, RegexOptions.IgnoreCase);
File.WriteAllText(indexPath, contents);
return; // Button is disabled, so remove and abort
}
// change URL with every release to prevent the Browers from caching
// change URL with every release to prevent the Browsers from caching
string scriptTag = "<script src=\"configurationpage?name=skip-intro-button.js&release=" + GetType().Assembly.GetName().Version + "\"></script>";
// Only inject the script tag once