FIx sort
This commit is contained in:
BIN
tidy_img/sort.exe
Normal file
BIN
tidy_img/sort.exe
Normal file
Binary file not shown.
49
tidy_img/sort.py
Normal file
49
tidy_img/sort.py
Normal file
@ -0,0 +1,49 @@
|
||||
import re
|
||||
import shutil
|
||||
from pathlib import Path
|
||||
from hashlib import sha256
|
||||
|
||||
d= Path(".").absolute()
|
||||
|
||||
samefiles:list[Path]=[]
|
||||
cnt={}
|
||||
i=0
|
||||
|
||||
for file in d.glob("**/*"):
|
||||
if not file.is_file():continue
|
||||
i+=1
|
||||
result = re.search("(IMG|VID)_(\d{4})(\d{2})(\d{2})_(\d{6})(_.+)?\.(jpg|mp4)",file.name)
|
||||
if not result:continue
|
||||
if re.search(r"[\\\/]?20\d{2}[\\\/]",str(file.relative_to(d))) is not None:continue
|
||||
if result.group(2) in cnt.keys():
|
||||
cnt[result.group(2)]+=1
|
||||
else:
|
||||
cnt[result.group(2)]=1
|
||||
if i&7==0:
|
||||
for key,val in cnt.items():
|
||||
print(f"{key}: {val}")
|
||||
print()
|
||||
target_dir=d/result.group(2)
|
||||
target_dir.mkdir(exist_ok=True)
|
||||
target =target_dir/file.name
|
||||
if target.exists():
|
||||
with open(file,"rb") as f:
|
||||
fileHash=sha256(f.read())
|
||||
if target.stat().st_size == file.stat().st_size:
|
||||
with open(target,"rb") as f:
|
||||
targetHash=sha256(f.read())
|
||||
if fileHash.hexdigest()==targetHash.hexdigest():
|
||||
samefiles.append(file)
|
||||
continue
|
||||
target_dir=d/"conflict"/result.group(2)
|
||||
target_dir.mkdir(parents=True,exist_ok=True)
|
||||
target =target_dir/(file.with_stem(file.name+"_"+fileHash.hexdigest()[:5]).name)
|
||||
shutil.move(file,target)
|
||||
|
||||
if len(samefiles)!=0:
|
||||
print("Detected same files: \n","\n".join([str(file) for file in samefiles]))
|
||||
ipt=input("Delete Y/n: ")
|
||||
if ipt == "n":
|
||||
exit()
|
||||
for file in samefiles:
|
||||
file.unlink()
|
Reference in New Issue
Block a user