51 lines
2.0 KiB
Python
51 lines
2.0 KiB
Python
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)
|