71 lines
1.7 KiB
Python
71 lines
1.7 KiB
Python
#!python3
|
|
# Created 18 Sep 2019
|
|
# @author: andreas
|
|
|
|
""" Module: Main Template """
|
|
|
|
from argparse import ArgumentParser
|
|
import logging
|
|
import sys
|
|
import os
|
|
import hashlib
|
|
from pathlib import Path
|
|
import datetime as dt
|
|
import pickle
|
|
import shutil
|
|
|
|
LOG = logging.getLogger()
|
|
PROXY_DIR = "."
|
|
|
|
|
|
def cli(argv=None):
|
|
# command line interface
|
|
if argv is None:
|
|
argv = sys.argv
|
|
LOG.info("%s %s", os.path.basename(argv[0]), " ".join(argv[1:]))
|
|
parser = ArgumentParser(description="Module Template")
|
|
parser.add_argument("--src")
|
|
parser.add_argument("--dest")
|
|
args = parser.parse_args(argv[1:])
|
|
argd = vars(args)
|
|
# arguments
|
|
for k, v in argd.items():
|
|
print(k, v)
|
|
# feature
|
|
srcd = build_hashdict(Path(args.src))
|
|
destd = build_hashdict(Path(args.dest))
|
|
srch = set(srcd.keys())
|
|
desth = set(destd.keys())
|
|
xor_hashes = srch ^ desth
|
|
for h in xor_hashes:
|
|
if h in srcd:
|
|
print(srcd[h])
|
|
for h in xor_hashes:
|
|
if h in destd:
|
|
print(destd[h])
|
|
LOG.info("done")
|
|
return 0
|
|
|
|
|
|
def build_hashdict(base):
|
|
files_by_hash = dict()
|
|
for fp in base.glob("**/*.jpg"):
|
|
h = file_hash(fp)
|
|
files_by_hash[h] = fp
|
|
return files_by_hash
|
|
|
|
|
|
def file_hash(filepath):
|
|
h = hashlib.sha256()
|
|
with filepath.open("rb") as fh:
|
|
h.update(fh.read())
|
|
return h.digest()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
logging.Formatter.default_time_format = '%H:%M:%S'
|
|
logging.Formatter.default_msec_format = '%s.%03d'
|
|
logging.basicConfig(level=logging.DEBUG,
|
|
format='%(asctime)s [%(process)i] %(levelname).4s %(module)s.%(funcName)s: %(message)s')
|
|
sys.exit(cli())
|