All checks were successful
Create Release PR / Create Release PR (push) Successful in 17s
164 lines
9.8 KiB
HTML
164 lines
9.8 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="de">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>SmartNotify</title>
|
|
</head>
|
|
<body>
|
|
<div id="SmartNotifyConfigPage" data-role="page" class="page type-interior pluginConfigurationPage" data-require="emby-input,emby-button,emby-checkbox,emby-select">
|
|
<div data-role="content">
|
|
<div class="content-primary">
|
|
<form id="SmartNotifyConfigForm">
|
|
<div class="sectionTitleContainer flex align-items-center">
|
|
<h2 class="sectionTitle">SmartNotify Konfiguration</h2>
|
|
</div>
|
|
|
|
<div class="verticalSection">
|
|
<p class="fieldDescription">
|
|
SmartNotify erkennt automatisch, ob ein Item wirklich <strong>neu</strong> ist oder nur ein
|
|
<strong>Qualitäts-Upgrade</strong> einer bereits existierenden Datei. Benachrichtigungen
|
|
werden intelligent gruppiert (z.B. "Episode 1-12 hinzugefügt").
|
|
</p>
|
|
</div>
|
|
|
|
<div class="verticalSection">
|
|
<h3 class="sectionTitle">Discord Einstellungen</h3>
|
|
|
|
<div class="inputContainer">
|
|
<label class="inputLabel inputLabelUnfocused" for="txtDiscordWebhookUrl">Discord Webhook URL</label>
|
|
<input is="emby-input" type="url" id="txtDiscordWebhookUrl" required />
|
|
<div class="fieldDescription">Die Webhook-URL deines Discord-Kanals</div>
|
|
</div>
|
|
|
|
<div class="inputContainer">
|
|
<label class="inputLabel inputLabelUnfocused" for="txtBotUsername">Bot Name</label>
|
|
<input is="emby-input" type="text" id="txtBotUsername" />
|
|
<div class="fieldDescription">Name des Bots in Discord</div>
|
|
</div>
|
|
|
|
<div class="inputContainer">
|
|
<label class="inputLabel inputLabelUnfocused" for="txtEmbedColor">Embed Farbe (Dezimal)</label>
|
|
<input is="emby-input" type="number" id="txtEmbedColor" />
|
|
<div class="fieldDescription">Discord Embed-Farbe als Dezimalzahl (z.B. 3447003 für Blau)</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="verticalSection">
|
|
<h3 class="sectionTitle">Server Einstellungen</h3>
|
|
|
|
<div class="inputContainer">
|
|
<label class="inputLabel inputLabelUnfocused" for="txtServerUrl">Server URL</label>
|
|
<input is="emby-input" type="url" id="txtServerUrl" placeholder="https://jellyfin.example.com" />
|
|
<div class="fieldDescription">Öffentliche URL deines Jellyfin-Servers (für Bilder in Discord)</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="verticalSection">
|
|
<h3 class="sectionTitle">Benachrichtigungstypen</h3>
|
|
|
|
<div class="checkboxContainer checkboxContainer-withDescription">
|
|
<label>
|
|
<input is="emby-checkbox" type="checkbox" id="chkEnableEpisodeNotifications" />
|
|
<span>Episoden-Benachrichtigungen</span>
|
|
</label>
|
|
<div class="fieldDescription checkboxFieldDescription">Benachrichtigungen für neue Episoden senden</div>
|
|
</div>
|
|
|
|
<div class="checkboxContainer checkboxContainer-withDescription">
|
|
<label>
|
|
<input is="emby-checkbox" type="checkbox" id="chkEnableMovieNotifications" />
|
|
<span>Film-Benachrichtigungen</span>
|
|
</label>
|
|
<div class="fieldDescription checkboxFieldDescription">Benachrichtigungen für neue Filme senden</div>
|
|
</div>
|
|
|
|
<div class="checkboxContainer checkboxContainer-withDescription">
|
|
<label>
|
|
<input is="emby-checkbox" type="checkbox" id="chkSuppressUpgrades" />
|
|
<span>Qualitäts-Upgrades unterdrücken</span>
|
|
</label>
|
|
<div class="fieldDescription checkboxFieldDescription">
|
|
Keine Benachrichtigungen senden, wenn eine Datei durch eine bessere Qualität ersetzt wird
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="verticalSection">
|
|
<h3 class="sectionTitle">Timing</h3>
|
|
|
|
<div class="inputContainer">
|
|
<label class="inputLabel inputLabelUnfocused" for="txtNotificationDelayMinutes">Verzögerung (Minuten)</label>
|
|
<input is="emby-input" type="number" id="txtNotificationDelayMinutes" min="1" max="60" />
|
|
<div class="fieldDescription">
|
|
Wartezeit bevor eine Benachrichtigung gesendet wird.
|
|
Erlaubt Metadaten-Aktualisierung und Erkennung von Ersetzungen.
|
|
</div>
|
|
</div>
|
|
|
|
<div class="inputContainer">
|
|
<label class="inputLabel inputLabelUnfocused" for="txtGroupingWindowMinutes">Gruppierungsfenster (Minuten)</label>
|
|
<input is="emby-input" type="number" id="txtGroupingWindowMinutes" min="5" max="120" />
|
|
<div class="fieldDescription">
|
|
Zeitfenster in dem Episoden derselben Serie zusammengefasst werden.
|
|
Z.B. bei 30 Minuten: Wenn Episode 1-12 innerhalb von 30 Minuten hinzugefügt werden,
|
|
wird nur eine Benachrichtigung gesendet.
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div>
|
|
<button is="emby-button" type="submit" class="raised button-submit block">
|
|
<span>Speichern</span>
|
|
</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
<script type="text/javascript">
|
|
var SmartNotifyConfig = {
|
|
pluginUniqueId: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890'
|
|
};
|
|
|
|
document.querySelector('#SmartNotifyConfigPage')
|
|
.addEventListener('pageshow', function () {
|
|
Dashboard.showLoadingMsg();
|
|
ApiClient.getPluginConfiguration(SmartNotifyConfig.pluginUniqueId).then(function (config) {
|
|
document.querySelector('#txtDiscordWebhookUrl').value = config.DiscordWebhookUrl || '';
|
|
document.querySelector('#txtBotUsername').value = config.BotUsername || 'Jellyfin SmartNotify';
|
|
document.querySelector('#txtEmbedColor').value = config.EmbedColor || 3447003;
|
|
document.querySelector('#txtServerUrl').value = config.ServerUrl || '';
|
|
document.querySelector('#chkEnableEpisodeNotifications').checked = config.EnableEpisodeNotifications;
|
|
document.querySelector('#chkEnableMovieNotifications').checked = config.EnableMovieNotifications;
|
|
document.querySelector('#chkSuppressUpgrades').checked = config.SuppressUpgrades;
|
|
document.querySelector('#txtNotificationDelayMinutes').value = config.NotificationDelayMinutes || 5;
|
|
document.querySelector('#txtGroupingWindowMinutes').value = config.GroupingWindowMinutes || 30;
|
|
Dashboard.hideLoadingMsg();
|
|
});
|
|
});
|
|
|
|
document.querySelector('#SmartNotifyConfigForm')
|
|
.addEventListener('submit', function (e) {
|
|
e.preventDefault();
|
|
Dashboard.showLoadingMsg();
|
|
ApiClient.getPluginConfiguration(SmartNotifyConfig.pluginUniqueId).then(function (config) {
|
|
config.DiscordWebhookUrl = document.querySelector('#txtDiscordWebhookUrl').value;
|
|
config.BotUsername = document.querySelector('#txtBotUsername').value;
|
|
config.EmbedColor = parseInt(document.querySelector('#txtEmbedColor').value) || 3447003;
|
|
config.ServerUrl = document.querySelector('#txtServerUrl').value;
|
|
config.EnableEpisodeNotifications = document.querySelector('#chkEnableEpisodeNotifications').checked;
|
|
config.EnableMovieNotifications = document.querySelector('#chkEnableMovieNotifications').checked;
|
|
config.SuppressUpgrades = document.querySelector('#chkSuppressUpgrades').checked;
|
|
config.NotificationDelayMinutes = parseInt(document.querySelector('#txtNotificationDelayMinutes').value) || 5;
|
|
config.GroupingWindowMinutes = parseInt(document.querySelector('#txtGroupingWindowMinutes').value) || 30;
|
|
ApiClient.updatePluginConfiguration(SmartNotifyConfig.pluginUniqueId, config).then(function () {
|
|
Dashboard.processPluginConfigurationUpdateResult();
|
|
});
|
|
});
|
|
return false;
|
|
});
|
|
</script>
|
|
</div>
|
|
</body>
|
|
</html>
|