diff --git a/airtime_mvc/public/js/airtime/library/events/library_playlistbuilder.js b/airtime_mvc/public/js/airtime/library/events/library_playlistbuilder.js
index 9309da3c4..88d66b111 100644
--- a/airtime_mvc/public/js/airtime/library/events/library_playlistbuilder.js
+++ b/airtime_mvc/public/js/airtime/library/events/library_playlistbuilder.js
@@ -5,16 +5,15 @@ var AIRTIME = (function(AIRTIME){
AIRTIME.library = {};
}
- AIRTIME.library.events = {};
- mod = AIRTIME.library.events;
+ mod = AIRTIME.library;
- mod.enableAddButtonCheck = function() {
- var selected = $('#library_display tr[id ^= "au"] input[type=checkbox]').filter(":checked"),
+ mod.checkAddButton = function() {
+ var selected = mod.getChosenItemsLength(),
sortable = $('#spl_sortable'),
check = false;
//make sure audioclips are selected and a playlist is currently open.
- if (selected.length !== 0 && sortable.length !== 0) {
+ if (selected !== 0 && sortable.length !== 0) {
check = true;
}
@@ -36,6 +35,9 @@ var AIRTIME = (function(AIRTIME){
mod.fnDrawCallback = function() {
+ mod.redrawChosen();
+ mod.checkToolBarIcons();
+
$('#library_display tr[id ^= "au"]').draggable({
helper: function(){
var selected = $('#library_display tr:not(:first) input:checked').parents('tr[id^="au"]'),
@@ -82,8 +84,9 @@ var AIRTIME = (function(AIRTIME){
$toolbar
.append("
")
.find('ul')
- .append('')
- .append('');
+ .append('')
+ .append('')
+ .append('');
//add to playlist button
$toolbar.find('.lib-button-add')
@@ -120,6 +123,8 @@ var AIRTIME = (function(AIRTIME){
AIRTIME.library.fnDeleteSelectedItems();
});
+
+ mod.createToolbarDropDown();
};
return AIRTIME;
diff --git a/airtime_mvc/public/js/airtime/library/events/library_showbuilder.js b/airtime_mvc/public/js/airtime/library/events/library_showbuilder.js
index 4d51a3719..1a3a416e7 100644
--- a/airtime_mvc/public/js/airtime/library/events/library_showbuilder.js
+++ b/airtime_mvc/public/js/airtime/library/events/library_showbuilder.js
@@ -5,16 +5,15 @@ var AIRTIME = (function(AIRTIME){
AIRTIME.library = {};
}
- AIRTIME.library.events = {};
- mod = AIRTIME.library.events;
+ mod = AIRTIME.library;
- mod.enableAddButtonCheck = function() {
- var selected = $('#library_display tr input[type=checkbox]').filter(":checked"),
+ mod.checkAddButton = function() {
+ var selected = mod.getChosenItemsLength(),
cursor = $('tr.cursor-selected-row'),
check = false;
//make sure library items are selected and a cursor is selected.
- if (selected.length !== 0 && cursor.length !== 0) {
+ if (selected !== 0 && cursor.length !== 0) {
check = true;
}
@@ -36,6 +35,9 @@ var AIRTIME = (function(AIRTIME){
mod.fnDrawCallback = function fnLibDrawCallback() {
+ mod.redrawChosen();
+ mod.checkToolBarIcons();
+
$('#library_display tr:not(:first)').draggable({
helper: function(){
var selected = $('#library_display tr:not(:first) input:checked').parents('tr'),
@@ -73,18 +75,18 @@ var AIRTIME = (function(AIRTIME){
},
cursor: 'pointer',
connectToSortable: '#show_builder_table'
- });
+ });
};
mod.setupLibraryToolbar = function() {
- var $toolbar = $(".lib-content .fg-toolbar:first"),
- $libTable = $("#library_display");
+ var $toolbar = $(".lib-content .fg-toolbar:first");
$toolbar
.append("")
.find('ul')
- .append('')
- .append('');
+ .append('')
+ .append('')
+ .append('');
//add to timeline button
$toolbar.find('.lib-button-add')
@@ -131,7 +133,9 @@ var AIRTIME = (function(AIRTIME){
}
AIRTIME.library.fnDeleteSelectedItems();
- });
+ });
+
+ mod.createToolbarDropDown();
};
return AIRTIME;
diff --git a/airtime_mvc/public/js/airtime/library/library.js b/airtime_mvc/public/js/airtime/library/library.js
index 6835d983b..f25c96967 100644
--- a/airtime_mvc/public/js/airtime/library/library.js
+++ b/airtime_mvc/public/js/airtime/library/library.js
@@ -4,38 +4,154 @@ var AIRTIME = (function(AIRTIME) {
oTable,
$libContent,
$libTable,
- LIB_SELECTED_CLASS = "lib-selected";
+ LIB_SELECTED_CLASS = "lib-selected",
+ chosenItems = {};
if (AIRTIME.library === undefined) {
AIRTIME.library = {};
}
mod = AIRTIME.library;
- mod.getSelectedData = function() {
- var $selected = $libTable.find("tbody").find("input:checkbox").filter(":checked").parents("tr"),
- aData = [],
- i, length,
- $item;
+ mod.getChosenItemsLength = function(){
+ var selected = Object.keys(chosenItems).length;
- for (i = 0, length = $selected.length; i < length; i++) {
- $item = $($selected.get(i));
- aData.push($item.data('aData'));
+ return selected;
+ };
+
+ mod.createToolbarDropDown = function() {
+
+ $.contextMenu({
+ selector: '#library_content .ui-icon-document-b',
+ trigger: "left",
+ ignoreRightClick: true,
+ items: {
+ "sp": {name: "Select This Page", callback: mod.selectCurrentPage},
+ "dp": {name: "Deselect This Page", callback: mod.deselectCurrentPage},
+ "sn": {name: "Deselect All", callback: mod.selectNone}
+ }
+ });
+ };
+
+ mod.checkDeleteButton = function() {
+ var selected = mod.getChosenItemsLength(),
+ check = false;
+
+ if (selected !== 0) {
+ check = true;
}
- return aData.reverse();
+ if (check === true) {
+ AIRTIME.button.enableButton("lib-button-delete");
+ }
+ else {
+ AIRTIME.button.disableButton("lib-button-delete");
+ }
};
- mod.selectAll = function () {
- $libTable.find("input:checkbox").attr("checked", true);
- };
-
- mod.selectNone = function () {
- $libTable.find("input:checkbox").attr("checked", false);
- $libTable.find("tr").removeClass(LIB_SELECTED_CLASS);
+ mod.checkToolBarIcons = function() {
- //disable all lib buttons.
- AIRTIME.button.disableButton("lib-button-delete");
- AIRTIME.button.disableButton("lib-button-add");
+ AIRTIME.library.checkAddButton();
+ AIRTIME.library.checkDeleteButton();
+ };
+
+ mod.getSelectedData = function() {
+ var id,
+ data = [];
+
+ for (id in chosenItems) {
+
+ if (chosenItems.hasOwnProperty(id)) {
+ data.push(chosenItems[id]);
+ }
+ }
+
+ return data;
+ };
+
+ mod.redrawChosen = function() {
+ var ids = Object.keys(chosenItems),
+ i, length,
+ $el;
+
+ for (i = 0, length = ids.length; i < length; i++) {
+ $el = $libTable.find("#"+ids[i]);
+
+ if ($el.length !== 0) {
+ mod.highlightItem($el);
+ }
+ }
+ };
+
+ mod.highlightItem = function($el) {
+ var $input = $el.find("input");
+
+ $input.attr("checked", true);
+ $el.addClass(LIB_SELECTED_CLASS);
+ };
+
+ mod.selectItem = function($el) {
+ var id;
+
+ mod.highlightItem($el);
+
+ id = $el.attr("id");
+ chosenItems[id] = $el.data('aData');
+
+ mod.checkToolBarIcons();
+ };
+
+ mod.deselectItem = function($el) {
+ var id,
+ $input = $el.find("input");
+
+ $input.attr("checked", false);
+ $el.removeClass(LIB_SELECTED_CLASS);
+
+ id = $el.attr("id");
+ delete chosenItems[id];
+
+ mod.checkToolBarIcons();
+ };
+
+ /*
+ * selects all items which the user can currently see.
+ * (behaviour taken from gmail)
+ */
+ mod.selectCurrentPage = function() {
+ var $trs = $libTable.find("tbody input:checkbox").parents("tr");
+
+ $trs.each(function(i, el){
+ $el = $(this);
+
+ mod.selectItem($el);
+ });
+ };
+
+ /*
+ * deselects all items that the user can currently see.
+ * (behaviour taken from gmail)
+ */
+ mod.deselectCurrentPage = function() {
+
+ var $trs = $libTable.find("tbody input:checkbox").filter(":checked").parents("tr");
+
+ $trs.each(function(i, el){
+ $el = $(this);
+
+ mod.deselectItem($el);
+ });
+ };
+
+ mod.selectNone = function() {
+ var $inputs = $libTable.find("tbody input:checkbox"),
+ $trs = $inputs.parents("tr");
+
+ $inputs.attr("checked", false);
+ $trs.removeClass(LIB_SELECTED_CLASS);
+
+ chosenItems = {};
+
+ mod.checkToolBarIcons();
};
mod.fnDeleteItems = function(aMedia) {
@@ -46,7 +162,7 @@ var AIRTIME = (function(AIRTIME) {
if (json.message !== undefined) {
alert(json.message);
}
-
+ chosenItems = {};
oTable.fnDraw();
});
};
@@ -80,7 +196,7 @@ var AIRTIME = (function(AIRTIME) {
//put hidden columns at the top to insure they can never be visible on the table through column reordering.
"aoColumns": [
/* ftype */ {"sTitle": "", "mDataProp": "ftype", "bSearchable": false, "bVisible": false},
- /* Checkbox */ {"sTitle": "", "mDataProp": "checkbox", "bSortable": false, "bSearchable": false, "sWidth": "25px", "sClass": "library_checkbox"},
+ /* Checkbox */ {"sTitle": "", "mDataProp": "checkbox", "bSortable": false, "bSearchable": false, "sWidth": "25px", "sClass": "library_checkbox"},
/* Type */ {"sTitle": "", "mDataProp": "image", "bSearchable": false, "sWidth": "25px", "sClass": "library_type", "iDataSort": 0},
/* Title */ {"sTitle": "Title", "mDataProp": "track_title", "sClass": "library_title"},
/* Creator */ {"sTitle": "Creator", "mDataProp": "artist_name", "sClass": "library_creator"},
@@ -181,7 +297,7 @@ var AIRTIME = (function(AIRTIME) {
"success": fnCallback
} );
},
- "fnRowCallback": AIRTIME.library.events.fnRowCallback,
+ "fnRowCallback": AIRTIME.library.fnRowCallback,
"fnCreatedRow": function( nRow, aData, iDataIndex ) {
//add the play function to the library_type td
@@ -248,13 +364,10 @@ var AIRTIME = (function(AIRTIME) {
//remove any selected nodes before the draw.
"fnPreDrawCallback": function( oSettings ) {
- AIRTIME.button.disableButton("lib-button-delete");
- AIRTIME.button.disableButton("lib-button-add");
+ //make sure any dragging helpers are removed or else they'll be stranded on the screen.
+ $("#draggingContainer").remove();
},
- "fnDrawCallback": AIRTIME.library.events.fnDrawCallback,
- "fnHeaderCallback": function(nHead) {
- $(nHead).find("input[type=checkbox]").attr("checked", false);
- },
+ "fnDrawCallback": AIRTIME.library.fnDrawCallback,
"aaSorting": [[3, 'asc']],
"sPaginationType": "full_numbers",
@@ -283,7 +396,7 @@ var AIRTIME = (function(AIRTIME) {
$libContent.find(".dataTables_scrolling").css("max-height", tableHeight);
- AIRTIME.library.events.setupLibraryToolbar(oTable);
+ AIRTIME.library.setupLibraryToolbar(oTable);
$("#library_display_type")
.addClass("dataTables_type")
@@ -296,65 +409,29 @@ var AIRTIME = (function(AIRTIME) {
.change(function(ev){
oTable.fnDraw();
});
-
- $libTable.find('[name="pl_cb_all"]').click(function() {
- var $cbs = $libTable.find("input:checkbox"),
- $trs;
-
- if ($(this).is(":checked")) {
- $cbs.attr("checked", true);
- //checking to enable buttons
-
- $trs = $cbs.parents("tr");
- $trs.addClass(LIB_SELECTED_CLASS);
-
- AIRTIME.button.enableButton("lib-button-delete");
- AIRTIME.library.events.enableAddButtonCheck();
- }
- else {
- $cbs.attr("checked", false);
-
- $trs = $cbs.parents("tr");
- $trs.removeClass(LIB_SELECTED_CLASS);
-
- AIRTIME.button.disableButton("lib-button-delete");
- AIRTIME.button.disableButton("lib-button-add");
- }
- });
$libTable.find("tbody").on("click", "input[type=checkbox]", function(ev) {
var $cb = $(this),
- $selectedCb,
$prev,
- $tr = $cb.parents("tr");
+ $tr = $cb.parents("tr"),
+ $trs;
if ($cb.is(":checked")) {
if (ev.shiftKey) {
$prev = $libTable.find("tbody").find("tr."+LIB_SELECTED_CLASS).eq(-1);
+ $trs = $prev.nextUntil($tr);
- $prev.nextUntil($tr)
- .addClass(LIB_SELECTED_CLASS)
- .find("input:checkbox")
- .attr("checked", true)
- .end();
+ $trs.each(function(i, el){
+ mod.selectItem($(el));
+ });
}
- $tr.addClass(LIB_SELECTED_CLASS);
- //checking to enable buttons
- AIRTIME.button.enableButton("lib-button-delete");
- AIRTIME.library.events.enableAddButtonCheck();
+ mod.selectItem($tr);
}
else {
- $selectedCb = $libTable.find("tbody input:checkbox").filter(":checked");
- $tr.removeClass(LIB_SELECTED_CLASS);
-
- //checking to disable buttons
- if ($selectedCb.length === 0) {
- AIRTIME.button.disableButton("lib-button-delete");
- }
- AIRTIME.library.events.enableAddButtonCheck();
+ mod.deselectItem($tr);
}
});
diff --git a/airtime_mvc/public/js/airtime/library/spl.js b/airtime_mvc/public/js/airtime/library/spl.js
index a3b01f335..927ca3d08 100644
--- a/airtime_mvc/public/js/airtime/library/spl.js
+++ b/airtime_mvc/public/js/airtime/library/spl.js
@@ -275,9 +275,9 @@ var AIRTIME = (function(AIRTIME){
}
function redrawLib() {
- var dt = $("#library_display").dataTable();
+ var dt = $lib.find("#library_display").dataTable();
- dt.fnStandingRedraw();
+ dt.fnDraw();
}
function setPlaylistContent(json) {
diff --git a/airtime_mvc/public/js/airtime/showbuilder/builder.js b/airtime_mvc/public/js/airtime/showbuilder/builder.js
index 3b211f9b6..4a115b120 100644
--- a/airtime_mvc/public/js/airtime/showbuilder/builder.js
+++ b/airtime_mvc/public/js/airtime/showbuilder/builder.js
@@ -50,6 +50,59 @@ var AIRTIME = (function(AIRTIME){
return mod.showInstances;
};
+ mod.checkTrimButton = function() {
+ $over = $sbTable.find(".sb-over");
+
+ if ($over.length !== 0) {
+ AIRTIME.button.enableButton("sb-button-trim");
+ }
+ else {
+ AIRTIME.button.disableButton("sb-button-trim");
+ }
+ };
+
+ mod.checkDeleteButton = function() {
+ $selected = $sbTable.find("tbody").find("input:checkbox").filter(":checked");
+
+ if ($selected.length !== 0) {
+ AIRTIME.button.enableButton("sb-button-delete");
+ }
+ else {
+ AIRTIME.button.disableButton("sb-button-delete");
+ }
+ };
+
+ mod.checkJumpToCurrentButton = function() {
+ $current = $sbTable.find(".sb-now-playing");
+
+ if ($current.length !== 0) {
+ AIRTIME.button.enableButton("sb-button-current");
+ }
+ else {
+ AIRTIME.button.disableButton("sb-button-current");
+ }
+ };
+
+ mod.checkCancelButton = function() {
+ $current = $sbTable.find(".sb-current-show");
+
+ if ($current.length !== 0) {
+ AIRTIME.button.enableButton("sb-button-cancel");
+ }
+ else {
+ AIRTIME.button.disableButton("sb-button-cancel");
+ }
+ };
+
+ mod.checkToolBarIcons = function() {
+
+ AIRTIME.library.checkAddButton();
+ mod.checkTrimButton();
+ mod.checkDeleteButton();
+ mod.checkJumpToCurrentButton();
+ mod.checkCancelButton();
+ };
+
mod.getSelectedData = function() {
var $selected = $sbTable.find("tbody").find("input:checkbox").filter(":checked").parents("tr"),
aData = [],
@@ -65,11 +118,25 @@ var AIRTIME = (function(AIRTIME){
};
mod.selectAll = function () {
- $sbTable.find("input:checkbox").attr("checked", true);
+ $inputs = $sbTable.find("input:checkbox");
+
+ $inputs.attr("checked", true);
+
+ $trs = $inputs.parents("tr");
+ $trs.addClass(SB_SELECTED_CLASS);
+
+ mod.checkToolBarIcons();
};
mod.selectNone = function () {
- $sbTable.find("input:checkbox").attr("checked", false);
+ $inputs = $sbTable.find("input:checkbox");
+
+ $inputs.attr("checked", false);
+
+ $trs = $inputs.parents("tr");
+ $trs.removeClass(SB_SELECTED_CLASS);
+
+ mod.checkToolBarIcons();
};
mod.fnAdd = function(aMediaIds, aSchedIds) {
@@ -79,7 +146,6 @@ var AIRTIME = (function(AIRTIME){
function(json){
checkError(json);
oSchedTable.fnDraw();
- AIRTIME.library.selectNone();
});
};
@@ -155,7 +221,7 @@ var AIRTIME = (function(AIRTIME){
oSchedTable = $sbTable.dataTable( {
"aoColumns": [
- /* checkbox */ {"mDataProp": "allowed", "sTitle": "", "sWidth": "15px", "sClass": "sb-checkbox"},
+ /* checkbox */ {"mDataProp": "allowed", "sTitle": "", "sWidth": "15px", "sClass": "sb-checkbox"},
/* Type */ {"mDataProp": "image", "sTitle": "", "sClass": "library_image sb-image", "sWidth": "16px"},
/* starts */ {"mDataProp": "starts", "sTitle": "Start", "sClass": "sb-starts", "sWidth": "60px"},
/* ends */ {"mDataProp": "ends", "sTitle": "End", "sClass": "sb-ends", "sWidth": "60px"},
@@ -428,15 +494,6 @@ var AIRTIME = (function(AIRTIME){
//make sure any dragging helpers are removed or else they'll be stranded on the screen.
$("#draggingContainer").remove();
-
- //disable jump to current button.
- AIRTIME.button.disableButton("sb-button-delete");
- //disable jump to current button.
- AIRTIME.button.disableButton("sb-button-current");
- //disable deleting of overbooked tracks.
- AIRTIME.button.disableButton("sb-button-trim");
- //disable cancelling current show.
- AIRTIME.button.disableButton("sb-button-cancel");
},
"fnDrawCallback": function fnBuilderDrawCallback(oSettings, json) {
var wrapperDiv,
@@ -514,7 +571,7 @@ var AIRTIME = (function(AIRTIME){
aData = temp.data("aData");
setTimeout(function(){
- AIRTIME.showbuilder.resetTimestamp();
+ mod.resetTimestamp();
oSchedTable.fnDraw();
}, aData.refresh * 1000); //need refresh in milliseconds
@@ -522,31 +579,9 @@ var AIRTIME = (function(AIRTIME){
}
}
- //now playing item exists.
- if (elements[0].length > 0) {
- //enable jump to current button.
- AIRTIME.button.enableButton("sb-button-current");
- }
-
- //check if there are any overbooked tracks on screen to enable the trim button.
- $tr = $sbTable.find("tr.sb-over.sb-future");
- if ($tr.length > 0) {
- //enable deleting of overbooked tracks.
- AIRTIME.button.enableButton("sb-button-trim");
- }
-
- $tr = $sbTable.find('tr.sb-future:first');
- if ($tr.hasClass('sb-current-show')) {
- //enable cancelling current show.
- AIRTIME.button.enableButton("sb-button-cancel");
- }
-
- AIRTIME.library.events.enableAddButtonCheck();
+ mod.checkToolBarIcons();
},
- "fnHeaderCallback": function(nHead) {
- $(nHead).find("input[type=checkbox]").attr("checked", false);
- },
-
+
"oColVis": {
"aiExclude": [ 0, 1 ]
},
@@ -562,34 +597,9 @@ var AIRTIME = (function(AIRTIME){
"sAjaxSource": "/showbuilder/builder-feed"
});
- //adding checkbox events.
- $sbTable.find('[name="sb_cb_all"]').click(function() {
- var $cbs = $sbTable.find("input:checkbox"),
- $trs;
-
- if ($(this).is(":checked")) {
- $cbs.attr("checked", true);
- //checking to enable buttons
-
- $trs = $cbs.parents("tr");
- $trs.addClass(SB_SELECTED_CLASS);
-
- AIRTIME.button.enableButton("sb-button-delete");
- }
- else {
- $cbs.attr("checked", false);
-
- $trs = $cbs.parents("tr");
- $trs.removeClass(SB_SELECTED_CLASS);
-
- AIRTIME.button.disableButton("sb-button-delete");
- }
- });
-
$sbTable.find("tbody").on("click", "input:checkbox", function(ev) {
var $cb = $(this),
- $selectedCb,
$tr = $cb.parents("tr"),
$prev;
@@ -606,18 +616,12 @@ var AIRTIME = (function(AIRTIME){
}
$tr.addClass(SB_SELECTED_CLASS);
- //checking to enable buttons
- AIRTIME.button.enableButton("sb-button-delete");
}
else {
- $selectedCb = $sbTable.find("tbody input:checkbox").filter(":checked");
$tr.removeClass(SB_SELECTED_CLASS);
-
- //checking to disable buttons
- if ($selectedCb.length === 0) {
- AIRTIME.button.disableButton("sb-button-delete");
- }
}
+
+ mod.checkToolBarIcons();
});
var sortableConf = (function(){
@@ -772,15 +776,26 @@ var AIRTIME = (function(AIRTIME){
$toolbar = $(".sb-content .fg-toolbar");
$ul = $("");
- $ul.append('')
- .append('');
+ $ul.append('')
+ .append('')
+ .append('');
$toolbar.append($ul);
$ul = $("");
- $ul.append('')
- .append('');
+ $ul.append('')
+ .append('');
$toolbar.append($ul);
+ $.contextMenu({
+ selector: '#show_builder .ui-icon-document-b',
+ trigger: "left",
+ ignoreRightClick: true,
+ items: {
+ "sa": {name: "Select All", callback: mod.selectAll},
+ "sn": {name: "Select None", callback: mod.selectNone}
+ }
+ });
+
//jump to current
$toolbar.find('.sb-button-cancel')
.click(function() {
@@ -875,8 +890,7 @@ var AIRTIME = (function(AIRTIME){
.removeClass(cursorSelClass);
}
- //check if add button can still be enabled.
- AIRTIME.library.events.enableAddButtonCheck();
+ mod.checkToolBarIcons();
return false;
});
diff --git a/python_apps/media-monitor/airtime-media-monitor b/python_apps/media-monitor/airtime-media-monitor
index a02f11735..35d2080d0 100755
--- a/python_apps/media-monitor/airtime-media-monitor
+++ b/python_apps/media-monitor/airtime-media-monitor
@@ -6,7 +6,7 @@ virtualenv_bin="/usr/lib/airtime/airtime_virtualenv/bin/"
. ${virtualenv_bin}activate
media_monitor_path="/usr/lib/airtime/media-monitor/"
-media_monitor_script="MediaMonitor.py"
+media_monitor_script="media_monitor.py"
api_client_path="/usr/lib/airtime/"
diff --git a/python_apps/media-monitor/MediaMonitor.py b/python_apps/media-monitor/media_monitor.py
similarity index 90%
rename from python_apps/media-monitor/MediaMonitor.py
rename to python_apps/media-monitor/media_monitor.py
index bcf9a0a3b..f999b791e 100644
--- a/python_apps/media-monitor/MediaMonitor.py
+++ b/python_apps/media-monitor/media_monitor.py
@@ -41,12 +41,15 @@ logger.info("\n\n*** Media Monitor bootup ***\n\n")
try:
- fs_encoding = locale.getdefaultlocale()[1].lower()
- if fs_encoding not in ['utf-8', 'utf8']:
- logger.error("Filesystem encoding needs to be UTF-8. Currently '%s'. Exiting..." % fs_encoding)
- sys.exit(1)
+ fs_encoding = locale.getdefaultlocale()[1]
+ if fs_encoding is not None:
+ if fs_encoding not in ['utf-8', 'utf8']:
+ logger.error("Filesystem encoding needs to be UTF-8. Currently '%s'. Exiting..." % fs_encoding)
+ sys.exit(1)
+ else:
+ logger.debug("Filesystem encoding: '%s'" % fs_encoding)
else:
- logger.debug("Filesystem encoding: '%s'" % fs_encoding)
+ logger.debug("Unknown encoding")
config = AirtimeMediaConfig(logger)