mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
update recording saving
This commit is contained in:
parent
8d12419c5e
commit
0209b950a1
4 changed files with 88 additions and 22 deletions
|
@ -39,6 +39,23 @@
|
||||||
<div class="fieldDescription">${LabelRecordingPathHelp}</div>
|
<div class="fieldDescription">${LabelRecordingPathHelp}</div>
|
||||||
</div>
|
</div>
|
||||||
<br />
|
<br />
|
||||||
|
<div>
|
||||||
|
<paper-checkbox id="chkEnableRecordingSubfolders">${OptionEnableRecordingSubfolders}</paper-checkbox>
|
||||||
|
</div>
|
||||||
|
<div class="hide">
|
||||||
|
<br />
|
||||||
|
<paper-input id="txtMovieRecordingPath" label="${LabelMovieRecordingPath}" style="width:84%;display:inline-block;"></paper-input>
|
||||||
|
<paper-icon-button id="btnSelectMovieRecordingPath" icon="search"></paper-icon-button>
|
||||||
|
</div>
|
||||||
|
<div class="hide">
|
||||||
|
<paper-input id="txtSeriesRecordingPath" label="${LabelSeriesRecordingPath}" style="width:84%;display:inline-block;"></paper-input>
|
||||||
|
<paper-icon-button id="btnSelectSeriesRecordingPath" icon="search"></paper-icon-button>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
<div>
|
||||||
|
<paper-checkbox id="chkOrganize">${OptionSendRecordingsToAutoOrganize}</paper-checkbox>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
<br />
|
<br />
|
||||||
<div>
|
<div>
|
||||||
<paper-checkbox id="chkConvertRecordings">${OptionConvertRecordingsToStreamingFormat}</paper-checkbox>
|
<paper-checkbox id="chkConvertRecordings">${OptionConvertRecordingsToStreamingFormat}</paper-checkbox>
|
||||||
|
@ -52,12 +69,6 @@
|
||||||
</div>
|
</div>
|
||||||
<br />
|
<br />
|
||||||
<br />
|
<br />
|
||||||
<div>
|
|
||||||
<paper-checkbox id="chkOrganize">${OptionSendRecordingsToAutoOrganize}</paper-checkbox>
|
|
||||||
<div class="fieldDescription paperCheckboxFieldDescription">${OptionSendRecordingsToAutoOrganizeHelp}</div>
|
|
||||||
</div>
|
|
||||||
<br />
|
|
||||||
<br />
|
|
||||||
<div>
|
<div>
|
||||||
<h1>${HeaderDefaultPadding}</h1>
|
<h1>${HeaderDefaultPadding}</h1>
|
||||||
<div>
|
<div>
|
||||||
|
|
|
@ -12,11 +12,15 @@
|
||||||
$('#chkConvertRecordings', page).checked(config.EnableRecordingEncoding);
|
$('#chkConvertRecordings', page).checked(config.EnableRecordingEncoding);
|
||||||
$('#chkPreserveAudio', page).checked(config.EnableOriginalAudioWithEncodedRecordings || false);
|
$('#chkPreserveAudio', page).checked(config.EnableOriginalAudioWithEncodedRecordings || false);
|
||||||
|
|
||||||
$('#txtRecordingPath', page).val(config.RecordingPath || '');
|
|
||||||
|
|
||||||
$('#txtPrePaddingMinutes', page).val(config.PrePaddingSeconds / 60);
|
$('#txtPrePaddingMinutes', page).val(config.PrePaddingSeconds / 60);
|
||||||
$('#txtPostPaddingMinutes', page).val(config.PostPaddingSeconds / 60);
|
$('#txtPostPaddingMinutes', page).val(config.PostPaddingSeconds / 60);
|
||||||
|
|
||||||
|
page.querySelector('#txtRecordingPath').value = config.RecordingPath || '';
|
||||||
|
page.querySelector('#txtMovieRecordingPath').value = config.MovieRecordingPath || '';
|
||||||
|
page.querySelector('#txtSeriesRecordingPath').value = config.SeriesRecordingPath || '';
|
||||||
|
|
||||||
|
page.querySelector('#chkEnableRecordingSubfolders').checked = config.EnableRecordingSubfolders || false;
|
||||||
|
|
||||||
Dashboard.hideLoadingMsg();
|
Dashboard.hideLoadingMsg();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,10 +37,13 @@
|
||||||
config.EnableAutoOrganize = $('#chkOrganize', form).checked();
|
config.EnableAutoOrganize = $('#chkOrganize', form).checked();
|
||||||
config.EnableRecordingEncoding = $('#chkConvertRecordings', form).checked();
|
config.EnableRecordingEncoding = $('#chkConvertRecordings', form).checked();
|
||||||
config.EnableOriginalAudioWithEncodedRecordings = $('#chkPreserveAudio', form).checked();
|
config.EnableOriginalAudioWithEncodedRecordings = $('#chkPreserveAudio', form).checked();
|
||||||
config.RecordingPath = $('#txtRecordingPath', form).val() || null;
|
config.RecordingPath = form.querySelector('#txtRecordingPath').value || null;
|
||||||
|
config.MovieRecordingPath = form.querySelector('#txtMovieRecordingPath').value || null;
|
||||||
|
config.SeriesRecordingPath = form.querySelector('#txtSeriesRecordingPath').value || null;
|
||||||
|
|
||||||
config.PrePaddingSeconds = $('#txtPrePaddingMinutes', form).val() * 60;
|
config.PrePaddingSeconds = $('#txtPrePaddingMinutes', form).val() * 60;
|
||||||
config.PostPaddingSeconds = $('#txtPostPaddingMinutes', form).val() * 60;
|
config.PostPaddingSeconds = $('#txtPostPaddingMinutes', form).val() * 60;
|
||||||
|
config.EnableRecordingSubfolders = form.querySelector('#chkEnableRecordingSubfolders').checked;
|
||||||
|
|
||||||
ApiClient.updateNamedConfiguration("livetv", config).then(Dashboard.processServerConfigurationUpdateResult);
|
ApiClient.updateNamedConfiguration("livetv", config).then(Dashboard.processServerConfigurationUpdateResult);
|
||||||
});
|
});
|
||||||
|
@ -86,6 +93,44 @@
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$('#btnSelectMovieRecordingPath', page).on("click.selectDirectory", function () {
|
||||||
|
|
||||||
|
require(['directorybrowser'], function (directoryBrowser) {
|
||||||
|
|
||||||
|
var picker = new directoryBrowser();
|
||||||
|
|
||||||
|
picker.show({
|
||||||
|
|
||||||
|
callback: function (path) {
|
||||||
|
|
||||||
|
if (path) {
|
||||||
|
$('#txtMovieRecordingPath', page).val(path);
|
||||||
|
}
|
||||||
|
picker.close();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#btnSelectSeriesRecordingPath', page).on("click.selectDirectory", function () {
|
||||||
|
|
||||||
|
require(['directorybrowser'], function (directoryBrowser) {
|
||||||
|
|
||||||
|
var picker = new directoryBrowser();
|
||||||
|
|
||||||
|
picker.show({
|
||||||
|
|
||||||
|
callback: function (path) {
|
||||||
|
|
||||||
|
if (path) {
|
||||||
|
$('#txtSeriesRecordingPath', page).val(path);
|
||||||
|
}
|
||||||
|
picker.close();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
}).on('pageshow', "#liveTvSettingsPage", function () {
|
}).on('pageshow', "#liveTvSettingsPage", function () {
|
||||||
|
|
||||||
LibraryMenu.setTabs('livetvadmin', 1, getTabs);
|
LibraryMenu.setTabs('livetvadmin', 1, getTabs);
|
||||||
|
|
|
@ -163,12 +163,14 @@
|
||||||
|
|
||||||
function getAppInfo() {
|
function getAppInfo() {
|
||||||
|
|
||||||
if (AppInfo.nativeApp) {
|
var frequency = 86400000;
|
||||||
return Promise.resolve('');
|
|
||||||
|
if (AppInfo.isNativeApp) {
|
||||||
|
frequency = 604800000;
|
||||||
}
|
}
|
||||||
|
|
||||||
var cacheKey = 'lastappinfopresent5';
|
var cacheKey = 'lastappinfopresent5';
|
||||||
if ((new Date().getTime() - parseInt(appSettings.get(cacheKey) || '0')) < 86400000) {
|
if ((new Date().getTime() - parseInt(appSettings.get(cacheKey) || '0')) < frequency) {
|
||||||
return Promise.resolve('');
|
return Promise.resolve('');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -180,7 +182,11 @@
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
var infos = [getTheaterInfo, getPremiereInfo];
|
var infos = [getPremiereInfo];
|
||||||
|
|
||||||
|
if (!browserInfo.safari || !AppInfo.isNativeApp) {
|
||||||
|
infos.push(getTheaterInfo);
|
||||||
|
}
|
||||||
|
|
||||||
appSettings.set(cacheKey, new Date().getTime());
|
appSettings.set(cacheKey, new Date().getTime());
|
||||||
|
|
||||||
|
@ -198,7 +204,9 @@
|
||||||
var html = '';
|
var html = '';
|
||||||
html += '<div>';
|
html += '<div>';
|
||||||
html += '<h1>Try Emby Theater<paper-icon-button icon="close" onclick="jQuery(this.parentNode.parentNode).remove();" style="margin-left:1em;"></paper-icon-button></h1>';
|
html += '<h1>Try Emby Theater<paper-icon-button icon="close" onclick="jQuery(this.parentNode.parentNode).remove();" style="margin-left:1em;"></paper-icon-button></h1>';
|
||||||
html += '<p>A beautiful app for your TV and large screen tablet. <a href="https://emby.media/download" target="_blank">Emby Theater</a> runs on Windows, Xbox One, Google Chrome, FireFox, Microsoft Edge and Opera.</p>';
|
|
||||||
|
var nameText = AppInfo.isNativeApp ? 'Emby Theater' : '<a href="https://emby.media/download" target="_blank">Emby Theater</a>';
|
||||||
|
html += '<p>A beautiful app for your TV and large screen tablet. ' + nameText + ' runs on Windows, Xbox One, Google Chrome, FireFox, Microsoft Edge and Opera.</p>';
|
||||||
html += '<div class="itemsContainer">';
|
html += '<div class="itemsContainer">';
|
||||||
html += getCard('https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/apps/theater1.png', 'https://emby.media/download');
|
html += getCard('https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/apps/theater1.png', 'https://emby.media/download');
|
||||||
html += getCard('https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/apps/theater2.png', 'https://emby.media/download');
|
html += getCard('https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/apps/theater2.png', 'https://emby.media/download');
|
||||||
|
@ -214,7 +222,10 @@
|
||||||
var html = '';
|
var html = '';
|
||||||
html += '<div>';
|
html += '<div>';
|
||||||
html += '<h1>Try Emby Premiere<paper-icon-button icon="close" onclick="jQuery(this.parentNode.parentNode).remove();" style="margin-left:1em;"></paper-icon-button></h1>';
|
html += '<h1>Try Emby Premiere<paper-icon-button icon="close" onclick="jQuery(this.parentNode.parentNode).remove();" style="margin-left:1em;"></paper-icon-button></h1>';
|
||||||
html += '<p>Design beautiful Cover Art, enjoy free access to Emby apps, and more. <a href="https://emby.media/premiere" target="_blank">Learn more</a></p>';
|
|
||||||
|
var learnMoreText = AppInfo.isNativeApp ? '' : '<a href="https://emby.media/premiere" target="_blank">Learn more</a>';
|
||||||
|
|
||||||
|
html += '<p>Design beautiful Cover Art, enjoy free access to Emby apps, and more. ' + learnMoreText + '</p>';
|
||||||
html += '<div class="itemsContainer">';
|
html += '<div class="itemsContainer">';
|
||||||
html += getCard('https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/apps/theater1.png', 'https://emby.media/premiere');
|
html += getCard('https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/apps/theater1.png', 'https://emby.media/premiere');
|
||||||
html += getCard('https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/apps/theater2.png', 'https://emby.media/premiere');
|
html += getCard('https://raw.githubusercontent.com/MediaBrowser/Emby.Resources/master/apps/theater2.png', 'https://emby.media/premiere');
|
||||||
|
|
|
@ -347,8 +347,10 @@
|
||||||
"LabelCustomPaths": "Specify custom paths where desired. Leave fields empty to use the defaults.",
|
"LabelCustomPaths": "Specify custom paths where desired. Leave fields empty to use the defaults.",
|
||||||
"LabelCachePath": "Cache path:",
|
"LabelCachePath": "Cache path:",
|
||||||
"LabelCachePathHelp": "Specify a custom location for server cache files, such as images. Leave blank to use the server default.",
|
"LabelCachePathHelp": "Specify a custom location for server cache files, such as images. Leave blank to use the server default.",
|
||||||
"LabelRecordingPath": "Recording path:",
|
"LabelRecordingPath": "Default recording path:",
|
||||||
"LabelRecordingPathHelp": "Specify a custom location to save recordings. Leave blank to use the server default.",
|
"LabelMovieRecordingPath": "Movie recording path (optional):",
|
||||||
|
"LabelSeriesRecordingPath": "Series recording path (optional):",
|
||||||
|
"LabelRecordingPathHelp": "Specify the default location to save recordings. If left empty, the server's program data folder will be used.",
|
||||||
"LabelImagesByNamePath": "Images by name path:",
|
"LabelImagesByNamePath": "Images by name path:",
|
||||||
"LabelImagesByNamePathHelp": "Specify a custom location for downloaded actor, genre and studio images.",
|
"LabelImagesByNamePathHelp": "Specify a custom location for downloaded actor, genre and studio images.",
|
||||||
"LabelMetadataPath": "Metadata path:",
|
"LabelMetadataPath": "Metadata path:",
|
||||||
|
@ -1486,14 +1488,11 @@
|
||||||
"MessageActiveSubscriptionRequiredSeriesRecordings": "An active Emby Premiere subscription is required in order to create automated series recordings.",
|
"MessageActiveSubscriptionRequiredSeriesRecordings": "An active Emby Premiere subscription is required in order to create automated series recordings.",
|
||||||
"HeaderSetupTVGuide": "Setup TV Guide",
|
"HeaderSetupTVGuide": "Setup TV Guide",
|
||||||
"LabelDataProvider": "Data provider:",
|
"LabelDataProvider": "Data provider:",
|
||||||
"OptionSendRecordingsToAutoOrganize": "Enable Auto-Organize for new recordings",
|
"OptionSendRecordingsToAutoOrganize": "Automatically organize recordings into existing series folders in other libraries",
|
||||||
"OptionSendRecordingsToAutoOrganizeHelp": "New recordings will be sent to the Auto-Organize feature and imported into your media library.",
|
|
||||||
"HeaderDefaultPadding": "Default Padding",
|
"HeaderDefaultPadding": "Default Padding",
|
||||||
|
"OptionEnableRecordingSubfolders": "Create sub-folders for categories such as Sports, Kids, etc.",
|
||||||
"HeaderSubtitles": "Subtitles",
|
"HeaderSubtitles": "Subtitles",
|
||||||
"HeaderVideos": "Videos",
|
"HeaderVideos": "Videos",
|
||||||
"OptionEnableVideoFrameAnalysis": "Enable frame by frame video analysis",
|
|
||||||
"OptionEnableVideoFrameAnalysisHelp": "Extract detailed information about videos that can be used to make transcoding as efficient as possible. This will cause library scans to take longer.",
|
|
||||||
"LabelVideoFrameAnalysisLimit": "Limit frame by frame analysis to videos less than:",
|
|
||||||
"LabelHardwareAccelerationType": "Hardware acceleration:",
|
"LabelHardwareAccelerationType": "Hardware acceleration:",
|
||||||
"LabelHardwareAccelerationTypeHelp": "Available on supported systems only.",
|
"LabelHardwareAccelerationTypeHelp": "Available on supported systems only.",
|
||||||
"ButtonServerDashboard": "Server Dashboard",
|
"ButtonServerDashboard": "Server Dashboard",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue