diff --git a/auto_import.py b/auto_import.py new file mode 100644 index 0000000..cb54a21 --- /dev/null +++ b/auto_import.py @@ -0,0 +1,136 @@ +import os +from posixpath import ismount +import sys +import time +import subprocess +import datetime +import shutil +import json + +_DEST = "/media/nas/nas-photo/imported" +_DEV = "" + +drives = ["6362-3938"] + +myCmd = "ls /dev/disk/by-uuid" +status, output = subprocess.getstatusoutput(myCmd) +input(output) +for l in output.splitlines(): + if l in drives: + print(l) +input("????") + + +_DEV_MOUNT = f"/mnt/{l}" +_DEV_DIR = f"{_DEV_MOUNT}/DCIM" +_IMP_FILE = f"{_DEV_MOUNT}/auto_import" +_DEV_DATA = f"{_DEV_MOUNT}/MISC/version.txt" + + + + + + +print("###############") + +#sys.exit() +while True: + if os.path.ismount(_DEV_MOUNT): + 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","") + + print("--------------") + print(c[-2]) + print("--------------") + print(strValue) + _DEV_CONT = json.loads(strValue) + print(_DEV_CONT) + print(_DEV_CONT["wifi mac"]) + wifimac = _DEV_CONT["wifi mac"] + if wifimac == "2474f742c017": + _DEV = "gopro9_1" + print("gopro9_1 registered") + elif wifimac == "2474f7421111": + _DEV = "dji_mini_4" + print("dji_mini_4 registered") + + if os.path.exists(_IMP_FILE) and _DEV == "": + print("path exist") + time.sleep(5) + if _DEV == "": + file = open(_IMP_FILE, 'r') + content = file.read() + _DEV = json.loads(content)["device"] + file.close() + x = datetime.datetime.now() + print(x.year) + _DAT = x.strftime("%Y%m%d") + if len(os.listdir(_DEV_DIR)) == 0: + print("Folder is empty!") + myCmd = "umount /share/external/DEV3304_1" + 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 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) + print(f"Full path : {FULL_PATH}") + if os.path.isdir(FULL_PATH): + print(f"Folder: {file_or_dir}") + for filename in os.listdir(FULL_PATH): + print(filename) + c_time = os.path.getctime("{}/{}".format(FULL_PATH,filename)) + dt_c = datetime.datetime.fromtimestamp(c_time) + print(dt_c) + _CDAT = dt_c.strftime("%Y-%m-%d") + print(_CDAT) + _FDEST = "{}/{}/{}".format(_DEST,_DEV, _CDAT) + if not os.path.exists(_FDEST): + cmnd = "mkdir -p {}".format(_FDEST) + status, output = subprocess.getstatusoutput(cmnd) + print("Moving file {} into {}".format(filename, _FDEST)) + try: + shutil.move("{}/{}".format(FULL_PATH,filename),_FDEST) + except: + try: + shutil.move("{}/{}".format(FULL_PATH,filename),"{}/{}".format(_FDEST,filename)) + except: + print("failed to move file {}".format(filename)) + print("Umounting") + myCmd = "umount /share/external/DEV3304_1" + status, output = subprocess.getstatusoutput(myCmd) + print(output) + print(status) + myCmd = "/sbin/hal_app --se_buzzer enc_id=0,mode=100" + subprocess.getstatusoutput(myCmd) + time.sleep(5) + else: + print(f"File: {file_or_dir}") + try: + shutil.move("{}/{}".format(_DEV_DIR,file_or_dir),_FDEST) + except: + try: + shutil.move("{}/{}".format(_DEV_DIR,file_or_dir),"{}/{}".format(_FDEST,file_or_dir)) + except: + print("failed to move file {}".format(file_or_dir)) + else: + print("Nothing to import") + time.sleep(5) + else: + print("Unknown device") + time.sleep(5) + else: + print("Usb does not connected") + time.sleep(5) \ No newline at end of file diff --git a/auto_import_v2.py b/auto_import_v2.py new file mode 100644 index 0000000..ca31050 --- /dev/null +++ b/auto_import_v2.py @@ -0,0 +1,175 @@ +#!/usr/bin/python3 +import os +from posixpath import ismount +import sys +import time +import subprocess +import datetime +import shutil +import json +import logging +from random import randrange +LOG_FILE = "/tmp/auto_import.log" +_LOG_LEVEL = "DEBUG" +if _LOG_LEVEL == "DEBUG": + logging.basicConfig(filename=LOG_FILE, level=logging.DEBUG, format='%(asctime)s : %(levelname)s : %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p') + logging.debug('using debug loging') +elif _LOG_LEVEL == "ERROR": + logging.basicConfig(filename=LOG_FILE, level=logging.ERROR, format='%(asctime)s : %(levelname)s : %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p') + logging.info('using error loging') +elif _LOG_LEVEL == "SCAN": + logging.basicConfig(filename=LOG_FILE, level=logging.DEBUG, format='%(asctime)s : %(levelname)s : %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p') + logging.info('using error loging') +else: + logging.basicConfig(filename=LOG_FILE, level=logging.INFO, format='%(asctime)s : %(levelname)s : %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p') +logging.info("script started") +pid = os.getpid() +cmnd = "ps -ef|grep test.py|grep -v grep" +status, output = subprocess.getstatusoutput(cmnd) + +logging.info(output) +logging.info(pid) + +pid = os.getpid() +cmnd = "ps -ef|grep test.py|grep -v grep |grep -v {}|wc -l".format(pid) +status, output = subprocess.getstatusoutput(cmnd) + +if int(output) > 0: + logging.info("Running already!") + sys.exit() + +myCmd = "ls /dev/disk/by-uuid" +status, output = subprocess.getstatusoutput(myCmd) +f = open("/tmp/lalala", "w") +contents = f.write(output) +f.close() + +_DEST = "/media/nas/nas-photo/imported" +_DEV = "" +import_drives = [] + +drives = ["6362-3938","3239-3439"] +myCmd = "id" +status, output = subprocess.getstatusoutput(myCmd) +logging.debug(output) +myCmd = "whoami" +status, output = subprocess.getstatusoutput(myCmd) +logging.debug(output) +myCmd = "ls /dev/disk/by-uuid" +status, output = subprocess.getstatusoutput(myCmd) + +for l in output.splitlines(): + if l in drives: + logging.debug(l) + import_drives.append(l) +for d in import_drives: + logging.debug(f"Working on {d}") + _DEV_MOUNT = f"/mnt/{d}" + _DEV_DIR = f"{_DEV_MOUNT}/DCIM" + _IMP_FILE = f"{_DEV_MOUNT}/auto_import" + _DEV_DATA = f"{_DEV_MOUNT}/MISC/version.txt" + myCmd = f"mkdir -p {_DEV_MOUNT}" + logging.debug(myCmd) + status, output = subprocess.getstatusoutput(myCmd) + myCmd = f"sudo mount --uuid {d} {_DEV_MOUNT}" + #myCmd = f"sudo mount /dev/sde1 {_DEV_MOUNT}" + logging.debug(myCmd) + status, output = subprocess.getstatusoutput(myCmd) + logging.debug(output) + if os.path.ismount(_DEV_MOUNT): + 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"] + if wifimac == "2474f742c017": + _DEV = "gopro9_1" + logging.debug("gopro9_1 registered") + elif wifimac == "XXXDJIMINI4": + _DEV = "dji_mini_4" + logging.debug("dji_mini_4 registered") + + if os.path.exists(_IMP_FILE) and _DEV == "": + logging.debug("path exist") + time.sleep(5) + if _DEV == "": + file = open(_IMP_FILE, 'r') + content = file.read() + _DEV = json.loads(content)["device"] + file.close() + x = datetime.datetime.now() + logging.debug(x.year) + _DAT = x.strftime("%Y%m%d") + 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 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)) + try: + shutil.move("{}/{}".format(FULL_PATH,filename),_FDEST) + except: + try: + shutil.move("{}/{}".format(FULL_PATH,filename),"{}/{}".format(_FDEST,filename)) + except: + logging.debug("failed to move file {}".format(filename)) + 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=100" + subprocess.getstatusoutput(myCmd) + else: + logging.debug(f"File: {file_or_dir}") + try: + shutil.move("{}/{}".format(_DEV_DIR,file_or_dir),_FDEST) + except: + try: + shutil.move("{}/{}".format(_DEV_DIR,file_or_dir),"{}/{}".format(_FDEST,file_or_dir)) + except: + logging.debug("failed to move file {}".format(file_or_dir)) + else: + logging.debug("Nothing to import") + + else: + logging.debug("Unknown device") + + else: + logging.debug("Usb does not connected")