Files
conjurer/file_webservice/conjurer_musician.py
T
2024-03-29 23:10:28 +01:00

80 lines
2.6 KiB
Python

import json
from pathlib import Path
from platform import uname
import threading
import time
from sys import platform
from flask import Flask, jsonify, request
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(logger):
logger.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(name,logger):
logger.info(f"Starting filesystemupdater {name}")
while True:
time.sleep(60*60*24)
logger.info("Rescan triggered {name}")
rescan(logger)
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
if __name__ == "__main__":
print(app.logger.name)
rescan(app.logger.getChild("BGtask"))
thread = threading.Thread(target=thread_rescan, args=["Updater",app.logger.getChild("BGtask")])
thread.start()
app.run(debug=True, host="0.0.0.0")
#from waitress import serve
#serve(app, host="0.0.0.0", port=5000)
#TODO: Inne pliki - sadox, dokumenty naukowe itp.