Spaces:
Sleeping
Sleeping
| import os | |
| import sys | |
| from pathlib import Path | |
| from tqdm import tqdm | |
| from PIL import Image, ExifTags | |
| def analyze_metadata(folder_path, label): | |
| folder = Path(folder_path) | |
| if not folder.exists(): | |
| return None | |
| images = list(folder.glob("*.jpg")) + list(folder.glob("*.png")) + list(folder.glob("*.jpeg")) | |
| if not images: | |
| return None | |
| print(f"\nAnalyzing Metadata for '{label}' ({folder})...") | |
| has_exif_count = 0 | |
| camera_model_count = 0 | |
| software_sig_count = 0 | |
| # Check first 50 | |
| sample = images[:50] | |
| for img_path in tqdm(sample): | |
| try: | |
| img = Image.open(img_path) | |
| exif = img.getexif() | |
| if exif: | |
| has_exif_count += 1 | |
| # Check for specific tags | |
| # 271: Make, 272: Model, 305: Software | |
| make = exif.get(271) | |
| model = exif.get(272) | |
| software = exif.get(305) | |
| if make or model: | |
| camera_model_count += 1 | |
| if software: | |
| software_sig_count += 1 | |
| # print(f" Software: {software} in {img_path.name}") | |
| except Exception as e: | |
| pass | |
| return { | |
| 'label': label, | |
| 'has_exif_percent': (has_exif_count/len(sample))*100, | |
| 'camera_model_percent': (camera_model_count/len(sample))*100 | |
| } | |
| def main(): | |
| folder_a = "/media/juanquy/Dev/Users photos/" | |
| folder_b = "/media/juanquy/Dev/a small sample/" | |
| res_a = analyze_metadata(folder_a, "Folder A") | |
| res_b = analyze_metadata(folder_b, "Folder B") | |
| print("\nMetaData Analysis Report:") | |
| if res_a: | |
| print(f"{res_a['label']}: Exif={res_a['has_exif_percent']}%, CameraModel={res_a['camera_model_percent']}%") | |
| if res_b: | |
| print(f"{res_b['label']}: Exif={res_b['has_exif_percent']}%, CameraModel={res_b['camera_model_percent']}%") | |
| if __name__ == "__main__": | |
| main() | |