Files
blackBarRemover/JellyfinPlugin/Configuration/configPage.html
T

82 lines
4.4 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<title>Black Bar Remover</title>
</head>
<body>
<div data-role="page" class="page type-interior pluginConfigurationPage" data-require="emby-input,emby-button,emby-select,emby-checkbox">
<div data-role="content">
<div class="content-primary">
<form class="blackBarRemoverConfigForm">
<div class="checkboxContainer checkboxContainer-withDescription">
<label>
<input type="checkbox" is="emby-checkbox" id="chkEnablePlugin" />
<span>Enable Black Bar Detection</span>
</label>
<div class="fieldDescription checkboxFieldDescription">Enables automatic scanning of new and updated video files in the library.</div>
</div>
<div class="inputContainer">
<label class="inputLabel inputLabelUnfocused" for="txtCropLimit">Black Bar Detection Tolerance (0.001 - 1.0):</label>
<input type="number" step="0.001" min="0.001" max="1.0" id="txtCropLimit" is="emby-input" required />
<div class="fieldDescription">Default is 0.094. Increase this value (e.g., to 0.15) if the plugin fails to detect black bars on heavily compressed WEB-DLs with noise. Decrease it if the plugin aggressively crops dark scenes.</div>
</div>
<div class="selectContainer">
<label class="selectLabel" for="selectPlaybackMode">Black Bar Removal Method:</label>
<select is="emby-select" id="selectPlaybackMode" class="emby-select-withcolor">
<option value="Auto">Auto (CSS clip in Web, Transcode on Native Apps / Transcoded streams)</option>
<option value="Server">Server Only (FFmpeg Transcoding)</option>
<option value="Client">Client Only (CSS Clip in Jellyfin Web)</option>
</select>
<div class="fieldDescription">Choose how the plugin should remove black bars. Auto mode uses lightweight CSS clipping for Web browser DirectPlay, and falls back to FFmpeg transcoding for native apps or unsupported video formats.</div>
</div>
<div>
<button is="emby-button" type="submit" class="raised button-submit block emby-button">
<span>Save</span>
</button>
</div>
</form>
</div>
</div>
<script type="text/javascript">
var BlackBarRemoverConfig = {
pluginUniqueId: "12345678-1234-1234-1234-1234567890ab"
};
$('.pluginConfigurationPage').on('pageshow', function (event) {
var page = event.target;
Dashboard.showLoadingMsg();
ApiClient.getPluginConfiguration(BlackBarRemoverConfig.pluginUniqueId).then(function (config) {
$('#chkEnablePlugin', page).prop('checked', config.IsEnabled !== false);
$('#txtCropLimit', page).val(config.CropDetectLimit || 0.094);
var mode = config.PlaybackMode || "Auto";
if (mode === "Both") mode = "Auto";
$('#selectPlaybackMode', page).val(mode);
Dashboard.hideLoadingMsg();
});
});
$('.blackBarRemoverConfigForm').on('submit', function (event) {
event.preventDefault();
var form = event.target;
Dashboard.showLoadingMsg();
ApiClient.getPluginConfiguration(BlackBarRemoverConfig.pluginUniqueId).then(function (config) {
config.IsEnabled = $('#chkEnablePlugin', form).prop('checked');
config.CropDetectLimit = parseFloat($('#txtCropLimit', form).val());
config.PlaybackMode = $('#selectPlaybackMode', form).val();
ApiClient.updatePluginConfiguration(BlackBarRemoverConfig.pluginUniqueId, config).then(function (result) {
Dashboard.processPluginConfigurationUpdateResult(result);
});
});
});
</script>
</div>
</body>
</html>