diff --git a/import.py b/import.py index dcd7da7..41ccef6 100755 --- a/import.py +++ b/import.py @@ -10,62 +10,71 @@ from elodie.media.video import Video from elodie.filesystem import FileSystem from elodie.localstorage import Db +db = Db() +filesystem = FileSystem() + +def process_file(_file): + checksum = db.checksum(_file) + if(checksum == None): + print 'Could not get checksum for %s. Skipping...' % _file + return + + if(db.check_hash(checksum) == True): + print '%s already exists at %s. Skipping...' % (_file, db.get_hash(checksum)) + return + + media = media_type(_file) + + if(media_type.__name__ == 'Video'): + filesystem.set_date_from_path_video(media) + + metadata = media.get_metadata() + + directory_name = filesystem.get_folder_path(date=metadata['date_taken'], latitude=metadata['latitude'], longitude=metadata['longitude']) + #directory_name = filesystem.get_folder_path(date=metadata['date_taken']) + dest_directory = '%s/%s' % (destination, directory_name) + # TODO remove the day prefix of the file that was there prior to the crawl + file_name = filesystem.get_file_name(media) + dest_path = '%s/%s' % (dest_directory, file_name) + + filesystem.create_directory(dest_directory) + + print '%s -> %s' % (_file, dest_path) + shutil.copy2(_file, dest_path) + #shutil.move(_file, dest_path) + db.add_hash(checksum, dest_path) + def main(argv): - args = arguments.parse(argv, None, ['type=','source=','destination='], './import.py --type= --source= -destination=') + args = arguments.parse(argv, None, ['file=','type=','source=','destination='], './import.py --type= --source= -destination=') - db = Db() + if('destination' not in args): + print 'No destination passed in' + sys.exit(2) - source = args['source'] destination = args['destination'] - - filesystem = FileSystem() - if(args['type'] == 'photo'): + if('type' in args and args['type'] == 'photo'): media_type = Photo else: media_type = Video - write_counter = 0 - for current_file in filesystem.get_all_files(source, media_type.get_valid_extensions()): - checksum = db.checksum(current_file) - if(checksum == None): - print 'Could not get checksum for %s. Skipping...' % current_file - continue + if('source' in args): + source = args['source'] - if(db.check_hash(checksum) == True): - print '%s already exists at %s. Skipping...' % (current_file, db.get_hash(checksum)) - continue + write_counter = 0 + for current_file in filesystem.get_all_files(source, media_type.get_valid_extensions()): + process_file(current_file) + # Write to the hash database every 10 iterations + write_counter += 1 + if(write_counter % 10 == 0): + db.update_hash_db() - media = media_type(current_file) - - if(media_type.__name__ == 'Video'): - filesystem.set_date_from_path_video(media) - - metadata = media.get_metadata() - - directory_name = filesystem.get_folder_path(date=metadata['date_taken'], latitude=metadata['latitude'], longitude=metadata['longitude']) - #directory_name = filesystem.get_folder_path(date=metadata['date_taken']) - dest_directory = '%s/%s' % (destination, directory_name) - # TODO remove the day prefix of the file that was there prior to the crawl - file_name = filesystem.get_file_name(media) - dest_path = '%s/%s' % (dest_directory, file_name) - - filesystem.create_directory(dest_directory) - - print '%s -> %s' % (current_file, dest_path) - shutil.copy2(current_file, dest_path) - #shutil.move(current_file, dest_path) - db.add_hash(checksum, dest_path) - - # Write to the hash database every 10 iterations - write_counter += 1 - if(write_counter % 10 == 0): + # If there's anything we haven't written to the hash database then write it now + if(write_counter % 10 != 10): db.update_hash_db() - - - - # If there's anything we haven't written to the hash database then write it now - if(write_counter % 10 != 10): + elif('file' in args): + process_file(args['file']) db.update_hash_db() if __name__ == '__main__': main(sys.argv[1:]) + sys.exit(0)