You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
935 B
Python
40 lines
935 B
Python
import config, os, json
|
|
from PIL import Image
|
|
import imagehash
|
|
|
|
def find_file(filename, directory):
|
|
filename = filename.lower().split('.')[0]
|
|
for root, dirs, files in os.walk(directory):
|
|
for file in files:
|
|
if filename in file:
|
|
return os.path.join(root, file)
|
|
return None
|
|
|
|
def generate_phash(image_path):
|
|
image = Image.open(image_path)
|
|
return str(imagehash.phash(image))
|
|
|
|
count = 0
|
|
|
|
cacheDir = 'sorted'
|
|
dataPath = 'pins.json'
|
|
|
|
os.makedirs(cacheDir, exist_ok=True)
|
|
|
|
medias = json.load(open(dataPath))
|
|
|
|
for item in medias:
|
|
count += 1
|
|
|
|
filepath = item['filepath']
|
|
if os.path.exists(filepath):
|
|
continue
|
|
|
|
newfilepath = find_file(os.path.basename(filepath), cacheDir)
|
|
if newfilepath:
|
|
print(f"Found file {newfilepath} for {filepath}")
|
|
item['filepath'] = newfilepath
|
|
|
|
|
|
with open(dataPath, 'w') as f:
|
|
json.dump(medias, f) |