#!/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", "5766-67E6"] 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")