mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00

Addition of the option in Auto-Organize to copy or move files from watch folder. Fix to use the Overwrite Existing File option from the config rather than hardcoded value.
166 lines
5.6 KiB
JavaScript
166 lines
5.6 KiB
JavaScript
(function ($, document, window) {
|
|
|
|
function updateSeasonPatternHelp(page, value) {
|
|
|
|
var replacementHtmlResult = 'Result: ' + value.replace('%s', '1').replace('%0s', '01').replace('%00s', '001');
|
|
|
|
$('.seasonFolderFieldDescription', page).html(replacementHtmlResult);
|
|
}
|
|
|
|
function getEpisodeFileName(value, enableMultiEpisode) {
|
|
|
|
var seriesName = "Series Name";
|
|
var episodeTitle = "Episode Four";
|
|
|
|
var result = value.replace('%sn', seriesName)
|
|
.replace('%s.n', seriesName.replace(' ', '.'))
|
|
.replace('%s_n', seriesName.replace(' ', '_'))
|
|
.replace('%s', '1')
|
|
.replace('%0s', '01')
|
|
.replace('%00s', '001')
|
|
.replace('%ext', 'mkv')
|
|
.replace('%en', episodeTitle)
|
|
.replace('%e.n', episodeTitle.replace(' ', '.'))
|
|
.replace('%e_n', episodeTitle.replace(' ', '_'));
|
|
|
|
if (enableMultiEpisode) {
|
|
result = result
|
|
.replace('%ed', '5')
|
|
.replace('%0ed', '05')
|
|
.replace('%00ed', '005');
|
|
}
|
|
|
|
return result
|
|
.replace('%e', '4')
|
|
.replace('%0e', '04')
|
|
.replace('%00e', '004');
|
|
}
|
|
|
|
function updateEpisodePatternHelp(page, value) {
|
|
|
|
value = getEpisodeFileName(value, false);
|
|
|
|
var replacementHtmlResult = 'Result: ' + value;
|
|
|
|
$('.episodePatternDescription', page).html(replacementHtmlResult);
|
|
}
|
|
|
|
function updateMultiEpisodePatternHelp(page, value) {
|
|
|
|
value = getEpisodeFileName(value, true);
|
|
|
|
var replacementHtmlResult = 'Result: ' + value;
|
|
|
|
$('.multiEpisodePatternDescription', page).html(replacementHtmlResult);
|
|
}
|
|
|
|
function loadPage(page, config) {
|
|
|
|
var tvOptions = config.TvFileOrganizationOptions;
|
|
|
|
$('#chkEnableTvSorting', page).checked(tvOptions.IsEnabled).checkboxradio('refresh');
|
|
$('#chkOverwriteExistingEpisodes', page).checked(tvOptions.OverwriteExistingEpisodes).checkboxradio('refresh');
|
|
$('#chkDeleteEmptyFolders', page).checked(tvOptions.DeleteEmptyFolders).checkboxradio('refresh');
|
|
|
|
$('#txtMinFileSize', page).val(tvOptions.MinFileSizeMb);
|
|
$('#txtSeasonFolderPattern', page).val(tvOptions.SeasonFolderPattern).trigger('change');
|
|
$('#txtSeasonZeroName', page).val(tvOptions.SeasonZeroFolderName);
|
|
$('#txtWatchFolder', page).val(tvOptions.WatchLocations[0] || '');
|
|
|
|
$('#txtEpisodePattern', page).val(tvOptions.EpisodeNamePattern).trigger('change');
|
|
$('#txtMultiEpisodePattern', page).val(tvOptions.MultiEpisodeNamePattern).trigger('change');
|
|
|
|
$('#txtDeleteLeftOverFiles', page).val(tvOptions.LeftOverFileExtensionsToDelete.join(';'));
|
|
|
|
$('#copyOrMoveFile', page).val(tvOptions.CopyOriginalFile.toString()).selectmenu('refresh');
|
|
|
|
}
|
|
|
|
$(document).on('pageinit', "#libraryFileOrganizerPage", function () {
|
|
|
|
var page = this;
|
|
|
|
$('#txtSeasonFolderPattern', page).on('change keyup', function () {
|
|
|
|
updateSeasonPatternHelp(page, this.value);
|
|
|
|
});
|
|
|
|
$('#txtEpisodePattern', page).on('change keyup', function () {
|
|
|
|
updateEpisodePatternHelp(page, this.value);
|
|
|
|
});
|
|
|
|
$('#txtMultiEpisodePattern', page).on('change keyup', function () {
|
|
|
|
updateMultiEpisodePatternHelp(page, this.value);
|
|
|
|
});
|
|
|
|
$('#btnSelectWatchFolder', page).on("click.selectDirectory", function () {
|
|
|
|
var picker = new DirectoryBrowser(page);
|
|
|
|
picker.show({
|
|
|
|
callback: function (path) {
|
|
|
|
if (path) {
|
|
$('#txtWatchFolder', page).val(path);
|
|
}
|
|
picker.close();
|
|
},
|
|
|
|
header: "Select Watch Folder",
|
|
|
|
instruction: "Browse or enter the path to your watch folder. The folder must be writeable."
|
|
});
|
|
});
|
|
|
|
}).on('pageshow', "#libraryFileOrganizerPage", function () {
|
|
|
|
var page = this;
|
|
|
|
ApiClient.getServerConfiguration().done(function (config) {
|
|
loadPage(page, config);
|
|
});
|
|
});
|
|
|
|
window.LibraryFileOrganizerPage = {
|
|
|
|
onSubmit: function() {
|
|
|
|
var form = this;
|
|
|
|
ApiClient.getServerConfiguration().done(function (config) {
|
|
|
|
var tvOptions = config.TvFileOrganizationOptions;
|
|
|
|
tvOptions.IsEnabled = $('#chkEnableTvSorting', form).checked();
|
|
tvOptions.OverwriteExistingEpisodes = $('#chkOverwriteExistingEpisodes', form).checked();
|
|
tvOptions.DeleteEmptyFolders = $('#chkDeleteEmptyFolders', form).checked();
|
|
|
|
tvOptions.MinFileSizeMb = $('#txtMinFileSize', form).val();
|
|
tvOptions.SeasonFolderPattern = $('#txtSeasonFolderPattern', form).val();
|
|
tvOptions.SeasonZeroFolderName = $('#txtSeasonZeroName', form).val();
|
|
|
|
tvOptions.EpisodeNamePattern = $('#txtEpisodePattern', form).val();
|
|
tvOptions.MultiEpisodeNamePattern = $('#txtMultiEpisodePattern', form).val();
|
|
|
|
tvOptions.LeftOverFileExtensionsToDelete = $('#txtDeleteLeftOverFiles', form).val().split(';');
|
|
|
|
var watchLocation = $('#txtWatchFolder', form).val();
|
|
tvOptions.WatchLocations = watchLocation ? [watchLocation] : [];
|
|
|
|
tvOptions.CopyOriginalFile = $('#copyOrMoveFile', form).val();
|
|
|
|
ApiClient.updateServerConfiguration(config).done(Dashboard.processServerConfigurationUpdateResult);
|
|
});
|
|
|
|
return false;
|
|
}
|
|
|
|
};
|
|
|
|
})(jQuery, document, window);
|