2 votes

Trouver des photos par fuseau horaire

Certaines de mes photos dans Apple Photos 2.0 (3150.4.120) ont le mauvais fuseau horaire, mais je ne sais pas lesquelles. Je peux trouver le fuseau horaire pour une photo individuelle, en sélectionnant Image > Ajuster la date et l'heure.

Mais comment puis-je trouver toutes les photos avec un certain fuseau horaire ? J'ai essayé de chercher dans le Finder, dans les métadonnées du système de fichiers des photos (en utilisant mdls), dans les métadonnées EXIF des photos (en utilisant exiftool), et même dans la base de données sqlite de Photos, mais je n'ai pas trouvé où elles sont stockées.

Où se trouvent ces informations ?

2voto

Kent Points 6002

Cela peut dépendre de l'appareil photo, du téléphone et du système d'exploitation, mais je ne pense pas que le fuseau horaire soit explicitement enregistré dans les métadonnées EXIF de la photo.

Dans certaines métadonnées, il existe un GPS Time (Atomic Clock) qui est réglé sur UTC. Donc, Photos calcule probablement juste les décalages de Date and Time (Original) pour afficher le fuseau horaire.

Vous pourrez peut-être utiliser exiftool pour établir une liste de ces deux moments pour vos photos, et rechercher les valeurs aberrantes qui sont plus (ou moins) différentes des autres.

Mise à jour de l'affiche originale :

J'ai élaboré un script Python rapide pour comparer ces heures, et imprimer celles qui ne sont pas dans le fuseau horaire attendu, ou qui ont des valeurs différentes pour les minutes. Vous devrez exporter les originaux non modifiés de Photos, puisque les originaux modifiés n'ont pas ces métadonnées, et ensuite passer leurs noms de fichiers à ce script.

Bien entendu, je n'ai aucune idée si cela correspond à ce que fait Photos pour régler le fuseau horaire. Mais il a correctement identifié les photos que je connaissais avec le mauvais fuseau horaire, et n'a pas trouvé de faux positifs.

#!/usr/bin/python

from subprocess import check_output
import sys, re, os
from dateutil.parser import parse
from datetime import datetime

expected_offset_hours = 8.0  # set to appropriate time zone offset

def get_field(out, name):
    match = re.search("^" + re.escape(name) + "\t(.+?)$", out, re.MULTILINE)
    if match:
        return match.group(1)
    return None

for arg in sys.argv[1:]:
    if not os.path.exists(arg):
        continue
    out = check_output(["exif", "-m", arg])
    gps_date = get_field(out, "GPS Date")
    gps_time = get_field(out, "GPS Time (Atomic Clock)")
    if gps_date == None or gps_time == None:
        print arg + "\tNo GPS date/time"
        continue
    gps_parsed = datetime.strptime(gps_date + " " + gps_time, '%Y:%m:%d %H:%M:%S.%f')
    orig_datetime = get_field(out, "Date and Time (Original)")
    if orig_datetime == None:
        continue
    orig_parsed = datetime.strptime(orig_datetime, '%Y:%m:%d %H:%M:%S')
    offset_secs = (orig_parsed - gps_parsed).total_seconds()
    offset_hours = round(offset_secs / 3600)
    offset_mins = abs(offset_secs - (offset_hours * 3600)) // 60
    if offset_hours != expected_offset_hours or offset_mins > 0:
        #print gps_date + ' ' + gps_time + ' ' + str(gps_parsed)
        #print orig_datetime + ' ' + str(orig_parsed)
        print arg + "\t" + str(offset_hours) + "\t" + str(offset_mins)

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X