From ed63e229d6effb87c8377c7da0d20d6b4d8030f5 Mon Sep 17 00:00:00 2001 From: Tykayn Date: Thu, 4 Jul 2024 10:24:33 +0200 Subject: [PATCH] add find france photos and move them --- .../find_france_photos_and_move.py | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 mapillary_sequences_userscript/find_france_photos_and_move.py diff --git a/mapillary_sequences_userscript/find_france_photos_and_move.py b/mapillary_sequences_userscript/find_france_photos_and_move.py new file mode 100644 index 00000000..dab7ae45 --- /dev/null +++ b/mapillary_sequences_userscript/find_france_photos_and_move.py @@ -0,0 +1,50 @@ +import os +import shutil +import exifread +import piexif + +# Définition du rectangle entourant la France métropolitaine +france_bbox = (42.0, -5.0, 51.0, 10.0) # (lat_min, lon_min, lat_max, lon_max) + +# Chemin du répertoire source +source_dir ='source' + +# Chemin du répertoire destination +destination_dir = 'destination' + +# Crée le répertoire destination si il n'existe pas +if not os.path.exists(destination_dir): + os.makedirs(destination_dir) + +# Fonction pour déplacer un fichier si il est dans le rectangle de la France +def move_file_if_in_france(filepath, filename): + # Ouvre le fichier image et lit les informations EXIF + with open(filepath, 'rb') as f: + tags = exifread.process_file(f) + + # Recherche les informations GPS dans les informations EXIF + gps_tags = tags.get('GPS') + if gps_tags: + gps_lat = gps_tags.get('GPSLatitude') + gps_lon = gps_tags.get('GPSLongitude') + if gps_lat and gps_lon: + gps_lat = gps_lat.values[0].num / gps_lat.values[0].den + gps_lon = gps_lon.values[0].num / gps_lon.values[0].den + if (france_bbox[0] <= gps_lat <= france_bbox[2] and + france_bbox[1] <= gps_lon <= france_bbox[3]): + # Déplace le fichier dans le sous-répertoire "photos_in_france" + dest_subdir = os.path.join(destination_dir, 'photos_in_france', os.path.basename(os.path.dirname(filepath))) + if not os.path.exists(dest_subdir): + os.makedirs(dest_subdir) + shutil.move(filepath, os.path.join(dest_subdir, filename)) + print(f"Moved {filename} to {dest_subdir}") + return True + return False + +# Parcourt tous les fichiers dans le répertoire source et ses sous-répertoires +for root, dirs, files in os.walk(source_dir): + for filename in files: + # Vérifie si le fichier est une image + if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.gif', '.bmp', '.tif')): + filepath = os.path.join(root, filename) + move_file_if_in_france(filepath, filename)