diff --git a/exportiphoto.py b/exportiphoto.py index aa1bac0..032b0ba 100644 --- a/exportiphoto.py +++ b/exportiphoto.py @@ -48,7 +48,7 @@ def close(self): class iPhotoLibrary(object): def __init__(self, albumDir, destDir, use_album=False, use_date=False, use_faces=False, use_metadata=False, deconflict=False, quiet=False, - year_dir=False, import_missing=False, import_from_date=None, test=False, + year_dir=False, import_missing=False, import_from_date=None, export_from_date=None, test=False, date_delimiter="-", ignore_time_delta=False): self.use_album = use_album self.use_date = use_date @@ -75,6 +75,11 @@ def __init__(self, albumDir, destDir, use_album=False, use_date=False, else: self.import_from_date = None + if export_from_date: + self.export_from_date = datetime.strptime(export_from_date, "%Y-%m-%d") + else: + self.export_from_date = None + if self.import_missing: self.build_import_list() @@ -265,6 +270,8 @@ def walk(self, funcs): if folderName == album_name: self.import_albums.remove(ia) + if self.export_from_date and folderDate < self.export_from_date: continue + if folderDate and self.use_date: date = '%(year)d%(delim)s%(month)02d%(delim)s%(day)02d' % { 'year': folderDate.year, @@ -449,13 +456,13 @@ def build_import_list(self): ''' if self.year_dir: year_dir_list = os.listdir(self.dest_dir) + for year_dir in year_dir_list: # if year_dir was specified, then only match on folders inside year folders if not re.match("^[0-9]{4}$", year_dir): continue # if import_from_date was specified, then skip folders where the year_dir is before the import_from_date.year if self.import_from_date and int(year_dir) < self.import_from_date.year: continue - self.build_import_album_dirs(os.path.join(self.dest_dir, year_dir)) else: self.build_import_album_dirs(self.dest_dir) @@ -476,7 +483,7 @@ def build_import_album_dirs(self, base_dir): if m: folder_date = datetime.strptime(album_name, "%Y" + delim + "%m" + delim + "%d") month, day, year = folder_date.strftime("%b %d %Y").split(" ") - album_names.append("%s %d, %s" %(month, int(day), year)) + album_names.append("%s %d, %s" %(month, int(day), year)) # Don't import folders that are prior to the specified date if not folder_date: continue @@ -557,6 +564,11 @@ def error(msg): help="only import missing folers if folder date occurs after (YYYY-MM-DD). Uses date in folder name." ) + option_parser.add_option("-p", "--export_from_date", + action="store", type="string", dest="export_from_date", + help="skip exporting events older than (YYYY-MM-DD)." + ) + if pyexiv2: option_parser.add_option("-m", "--metadata", action="store_true", dest="metadata", @@ -590,6 +602,7 @@ def error(msg): year_dir=options.year_dir, import_missing=options.import_missing, import_from_date=options.import_from_date, + export_from_date=options.export_from_date, test=options.test, date_delimiter=options.date_delimiter, ignore_time_delta=options.ignore_time_delta