From f86221a757484ec5a45946763be3093595623853 Mon Sep 17 00:00:00 2001 From: jaydee Date: Tue, 29 Jul 2025 15:26:30 +0200 Subject: [PATCH] build --- auto_import_v2_auto.py | 281 +++++++++++++++++++++-------------------- 1 file changed, 142 insertions(+), 139 deletions(-) diff --git a/auto_import_v2_auto.py b/auto_import_v2_auto.py index 7357888..033c29c 100644 --- a/auto_import_v2_auto.py +++ b/auto_import_v2_auto.py @@ -85,166 +85,169 @@ files_imported = 0 while True: - myCmd = "mount| grep /share/external/DEV3301_1" + myCmd = "mount| grep /share/external/DEV3301| grep -v grep | awk '{ print $3 }'" status, output = subprocess.getstatusoutput(myCmd) print(output) print(status) - if status != 0: + devs = output.splitlines() + + if len(devs) == 0: time.sleep(10) else: - print("Device mounted") - myCmd = "/sbin/hal_app --se_buzzer enc_id=0,mode=101" - status, output = subprocess.getstatusoutput(myCmd) - - _DEV_MOUNT = f"/share/external/DEV3301_1" - _DEV_DIR = f"{_DEV_MOUNT}/DCIM" - _IMP_FILE = f"{_DEV_MOUNT}/auto_import" - _DEV_DATA = f"{_DEV_MOUNT}/MISC/version.txt" + for _DEV_MOUNT in devs: + print("Device mounted") + myCmd = "/sbin/hal_app --se_buzzer enc_id=0,mode=101" + status, output = subprocess.getstatusoutput(myCmd) + + # _DEV_MOUNT = f"/share/external/DEV3301_1" + _DEV_DIR = f"{_DEV_MOUNT}/DCIM" + _IMP_FILE = f"{_DEV_MOUNT}/auto_import" + _DEV_DATA = f"{_DEV_MOUNT}/MISC/version.txt" - # If version.txt exists, parse device info - if os.path.exists(_DEV_DATA): - file = open(_DEV_DATA, 'r') - content = file.read() - file.close() - strToReplace = ',' - replacementStr = '' - strToReplaceReversed = strToReplace[::-1] - replacementStrReversed = replacementStr[::-1] - - strValue = content[::-1].replace(strToReplaceReversed, replacementStrReversed, 1)[::-1] - c = content.replace("\n","") - - logging.debug("--------------") - logging.debug(c[-2]) - logging.debug("--------------") - logging.debug(strValue) - _DEV_CONT = json.loads(strValue) - logging.debug(_DEV_CONT) - logging.debug(_DEV_CONT["wifi mac"]) - wifimac = _DEV_CONT["wifi mac"] - # Identify device by wifi mac - if wifimac == "2474f742c017": - _DEV = "gopro9_1" - logging.debug("gopro9_1 registered") - elif wifimac == "2474f742c017": - _DEV = "gopro9_1" - logging.debug("gopro9_1 registered") - - elif wifimac == "XXXDJIMINI4": - _DEV = "dji_mini_4" - logging.debug("dji_mini_4 registered") - - # If auto_import file exists and device is not set, read device info - if os.path.exists(_IMP_FILE) and _DEV == "": - logging.debug("path exist") - time.sleep(5) - if _DEV == "": - file = open(_IMP_FILE, 'r') + # If version.txt exists, parse device info + if os.path.exists(_DEV_DATA): + file = open(_DEV_DATA, 'r') content = file.read() - _DEV = json.loads(content)["device"] + file.close() + strToReplace = ',' + replacementStr = '' + strToReplaceReversed = strToReplace[::-1] + replacementStrReversed = replacementStr[::-1] - logging.debug(f"{_DEV} registered") - file.close() - x = datetime.datetime.now() - logging.debug(x.year) - _DAT = x.strftime("%Y%m%d") - # If DCIM folder is empty, unmount and continue - if len(os.listdir(_DEV_DIR)) == 0: - logging.debug("Folder is empty!") - myCmd = f"umount {_DEV_DIR}" - status, output = subprocess.getstatusoutput(myCmd) + strValue = content[::-1].replace(strToReplaceReversed, replacementStrReversed, 1)[::-1] + c = content.replace("\n","") + + logging.debug("--------------") + logging.debug(c[-2]) + logging.debug("--------------") + logging.debug(strValue) + _DEV_CONT = json.loads(strValue) + logging.debug(_DEV_CONT) + logging.debug(_DEV_CONT["wifi mac"]) + wifimac = _DEV_CONT["wifi mac"] + # Identify device by wifi mac + if wifimac == "2474f742c017": + _DEV = "gopro9_1" + logging.debug("gopro9_1 registered") + elif wifimac == "2474f742c017": + _DEV = "gopro9_1" + logging.debug("gopro9_1 registered") + + elif wifimac == "XXXDJIMINI4": + _DEV = "dji_mini_4" + logging.debug("dji_mini_4 registered") + + # If auto_import file exists and device is not set, read device info + if os.path.exists(_IMP_FILE) and _DEV == "": + logging.debug("path exist") time.sleep(5) - continue - # myCmd = "/sbin/hal_app --se_buzzer enc_id=0,mode=101;sleep 1;/sbin/hal_app --se_buzzer enc_id=0,mode=101;sleep 1;/sbin/hal_app --se_buzzer enc_id=0,mode=101" - # status, output = subprocess.getstatusoutput(myCmd) - # If device is set and DCIM exists, move files by date - moved_fine = True - if not _DEV == "": - if os.path.exists(_DEV_DIR): - for file_or_dir in os.listdir(_DEV_DIR): - FULL_PATH = os.path.join(_DEV_DIR, file_or_dir) - logging.debug(f"Full path : {FULL_PATH}") - if os.path.isdir(FULL_PATH): - logging.debug(f"Folder: {file_or_dir}") - for filename in os.listdir(FULL_PATH): - logging.debug(filename) - c_time = os.path.getctime("{}/{}".format(FULL_PATH,filename)) - dt_c = datetime.datetime.fromtimestamp(c_time) - logging.debug(dt_c) - _CDAT = dt_c.strftime("%Y-%m-%d") - logging.debug(_CDAT) - _FDEST = "{}/{}/{}".format(_DEST,_DEV, _CDAT) - if not os.path.exists(_FDEST): - cmnd = "mkdir -p {}".format(_FDEST) - status, output = subprocess.getstatusoutput(cmnd) - logging.debug("Moving file {} into {}".format(filename, _FDEST)) - mqtt_s.send_mqtt_message("sectorq/auto_import/job", {"status": "started","file":filename,"device":_DEV}) + if _DEV == "": + file = open(_IMP_FILE, 'r') + content = file.read() + _DEV = json.loads(content)["device"] + + logging.debug(f"{_DEV} registered") + file.close() + x = datetime.datetime.now() + logging.debug(x.year) + _DAT = x.strftime("%Y%m%d") + # If DCIM folder is empty, unmount and continue + if len(os.listdir(_DEV_DIR)) == 0: + logging.debug("Folder is empty!") + myCmd = f"umount {_DEV_DIR}" + status, output = subprocess.getstatusoutput(myCmd) + time.sleep(5) + continue + # myCmd = "/sbin/hal_app --se_buzzer enc_id=0,mode=101;sleep 1;/sbin/hal_app --se_buzzer enc_id=0,mode=101;sleep 1;/sbin/hal_app --se_buzzer enc_id=0,mode=101" + # status, output = subprocess.getstatusoutput(myCmd) + # If device is set and DCIM exists, move files by date + moved_fine = True + if not _DEV == "": + if os.path.exists(_DEV_DIR): + for file_or_dir in os.listdir(_DEV_DIR): + FULL_PATH = os.path.join(_DEV_DIR, file_or_dir) + logging.debug(f"Full path : {FULL_PATH}") + if os.path.isdir(FULL_PATH): + logging.debug(f"Folder: {file_or_dir}") + for filename in os.listdir(FULL_PATH): + logging.debug(filename) + c_time = os.path.getctime("{}/{}".format(FULL_PATH,filename)) + dt_c = datetime.datetime.fromtimestamp(c_time) + logging.debug(dt_c) + _CDAT = dt_c.strftime("%Y-%m-%d") + logging.debug(_CDAT) + _FDEST = "{}/{}/{}".format(_DEST,_DEV, _CDAT) + if not os.path.exists(_FDEST): + cmnd = "mkdir -p {}".format(_FDEST) + status, output = subprocess.getstatusoutput(cmnd) + logging.debug("Moving file {} into {}".format(filename, _FDEST)) + mqtt_s.send_mqtt_message("sectorq/auto_import/job", {"status": "started","file":filename,"device":_DEV}) + try: + #shutil.copy("{}/{}".format(FULL_PATH,filename),_FDEST) + myCmd = f"rsync -avz {FULL_PATH}/{filename} {_FDEST}" + status, output = subprocess.getstatusoutput(myCmd) + + + + files_imported += 1 + + + except: + try: + #shutil.copy("{}/{}".format(FULL_PATH,filename),"{}/{}".format(_FDEST,filename)) + myCmd = f"rsync -avz {FULL_PATH}/{filename} {_FDEST}" + logging.debug(myCmd) + status, output = subprocess.getstatusoutput(myCmd) + logging.debug(output) + logging.debug(status) + files_imported += 1 + except: + logging.debug("failed to move file {}".format(filename)) + moved_fine = False + #myCmd = "/sbin/hal_app --se_buzzer enc_id=0,mode=100" + #subprocess.getstatusoutput(myCmd) + else: + logging.debug(f"File: {file_or_dir}") + mqtt_s.send_mqtt_message("sectorq/auto_import/job", {"status": "started","file":file_or_dir,"device":_DEV}) try: - #shutil.copy("{}/{}".format(FULL_PATH,filename),_FDEST) - myCmd = f"rsync -avz {FULL_PATH}/{filename} {_FDEST}" + #shutil.copy("{}/{}".format(_DEV_DIR,file_or_dir),_FDEST) + myCmd = f"rsync -avz {_DEV_DIR}/{file_or_dir} {_FDEST}" + logging.debug(myCmd) status, output = subprocess.getstatusoutput(myCmd) - - - files_imported += 1 - except: try: - #shutil.copy("{}/{}".format(FULL_PATH,filename),"{}/{}".format(_FDEST,filename)) - myCmd = f"rsync -avz {FULL_PATH}/{filename} {_FDEST}" + #shutil.copy("{}/{}".format(_DEV_DIR,file_or_dir),"{}/{}".format(_FDEST,file_or_dir)) + myCmd = f"rsync -avz {_DEV_DIR}/{file_or_dir} {_FDEST}" logging.debug(myCmd) status, output = subprocess.getstatusoutput(myCmd) logging.debug(output) logging.debug(status) files_imported += 1 except: - logging.debug("failed to move file {}".format(filename)) + logging.debug("failed to move file {}".format(file_or_dir)) moved_fine = False - #myCmd = "/sbin/hal_app --se_buzzer enc_id=0,mode=100" - #subprocess.getstatusoutput(myCmd) - else: - logging.debug(f"File: {file_or_dir}") - mqtt_s.send_mqtt_message("sectorq/auto_import/job", {"status": "started","file":file_or_dir,"device":_DEV}) - try: - #shutil.copy("{}/{}".format(_DEV_DIR,file_or_dir),_FDEST) - myCmd = f"rsync -avz {_DEV_DIR}/{file_or_dir} {_FDEST}" - logging.debug(myCmd) - status, output = subprocess.getstatusoutput(myCmd) - files_imported += 1 - - except: - try: - #shutil.copy("{}/{}".format(_DEV_DIR,file_or_dir),"{}/{}".format(_FDEST,file_or_dir)) - myCmd = f"rsync -avz {_DEV_DIR}/{file_or_dir} {_FDEST}" - logging.debug(myCmd) - status, output = subprocess.getstatusoutput(myCmd) - logging.debug(output) - logging.debug(status) - files_imported += 1 - except: - logging.debug("failed to move file {}".format(file_or_dir)) - moved_fine = False - - - if moved_fine: - print("All files moved successfully") - print(f"Removing {_DEV_DIR}*") - myCmd = f"rm -rf {_DEV_DIR}/*" + + + if moved_fine: + print("All files moved successfully") + print(f"Removing {_DEV_DIR}*") + myCmd = f"rm -rf {_DEV_DIR}/*" + status, output = subprocess.getstatusoutput(myCmd) + logging.debug("Umounting") + + + + myCmd = f"sudo umount {_DEV_MOUNT}" status, output = subprocess.getstatusoutput(myCmd) - logging.debug("Umounting") - - - - myCmd = f"sudo umount {_DEV_MOUNT}" - status, output = subprocess.getstatusoutput(myCmd) - logging.debug(output) - logging.debug(status) - myCmd = "/sbin/hal_app --se_buzzer enc_id=0,mode=101;sleep 1;/sbin/hal_app --se_buzzer enc_id=0,mode=101" - status, output = subprocess.getstatusoutput(myCmd) - else: - logging.debug("Nothing to import") - mqtt_s.send_mqtt_message("sectorq/auto_import/job", {"status": "finished","file":f"{files_imported}","device":_DEV}) + logging.debug(output) + logging.debug(status) + myCmd = "/sbin/hal_app --se_buzzer enc_id=0,mode=101;sleep 1;/sbin/hal_app --se_buzzer enc_id=0,mode=101" + status, output = subprocess.getstatusoutput(myCmd) + else: + logging.debug("Nothing to import") + mqtt_s.send_mqtt_message("sectorq/auto_import/job", {"status": "finished","file":f"{files_imported}","device":_DEV}) - else: - logging.debug("Unknown device") + else: + logging.debug("Unknown device")