This commit is contained in:
2025-06-17 22:23:20 +02:00
parent 1487ee7915
commit 73691fbb51
2 changed files with 311 additions and 0 deletions

175
auto_import_v2.py Normal file
View File

@@ -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")