commit
1d3afbb980
@ -9,6 +9,19 @@
|
|||||||
<div id="TemplateConfigPage" data-role="page" class="page type-interior pluginConfigurationPage"
|
<div id="TemplateConfigPage" data-role="page" class="page type-interior pluginConfigurationPage"
|
||||||
data-require="emby-input,emby-button,emby-select,emby-checkbox">
|
data-require="emby-input,emby-button,emby-select,emby-checkbox">
|
||||||
<div data-role="content">
|
<div data-role="content">
|
||||||
|
<style>
|
||||||
|
summary {
|
||||||
|
cursor: pointer;
|
||||||
|
padding: 10px;
|
||||||
|
width: inherit;
|
||||||
|
margin: auto;
|
||||||
|
border: none;
|
||||||
|
text-align: center;
|
||||||
|
outline: none;
|
||||||
|
font-size: 1.0em;
|
||||||
|
outline: 2px solid rgba(155, 155, 155, 0.5);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
<div class="content-primary">
|
<div class="content-primary">
|
||||||
<form id="FingerprintConfigForm">
|
<form id="FingerprintConfigForm">
|
||||||
<fieldset class="verticalSection-extrabottompadding">
|
<fieldset class="verticalSection-extrabottompadding">
|
||||||
@ -55,12 +68,15 @@
|
|||||||
<div class="fieldDescription">
|
<div class="fieldDescription">
|
||||||
If checked, episode fingerprints will be cached to the filesystem
|
If checked, episode fingerprints will be cached to the filesystem
|
||||||
<br />
|
<br />
|
||||||
|
<strong>WARNING: Disabling cache may result in lengthy detection</strong>
|
||||||
|
<br />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<details id="edl">
|
<details id="edl">
|
||||||
<summary>EDL file generation</summary>
|
<summary>EDL file generation</summary>
|
||||||
|
|
||||||
|
<br />
|
||||||
<div class="selectContainer">
|
<div class="selectContainer">
|
||||||
<label class="selectLabel" for="EdlAction">EDL Action</label>
|
<label class="selectLabel" for="EdlAction">EDL Action</label>
|
||||||
<select is="emby-select" id="EdlAction" class="emby-select-withcolor emby-select">
|
<select is="emby-select" id="EdlAction" class="emby-select-withcolor emby-select">
|
||||||
@ -115,6 +131,7 @@
|
|||||||
<details id="intro_reqs">
|
<details id="intro_reqs">
|
||||||
<summary>Modify introduction requirements</summary>
|
<summary>Modify introduction requirements</summary>
|
||||||
|
|
||||||
|
<br />
|
||||||
<div class="inputContainer">
|
<div class="inputContainer">
|
||||||
<label class="inputLabel inputLabelUnfocused" for="AnalysisPercent">
|
<label class="inputLabel inputLabelUnfocused" for="AnalysisPercent">
|
||||||
Percent of audio to analyze
|
Percent of audio to analyze
|
||||||
@ -179,6 +196,7 @@
|
|||||||
<details id="silence">
|
<details id="silence">
|
||||||
<summary>Silence detection options</summary>
|
<summary>Silence detection options</summary>
|
||||||
|
|
||||||
|
<br />
|
||||||
<div class="inputContainer">
|
<div class="inputContainer">
|
||||||
<label class="inputLabel inputLabelUnfocused" for="SilenceDetectionMaximumNoise">
|
<label class="inputLabel inputLabelUnfocused" for="SilenceDetectionMaximumNoise">
|
||||||
Noise tolerance
|
Noise tolerance
|
||||||
@ -287,6 +305,7 @@
|
|||||||
<details>
|
<details>
|
||||||
<summary>User Interface Customization</summary>
|
<summary>User Interface Customization</summary>
|
||||||
|
|
||||||
|
<br />
|
||||||
<div class="inputContainer">
|
<div class="inputContainer">
|
||||||
<label class="inputLabel" for="SkipButtonIntroText">
|
<label class="inputLabel" for="SkipButtonIntroText">
|
||||||
Skip intro button text
|
Skip intro button text
|
||||||
@ -325,19 +344,23 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
<br />
|
||||||
|
|
||||||
|
<fieldset class="verticalSection-extrabottompadding">
|
||||||
|
<legend>Advanced</legend>
|
||||||
|
|
||||||
<details id="support">
|
<details id="support">
|
||||||
<summary>Support Bundle</summary>
|
<summary>Support Bundle</summary>
|
||||||
|
|
||||||
<textarea id="supportBundle" rows="20" cols="75" readonly></textarea>
|
<textarea id="supportBundle" rows="20" cols="75" readonly></textarea>
|
||||||
</details>
|
</details>
|
||||||
<br />
|
|
||||||
|
|
||||||
<details id="visualizer">
|
<details id="visualizer">
|
||||||
<summary>Advanced</summary>
|
<summary>Fingerprint Editor</summary>
|
||||||
|
|
||||||
|
<br />
|
||||||
<h3 style="margin:0">Select episodes to manage</h3>
|
<h3 style="margin:0">Select episodes to manage</h3>
|
||||||
|
<br />
|
||||||
<select id="troubleshooterShow"></select>
|
<select id="troubleshooterShow"></select>
|
||||||
<select id="troubleshooterSeason"></select>
|
<select id="troubleshooterSeason"></select>
|
||||||
<br />
|
<br />
|
||||||
@ -434,7 +457,8 @@
|
|||||||
<span id="intros"></span>
|
<span id="intros"></span>
|
||||||
</span>
|
</span>
|
||||||
</details>
|
</details>
|
||||||
<br />
|
</fieldset>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="configurationpage?name=visualizer.js"></script>
|
<script src="configurationpage?name=visualizer.js"></script>
|
||||||
|
@ -85,7 +85,7 @@ public class Plugin : BasePlugin<PluginConfiguration>, IHasWebPages
|
|||||||
var indexPath = Path.Join(applicationPaths.WebPath, "index.html");
|
var indexPath = Path.Join(applicationPaths.WebPath, "index.html");
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
InjectSkipButton(indexPath, Path.Join(introsDirectory, "index-pre-skip-button.html"));
|
InjectSkipButton(indexPath);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@ -328,14 +328,11 @@ public class Plugin : BasePlugin<PluginConfiguration>, IHasWebPages
|
|||||||
/// Inject the skip button script into the web interface.
|
/// Inject the skip button script into the web interface.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="indexPath">Full path to index.html.</param>
|
/// <param name="indexPath">Full path to index.html.</param>
|
||||||
/// <param name="backupPath">Full path to create a backup of index.html at.</param>
|
private void InjectSkipButton(string indexPath)
|
||||||
private void InjectSkipButton(string indexPath, string backupPath)
|
|
||||||
{
|
{
|
||||||
// Parts of this code are based off of JellyScrub's script injection code.
|
// Parts of this code are based off of JellyScrub's script injection code.
|
||||||
// https://github.com/nicknsy/jellyscrub/blob/4ce806f602988a662cfe3cdbaac35ee8046b7ec4/Nick.Plugin.Jellyscrub/JellyscrubPlugin.cs
|
// https://github.com/nicknsy/jellyscrub/blob/4ce806f602988a662cfe3cdbaac35ee8046b7ec4/Nick.Plugin.Jellyscrub/JellyscrubPlugin.cs
|
||||||
|
|
||||||
_logger.LogInformation("Adding skip button to {Path}", indexPath);
|
|
||||||
|
|
||||||
_logger.LogDebug("Reading index.html from {Path}", indexPath);
|
_logger.LogDebug("Reading index.html from {Path}", indexPath);
|
||||||
var contents = File.ReadAllText(indexPath);
|
var contents = File.ReadAllText(indexPath);
|
||||||
_logger.LogDebug("Successfully read index.html");
|
_logger.LogDebug("Successfully read index.html");
|
||||||
@ -349,10 +346,6 @@ public class Plugin : BasePlugin<PluginConfiguration>, IHasWebPages
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Backup the original version of the web interface
|
|
||||||
_logger.LogInformation("Backing up index.html to {Backup}", backupPath);
|
|
||||||
File.WriteAllText(backupPath, contents);
|
|
||||||
|
|
||||||
// Inject a link to the script at the end of the <head> section.
|
// Inject a link to the script at the end of the <head> section.
|
||||||
// A regex is used here to ensure the replacement is only done once.
|
// A regex is used here to ensure the replacement is only done once.
|
||||||
_logger.LogDebug("Injecting script tag");
|
_logger.LogDebug("Injecting script tag");
|
||||||
@ -363,6 +356,6 @@ public class Plugin : BasePlugin<PluginConfiguration>, IHasWebPages
|
|||||||
_logger.LogDebug("Saving modified file");
|
_logger.LogDebug("Saving modified file");
|
||||||
File.WriteAllText(indexPath, contents);
|
File.WriteAllText(indexPath, contents);
|
||||||
|
|
||||||
_logger.LogInformation("Skip intro button successfully added to web interface");
|
_logger.LogInformation("Skip intro button successfully added");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,14 @@
|
|||||||
"category": "General",
|
"category": "General",
|
||||||
"imageUrl": "https://raw.githubusercontent.com/jumoog/intro-skipper/master/images/logo.png",
|
"imageUrl": "https://raw.githubusercontent.com/jumoog/intro-skipper/master/images/logo.png",
|
||||||
"versions": [
|
"versions": [
|
||||||
|
{
|
||||||
|
"version": "0.1.12.0",
|
||||||
|
"changelog": "- See the full changelog at [GitHub](https://github.com/jumoog/intro-skipper/blob/master/CHANGELOG.md)\n",
|
||||||
|
"targetAbi": "10.8.4.0",
|
||||||
|
"sourceUrl": "https://github.com/jumoog/intro-skipper/releases/download/v0.1.12/intro-skipper-v0.1.12.zip",
|
||||||
|
"checksum": "5851f2d7036bcd56817f66983a8e1190",
|
||||||
|
"timestamp": "2024-03-02T13:21:04Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"version": "0.1.11.0",
|
"version": "0.1.11.0",
|
||||||
"changelog": "- See the full changelog at [GitHub](https://github.com/jumoog/intro-skipper/blob/master/CHANGELOG.md)\n",
|
"changelog": "- See the full changelog at [GitHub](https://github.com/jumoog/intro-skipper/blob/master/CHANGELOG.md)\n",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user