import json from pathlib import Path from platform import uname import threading import time from sys import platform import logging from flask import Flask, jsonify, request from waitress import serve if platform in ("linux", "linux2"): SEPARATOR_FILE_PATH = "/" if "microsoft-standard" in uname().release: LOGFILE = "/home/mtuszowski/conjurer/discord_mus_service.log" MUSIC_FOLDER = "/mnt/g/Muzyka/" NETRC_FILE = "/home/mtuszowski/.netrc" LOGSTORE = "/home/mtuszowski/conjurer/logs/" ENCODING = "utf-8" GRAPHICS_PATH = "/home/mtuszowski/conjurer/Conjurer_graphics/" else: LOGFILE = "/home/pi/Conjurer/discord_mus_service.log" MEMORY_FIVE_SIARA = "/home/pi/Conjurer/pamiec.json" SYSTEM_GPT_SETTINGS = "/home/pi/Conjurer/system_gpt_settings.json" MEMORY_FIVE_MUZYKA = "/home/pi/Conjurer/pamiec_muzyki.json" MUSIC_FOLDER = "/home/pi/RetroPie/mp3/" SETTINGS_FILE = "/home/pi/Conjurer/settings.json" NETRC_FILE = "/home/pi/.netrc" LOGSTORE = "/home/pi/RetroPie/logs/" ACCIDENT_LOG = "/home/pi/Conjurer/accident_log.json" ENCODING = "utf-8" GRAPHICS_PATH = "/home/pi/RetroPie/Conjurer_graphics/" DIR_PATH_SADOX = "/home/pi/RetroPie/Fansadox/" music_file_list = [] def rescan(): logging.info("Rescan triggered") for mp3_item in Path.glob(Path(MUSIC_FOLDER), "**/*.mp3"): temp_music_file = mp3_item.as_posix() if platform == "win32": temp_music_file = temp_music_file.replace("/", "\\") music_file_list.append(temp_music_file) def thread_rescan(): logging.info("Starting filesystemupdater") while True: time.sleep(60*60*24) logging.info("Rescan triggered") rescan() app = Flask(__name__) @app.route("/mp3", methods=["GET"]) def get_music_list(): return jsonify({"music_file_list": music_file_list}) @app.route("/update_mp3", methods=["POST"]) def update_music_list(): record = json.loads(request.data) app.logger.info(record["item"]) music_file_list.append(record["item"]) return_data = ( jsonify(isError=False, message="Success", statusCode=200, data=record), 200, ) return return_data def flask_debug(): app.run(debug=True, use_reloader=False, host='0.0.0.0', port=5000) def waitress_run(): serve(app, host="0.0.0.0", port=5000) if __name__ == "__main__": logger = logging.getLogger('conjurer_musician') logger.setLevel(logging.DEBUG) rescan() threads = [] threads.append(threading.Thread(target=waitress_run)) threads.append(threading.Thread(target=thread_rescan)) #threads.append(threading.Thread(target=flask_debug)) for worker in threads: worker.start() for worker in threads: worker.join() #TODO: Inne pliki - sadox, dokumenty naukowe itp.