diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 368df56a3e44ab02870c166dcf01b5f72aec5ce1..a12cde17fd61b22bc2cb175e82902cc1c96864b5 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -6,8 +6,9 @@ </component> <component name="ChangeListManager"> <list default="true" id="c58ca86a-4167-4474-accb-41439a535514" name="Default" comment=""> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/modules/liquidsoap/simplestmixer.log" afterPath="$PROJECT_DIR$/modules/liquidsoap/simplestmixer.log" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/modules/scheduling/scheduler.py" afterPath="$PROJECT_DIR$/modules/scheduling/scheduler.py" /> + <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" /> + <change beforePath="$PROJECT_DIR$/libraries/base/calendar.py" afterPath="$PROJECT_DIR$/libraries/base/calendar.py" /> + <change beforePath="$PROJECT_DIR$/libraries/enum/redischannels.py" afterPath="$PROJECT_DIR$/libraries/enum/redischannels.py" /> </list> <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" /> <option name="TRACKING_ENABLED" value="true" /> @@ -21,7 +22,7 @@ <file leaf-file-name="controller.py" pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/modules/controller/controller.py"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="212"> + <state relative-caret-position="0"> <caret line="84" column="51" lean-forward="false" selection-start-line="84" selection-start-column="51" selection-end-line="84" selection-end-column="51" /> <folding> <element signature="e#43#56#0" expanded="true" /> @@ -33,8 +34,20 @@ <file leaf-file-name="calendar.py" pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/libraries/base/calendar.py"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="108"> - <caret line="179" column="22" lean-forward="false" selection-start-line="179" selection-start-column="22" selection-end-line="179" selection-end-column="22" /> + <state relative-caret-position="334"> + <caret line="327" column="80" lean-forward="false" selection-start-line="327" selection-start-column="80" selection-end-line="327" selection-end-column="80" /> + <folding> + <element signature="e#805#818#0" expanded="true" /> + </folding> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="aura.py" pinned="false" current-in-tab="true"> + <entry file="file://$PROJECT_DIR$/aura.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="272"> + <caret line="24" column="32" lean-forward="false" selection-start-line="24" selection-start-column="32" selection-end-line="24" selection-end-column="32" /> <folding /> </state> </provider> @@ -43,7 +56,7 @@ <file leaf-file-name="broadcasts.py" pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/libraries/database/broadcasts.py"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="235"> + <state relative-caret-position="170"> <caret line="15" column="9" lean-forward="false" selection-start-line="15" selection-start-column="9" selection-end-line="15" selection-end-column="9" /> <folding> <element signature="e#47#79#0" expanded="true" /> @@ -55,18 +68,18 @@ <file leaf-file-name="communicator.py" pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/modules/communication/liquidsoap/communicator.py"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="306"> + <state relative-caret-position="2210"> <caret line="143" column="28" lean-forward="false" selection-start-line="143" selection-start-column="28" selection-end-line="143" selection-end-column="28" /> <folding /> </state> </provider> </entry> </file> - <file leaf-file-name="scheduler.py" pinned="false" current-in-tab="true"> + <file leaf-file-name="scheduler.py" pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/modules/scheduling/scheduler.py"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="340"> - <caret line="368" column="39" lean-forward="true" selection-start-line="368" selection-start-column="39" selection-end-line="368" selection-end-column="39" /> + <state relative-caret-position="-3162"> + <caret line="388" column="0" lean-forward="true" selection-start-line="388" selection-start-column="0" selection-end-line="388" selection-end-column="0" /> <folding> <element signature="e#1046#1059#0" expanded="true" /> </folding> @@ -77,7 +90,7 @@ <file leaf-file-name="guru.py" pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/guru.py"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="144"> + <state relative-caret-position="765"> <caret line="54" column="110" lean-forward="false" selection-start-line="54" selection-start-column="89" selection-end-line="54" selection-end-column="110" /> <folding /> </state> @@ -87,7 +100,7 @@ <file leaf-file-name="padavan.py" pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/modules/tools/padavan.py"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="482"> + <state relative-caret-position="2295"> <caret line="138" column="41" lean-forward="false" selection-start-line="138" selection-start-column="41" selection-end-line="138" selection-end-column="41" /> <folding> <element signature="e#0#17#0" expanded="true" /> @@ -99,25 +112,13 @@ <file leaf-file-name="redischannels.py" pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/libraries/enum/redischannels.py"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="170"> - <caret line="10" column="42" lean-forward="false" selection-start-line="10" selection-start-column="42" selection-end-line="10" selection-end-column="42" /> + <state relative-caret-position="187"> + <caret line="11" column="0" lean-forward="true" selection-start-line="11" selection-start-column="0" selection-end-line="11" selection-end-column="0" /> <folding /> </state> </provider> </entry> </file> - <file leaf-file-name="__init__.py" pinned="false" current-in-tab="false"> - <entry file="file:///usr/local/lib/python3.5/dist-packages/sqlalchemy/__init__.py"> - <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="-2091"> - <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> - <folding> - <element signature="e#244#892#0" expanded="true" /> - </folding> - </state> - </provider> - </entry> - </file> </leaf> </component> <component name="FileTemplateManagerImpl"> @@ -129,7 +130,6 @@ </component> <component name="FindInProjectRecents"> <findStrings> - <find>active</find> <find>activate_line</find> <find>is already act</find> <find>already active</find> @@ -159,6 +159,7 @@ <find>move</find> <find>move_</find> <find>run</find> + <find>hou</find> </findStrings> <replaceStrings> <replace>"</replace> @@ -214,16 +215,16 @@ <option value="$PROJECT_DIR$/aura.py" /> <option value="$PROJECT_DIR$/modules/controller/controller.py" /> <option value="$PROJECT_DIR$/libraries/database/database.py" /> - <option value="$PROJECT_DIR$/libraries/base/calendar.py" /> <option value="$PROJECT_DIR$/README.md" /> <option value="$PROJECT_DIR$/modules/communication/liquidsoap/client.py" /> - <option value="$PROJECT_DIR$/libraries/enum/redischannels.py" /> <option value="$PROJECT_DIR$/modules/communication/liquidsoap/communicator.py" /> <option value="$PROJECT_DIR$/guru.py" /> <option value="$PROJECT_DIR$/modules/communication/redis/adapter.py" /> <option value="$PROJECT_DIR$/modules/tools/padavan.py" /> <option value="$PROJECT_DIR$/libraries/database/broadcasts.py" /> <option value="$PROJECT_DIR$/modules/scheduling/scheduler.py" /> + <option value="$PROJECT_DIR$/libraries/enum/redischannels.py" /> + <option value="$PROJECT_DIR$/libraries/base/calendar.py" /> </list> </option> </component> @@ -265,6 +266,7 @@ </navigator> <panes> <pane id="Scratches" /> + <pane id="Scope" /> <pane id="ProjectPane"> <subPane> <expand> @@ -323,7 +325,6 @@ <select /> </subPane> </pane> - <pane id="Scope" /> </panes> </component> <component name="PropertiesComponent"> @@ -376,6 +377,7 @@ <option name="PARAMETERS" value="" /> <option name="SHOW_COMMAND_LINE" value="false" /> <option name="EMULATE_TERMINAL" value="false" /> + <option name="MODULE_MODE" value="false" /> </configuration> <configuration name="aura" type="PythonConfigurationType" factoryName="Python" temporary="true"> <option name="INTERPRETER_OPTIONS" value="" /> @@ -393,6 +395,7 @@ <option name="PARAMETERS" value="" /> <option name="SHOW_COMMAND_LINE" value="false" /> <option name="EMULATE_TERMINAL" value="false" /> + <option name="MODULE_MODE" value="false" /> </configuration> <configuration name="guru" type="PythonConfigurationType" factoryName="Python" temporary="true"> <option name="INTERPRETER_OPTIONS" value="" /> @@ -410,6 +413,7 @@ <option name="PARAMETERS" value="-pap" /> <option name="SHOW_COMMAND_LINE" value="false" /> <option name="EMULATE_TERMINAL" value="false" /> + <option name="MODULE_MODE" value="false" /> </configuration> <list size="2"> <item index="0" class="java.lang.String" itemvalue="Python.guru" /> @@ -454,21 +458,19 @@ <servers /> </component> <component name="ToolWindowManager"> - <frame x="645" y="31" width="1926" height="1083" extended-state="6" /> + <frame x="-3" y="31" width="1926" height="1052" extended-state="6" /> <editor active="true" /> <layout> - <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.16666667" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" /> + <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.16640337" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" /> <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" /> <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.46312365" sideWeight="0.5018431" order="13" side_tool="true" content_ui="tabs" /> - <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.43275487" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> - <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.37807378" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" /> + <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.37744033" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" /> <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32936078" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" /> <window_info id="Python Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" /> <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="11" side_tool="false" content_ui="tabs" /> <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.46312365" sideWeight="0.49815693" order="3" side_tool="false" content_ui="tabs" /> <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" /> - <window_info id="Data View" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" /> <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" /> <window_info id="Debug Logs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" /> @@ -476,7 +478,9 @@ <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" /> <window_info id="Execute Anonymous" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" /> <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" /> + <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.43275487" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> + <window_info id="Data View" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> <window_info id="Salesforce" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="12" side_tool="false" content_ui="tabs" /> </layout> <layout-to-restore> @@ -665,14 +669,6 @@ </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/aura.py"> - <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="272"> - <caret line="24" column="32" lean-forward="false" selection-start-line="24" selection-start-column="32" selection-end-line="24" selection-end-column="32" /> - <folding /> - </state> - </provider> - </entry> <entry file="file://$PROJECT_DIR$/libraries/database/combadb.py"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="-765"> @@ -684,7 +680,6 @@ <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="51"> <caret line="5" column="53" lean-forward="false" selection-start-line="5" selection-start-column="53" selection-end-line="5" selection-end-column="53" /> - <folding /> </state> </provider> </entry> @@ -702,7 +697,6 @@ <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="510"> <caret line="34" column="33" lean-forward="false" selection-start-line="34" selection-start-column="33" selection-end-line="34" selection-end-column="33" /> - <folding /> </state> </provider> </entry> @@ -710,28 +704,6 @@ <provider editor-type-id="text-editor"> <state relative-caret-position="0"> <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> - <folding /> - </state> - </provider> - <provider selected="true" editor-type-id="split-provider[text-editor;MarkdownPreviewEditor]"> - <state split_layout="SPLIT"> - <first_editor relative-caret-position="697"> - <caret line="41" column="17" lean-forward="true" selection-start-line="41" selection-start-column="17" selection-end-line="41" selection-end-column="17" /> - <folding /> - </first_editor> - <second_editor> - <js_state /> - </second_editor> - </state> - </provider> - </entry> - <entry file="file:///usr/local/lib/python3.5/dist-packages/sqlalchemy/__init__.py"> - <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="-2091"> - <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> - <folding> - <element signature="e#244#892#0" expanded="true" /> - </folding> </state> </provider> </entry> @@ -745,7 +717,7 @@ </entry> <entry file="file://$PROJECT_DIR$/modules/controller/controller.py"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="212"> + <state relative-caret-position="0"> <caret line="84" column="51" lean-forward="false" selection-start-line="84" selection-start-column="51" selection-end-line="84" selection-end-column="51" /> <folding> <element signature="e#43#56#0" expanded="true" /> @@ -757,13 +729,12 @@ <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="142"> <caret line="158" column="122" lean-forward="true" selection-start-line="158" selection-start-column="122" selection-end-line="158" selection-end-column="122" /> - <folding /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/modules/tools/padavan.py"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="482"> + <state relative-caret-position="2295"> <caret line="138" column="41" lean-forward="false" selection-start-line="138" selection-start-column="41" selection-end-line="138" selection-end-column="41" /> <folding> <element signature="e#0#17#0" expanded="true" /> @@ -771,33 +742,17 @@ </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/libraries/enum/redischannels.py"> - <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="170"> - <caret line="10" column="42" lean-forward="false" selection-start-line="10" selection-start-column="42" selection-end-line="10" selection-end-column="42" /> - <folding /> - </state> - </provider> - </entry> <entry file="file://$PROJECT_DIR$/guru.py"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="144"> + <state relative-caret-position="765"> <caret line="54" column="110" lean-forward="false" selection-start-line="54" selection-start-column="89" selection-end-line="54" selection-end-column="110" /> <folding /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/libraries/base/calendar.py"> - <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="108"> - <caret line="179" column="22" lean-forward="false" selection-start-line="179" selection-start-column="22" selection-end-line="179" selection-end-column="22" /> - <folding /> - </state> - </provider> - </entry> <entry file="file://$PROJECT_DIR$/libraries/database/broadcasts.py"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="235"> + <state relative-caret-position="170"> <caret line="15" column="9" lean-forward="false" selection-start-line="15" selection-start-column="9" selection-end-line="15" selection-end-column="9" /> <folding> <element signature="e#47#79#0" expanded="true" /> @@ -807,7 +762,7 @@ </entry> <entry file="file://$PROJECT_DIR$/modules/communication/liquidsoap/communicator.py"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="306"> + <state relative-caret-position="2210"> <caret line="143" column="28" lean-forward="false" selection-start-line="143" selection-start-column="28" selection-end-line="143" selection-end-column="28" /> <folding /> </state> @@ -815,13 +770,47 @@ </entry> <entry file="file://$PROJECT_DIR$/modules/scheduling/scheduler.py"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="340"> - <caret line="368" column="39" lean-forward="true" selection-start-line="368" selection-start-column="39" selection-end-line="368" selection-end-column="39" /> + <state relative-caret-position="-3162"> + <caret line="388" column="0" lean-forward="true" selection-start-line="388" selection-start-column="0" selection-end-line="388" selection-end-column="0" /> <folding> <element signature="e#1046#1059#0" expanded="true" /> </folding> </state> </provider> </entry> + <entry file="file:///usr/local/lib/python3.5/dist-packages/sqlalchemy/__init__.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="0"> + <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/libraries/enum/redischannels.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="187"> + <caret line="11" column="0" lean-forward="true" selection-start-line="11" selection-start-column="0" selection-end-line="11" selection-end-column="0" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/libraries/base/calendar.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="334"> + <caret line="327" column="80" lean-forward="false" selection-start-line="327" selection-start-column="80" selection-end-line="327" selection-end-column="80" /> + <folding> + <element signature="e#805#818#0" expanded="true" /> + </folding> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/aura.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="272"> + <caret line="24" column="32" lean-forward="false" selection-start-line="24" selection-start-column="32" selection-end-line="24" selection-end-column="32" /> + <folding /> + </state> + </provider> + </entry> </component> </project> \ No newline at end of file diff --git a/libraries/base/calendar.py b/libraries/base/calendar.py index 8a4a9943c0024e9ad665be21a8f6141a1f1d721a..c377db94a181b588d8ec376cac8efaf9bbacde1a 100644 --- a/libraries/base/calendar.py +++ b/libraries/base/calendar.py @@ -19,6 +19,7 @@ # # http://www.gnu.org/licenses/gpl.html import codecs +import os import sys import threading import simplejson @@ -135,6 +136,7 @@ class AuraCalendarService(threading.Thread): # store playlists to play entrynum = 0 + print(schedule) for entry in schedule["playlist"]["entries"]: self.store_schedule_entry(schedule, entry, entrynum) entrynum = entrynum + 1 @@ -282,12 +284,14 @@ class AuraCalendarService(threading.Thread): print("station_fallback: "+str(schedule["station_fallback"])) except Exception as e: + import traceback + traceback.print_exc() print(e) print("houston we have a problem") # ------------------------------------------------------------------------------------------ # - def __fetch_schedule_entries__(self, schedule_id, playlist_id, fetchedScheduleEntries): - for entry in fetchedScheduleEntries: + def __fetch_schedule_entries__(self, schedule_id, playlist_id, fetched_schedule_entries): + for entry in fetched_schedule_entries: if entry["playlist_id"] == playlist_id: if self.debug: print(str(playlist_id) + " already fetched") @@ -298,29 +302,34 @@ class AuraCalendarService(threading.Thread): # HARDCODED Testdata if playlist_id == 1: # station fallback - scheduleEntries = simplejson.loads('{"playlist_id":1,"entries":[{"source":"pool://easylistening","artist":"station wide fallback pool","track":"","albumname":"","genre":"","tracknum":"","cdnum":"","year":""}]}') + schedule_entries = simplejson.loads('{"playlist_id":1,"entries":[{"source":"pool://easylistening","artist":"station wide fallback pool","track":"","albumname":"","genre":"","tracknum":"","cdnum":"","year":""}]}') if playlist_id == 2: # playlist to play for schedule #1 => linein - scheduleEntries = simplejson.loads('{"playlist_id":2,"entries":[{"entry_start":"'+(datetime.now()+timedelta(hours=0)).strftime('%Y-%m-%d %H:00:00')+'","entry_end":"'+(datetime.now()+timedelta(hours=0)).strftime('%Y-%m-%d %H:05:00')+'","source":"/var/audio/jingles/jingle.flac","artist":"jingle","track":"","albumname":"","genre":"","tracknum":"","cdnum":"","year":"1999"},{"entry_start":"'+(datetime.now()+timedelta(hours=0)).strftime('%Y-%m-%d %H:05:00')+'","entry_end":"'+(datetime.now()+timedelta(hours=1)).strftime('%Y-%m-%d %H:00:00')+'","source":"linein://0","artist":"live","track":"","albumname":"","genre":"","tracknum":"","cdnum":"","year":""}]}') + schedule_entries = simplejson.loads('{"playlist_id":2,"entries":[{"entry_start":"'+(datetime.now()+timedelta(hours=0)).strftime('%Y-%m-%d %H:00:00')+'","entry_end":"'+(datetime.now()+timedelta(hours=0)).strftime('%Y-%m-%d %H:05:00')+'","source":"/var/audio/jingles/jingle.flac","artist":"jingle","track":"","albumname":"","genre":"","tracknum":"","cdnum":"","year":"1999"},{"entry_start":"'+(datetime.now()+timedelta(hours=0)).strftime('%Y-%m-%d %H:05:00')+'","entry_end":"'+(datetime.now()+timedelta(hours=1)).strftime('%Y-%m-%d %H:00:00')+'","source":"linein://0","artist":"live","track":"","albumname":"","genre":"","tracknum":"","cdnum":"","year":""}]}') if playlist_id == 4: # playlist to play for schedule #2 => from file system - scheduleEntries = simplejson.loads('{"playlist_id":4,"entries":[{"entry_start":"'+(datetime.now()+timedelta(hours=1)).strftime('%Y-%m-%d %H:00:00')+'","entry_end":"'+(datetime.now()+timedelta(hours=1)).strftime('%Y-%m-%d %H:05:00')+'","source":"file:///var/audio/jingles/jingle.flac","artist":"jingle","track":"","albumname":"","genre":"","tracknum":"","cdnum":"","year":"1999"},{"entry_start":"'+(datetime.now()+timedelta(hours=1)).strftime('%Y-%m-%d %H:05:00')+'","entry_end":"'+(datetime.now()+timedelta(hours=2)).strftime('%Y-%m-%d %H:00:00')+'","source":"file:///var/audio/preprod.flac","artist":"live","track":"","albumname":"","genre":"","tracknum":"","cdnum":"","year":""}]}') + schedule_entries = simplejson.loads('{"playlist_id":4,"entries":[{"entry_start":"'+(datetime.now()+timedelta(hours=1)).strftime('%Y-%m-%d %H:00:00')+'","entry_end":"'+(datetime.now()+timedelta(hours=1)).strftime('%Y-%m-%d %H:05:00')+'","source":"file:///var/audio/jingles/jingle.flac","artist":"jingle","track":"","albumname":"","genre":"","tracknum":"","cdnum":"","year":"1999"},{"entry_start":"'+(datetime.now()+timedelta(hours=1)).strftime('%Y-%m-%d %H:05:00')+'","entry_end":"'+(datetime.now()+timedelta(hours=2)).strftime('%Y-%m-%d %H:00:00')+'","source":"file:///var/audio/preprod.flac","artist":"live","track":"","albumname":"","genre":"","tracknum":"","cdnum":"","year":""}]}') if playlist_id == 6: # playlist to play for schedule #3 => http stream - scheduleEntries = simplejson.loads('{"playlist_id":6,"entries":[{"entry_start":"'+(datetime.now()+timedelta(hours=2)).strftime('%Y-%m-%d %H:00:00')+'","entry_end":"'+(datetime.now()+timedelta(hours=3)).strftime('%Y-%m-%d %H:00:00')+'","source":"http://stream.fro.at:80/fro-128.ogg","artist":"Stream Ãœbernahme von Radio FRO","track":"","albumname":"","genre":"","tracknum":"","cdnum":"","year":""}]}') + schedule_entries = simplejson.loads('{"playlist_id":6,"entries":[{"entry_start":"'+(datetime.now()+timedelta(hours=2)).strftime('%Y-%m-%d %H:00:00')+'","entry_end":"'+(datetime.now()+timedelta(hours=3)).strftime('%Y-%m-%d %H:00:00')+'","source":"http://stream.fro.at:80/fro-128.ogg","artist":"Stream Ãœbernahme von Radio FRO","track":"","albumname":"","genre":"","tracknum":"","cdnum":"","year":""}]}') if playlist_id == 12: # schedule #0 fallback - scheduleEntries = simplejson.loads('{"playlist_id":12,"entries":[{"source":"pool:///drumandbass"}]}') + schedule_entries = simplejson.loads('{"playlist_id":12,"entries":[{"source":"pool:///drumandbass"}]}') if playlist_id == 22: # schedule #1 fallback - scheduleEntries = simplejson.loads('{"playlist_id":22,"entries":[{"source":"pool:///chillout"}]}') + schedule_entries = simplejson.loads('{"playlist_id":22,"entries":[{"source":"pool:///chillout"}]}') if playlist_id == 32: # schedule #2 fallback - scheduleEntries = simplejson.loads('{"playlist_id":22,"entries":[{"source":"pool:///rock"}]}') + schedule_entries = simplejson.loads('{"playlist_id":22,"entries":[{"source":"pool:///rock"}]}') if playlist_id == 92: # show fallback for schedule #0 - scheduleEntries = simplejson.loads('{"playlist_id":92,"entries":[{"source":"file:///var/audio/playlist/playlist1.m3u"}]}') + schedule_entries = simplejson.loads('{"playlist_id":92,"entries":[{"source":"file:///var/audio/playlist/playlist1.m3u"}]}') if playlist_id == 102: # show fallback for schedule #1 - scheduleEntries = simplejson.loads('{"playlist_id":102,"entries":[{"source":"file:///var/audio/playlist/playlist2.m3u"}]}') + schedule_entries = simplejson.loads('{"playlist_id":102,"entries":[{"source":"file:///var/audio/playlist/playlist2.m3u"}]}') if playlist_id == 112: # show fallback for schedule #2 - scheduleEntries = simplejson.loads('{"playlist_id":112,"entries":[{"source":"file:///var/audio/playlist/playlist3.m3u"}]}') + schedule_entries = simplejson.loads('{"playlist_id":112,"entries":[{"source":"file:///var/audio/playlist/playlist3.m3u"}]}') - fetchedScheduleEntries.append(scheduleEntries) + for entry in schedule_entries["entries"]: + if entry["source"].startswith("file"): + if not os.path.isfile(entry["source"]): + print("WARNING: File ", entry["source"], " does not exist!") - return scheduleEntries + fetched_schedule_entries.append(schedule_entries) + + return schedule_entries # ------------------------------------------------------------------------------------------ # def __fetch_schedule_data__(self): diff --git a/libraries/enum/redischannels.py b/libraries/enum/redischannels.py index 4c92cb86203e73cc675b1b606e650b4903f4f93e..c09ce8113989f85b24d697b9d0fc1f99393640f6 100644 --- a/libraries/enum/redischannels.py +++ b/libraries/enum/redischannels.py @@ -4,8 +4,8 @@ from enum import Enum class Channels(Enum): STANDARD = "aura" MAIN = "main" + IP_REPLY = "init_player_reply" FNP_REPLY = "fetch_new_programme_reply" GAP_REPLY = "get_act_programme_reply" - IP_REPLY = "init_player_reply" PMQ_REPLY = "print_message_queue_reply" MPE_REPLY = "move_playlist_entry_reply"