def test_get_coordinates_without_exif(): photo = Photo(helper.get_file('no-exif.jpg')) latitude = photo.get_coordinate('latitude') longitude = photo.get_coordinate('longitude') assert latitude is None, latitude assert longitude is None, longitude
def test_get_date_taken(): text = Text(helper.get_file('valid.txt')) text.get_metadata() date_taken = text.get_date_taken() assert date_taken == helper.time_convert((2016, 4, 7, 11, 15, 26, 3, 98, 0)), date_taken
def test_set_location_minus(): temporary_folder, folder = helper.create_working_folder() origin = '%s/audio.m4a' % folder shutil.copyfile(helper.get_file('audio.m4a'), origin) audio = Audio(origin) origin_metadata = audio.get_metadata() # Verify that original audio has different location info that what we # will be setting and checking assert not helper.isclose(origin_metadata['latitude'], 11.111111), origin_metadata['latitude'] assert not helper.isclose(origin_metadata['longitude'], 99.999999), origin_metadata['longitude'] status = audio.set_location(-11.111111, -99.999999) assert status == True, status audio_new = Audio(origin) metadata = audio_new.get_metadata() shutil.rmtree(folder) assert helper.isclose(metadata['latitude'], -11.111111), metadata['latitude'] assert helper.isclose(metadata['longitude'], -99.999999), metadata['longitude']
def test_set_date_taken_without_header(): temporary_folder, folder = helper.create_working_folder() origin = '%s/text.txt' % folder shutil.copyfile(helper.get_file('valid-without-header.txt'), origin) text = Text(origin) metadata = text.get_metadata() with open(origin, 'r') as f: contents = f.read() assert helper.time_convert((2013, 9, 30, 7, 6, 5, 0, 273, 0)) != metadata['date_taken'], metadata['date_taken'] status = text.set_date_taken(datetime(2013, 9, 30, 7, 6, 5)) assert status == True, status text_new = Text(origin) metadata_new = text_new.get_metadata() with open(origin, 'r') as f: f.readline() contents_new = f.read() assert contents == contents_new, contents_new shutil.rmtree(folder) assert helper.time_convert((2013, 9, 30, 7, 6, 5, 0, 273, 0)) == metadata_new['date_taken'], metadata_new['date_taken']
def test_set_metadata_on_arw(): temporary_folder, folder = helper.create_working_folder() photo_file = helper.get_file('photo.arw') origin = '%s/photo.arw' % folder if not photo_file: photo_file = helper.download_file('photo.arw', folder) if not photo_file or not os.path.isfile(photo_file): raise SkipTest('arw file not downlaoded') shutil.copyfile(photo_file, origin) photo = Photo(origin) origin_metadata = photo.get_metadata() status = photo.set_location(11.1111111111, 99.9999999999) assert status == True, status photo_new = Photo(origin) metadata = photo_new.get_metadata() shutil.rmtree(folder) assert metadata['date_taken'] == helper.time_convert((2007, 4, 8, 17, 41, 18, 6, 98, 0)), metadata['date_taken'] assert helper.isclose(metadata['latitude'], 11.1111111111), metadata['latitude'] assert helper.isclose(metadata['longitude'], 99.9999999999), metadata['longitude']
def test_process_video_with_album_then_title(): if not can_edit_exif(): raise SkipTest('avmetareadwrite executable not found') filesystem = FileSystem() temporary_folder, folder = helper.create_working_folder() origin = os.path.join(folder,'movie.mov') shutil.copyfile(helper.get_file('video.mov'), origin) origin_checksum = helper.checksum(origin) media = Video(origin) media.set_album('test_album') media.set_title('test_title') destination = filesystem.process_file(origin, temporary_folder, media, allowDuplicate=True) destination_checksum = helper.checksum(destination) shutil.rmtree(folder) shutil.rmtree(os.path.dirname(os.path.dirname(destination))) assert origin_checksum is not None, origin_checksum assert origin_checksum != destination_checksum, destination_checksum assert helper.path_tz_fix(os.path.join('2015-01-Jan','test_album','2015-01-19_12-45-11-movie-test_title.mov')) in destination, destination
def test_set_album(): temporary_folder, folder = helper.create_working_folder() origin = '%s/text.txt' % folder shutil.copyfile(helper.get_file('valid.txt'), origin) text = Text(origin) metadata = text.get_metadata() with open(origin, 'r') as f: f.readline() contents = f.read() album_name = 'Test Album' assert album_name != metadata['album'] status = text.set_album(album_name) assert status == True, status text_new = Text(origin) metadata_new = text_new.get_metadata() with open(origin, 'r') as f: f.readline() contents_new = f.read() assert contents == contents_new, contents_new shutil.rmtree(folder) assert album_name == metadata_new['album'], metadata_new
def test_set_location(): if not can_edit_exif(): raise SkipTest('avmetareadwrite executable not found') raise SkipTest('gh-31, precision is lost in conversion from decimal to dms') temporary_folder, folder = helper.create_working_folder() origin = '%s/video.mov' % folder shutil.copyfile(helper.get_file('video.mov'), origin) video = Video(origin) origin_metadata = video.get_metadata() # Verify that original photo has no location information #assert origin_metadata['latitude'] is None, origin_metadata['latitude'] #assert origin_metadata['longitude'] is None, origin_metadata['longitude'] status = video.set_location(11.1111111111, 99.9999999999) assert status == True, status video_new = Video(origin) metadata = video_new.get_metadata() shutil.rmtree(folder) # @TODO: understand why the decimal to degree conversion loses accuracy assert metadata['latitude'] == 11.1111111111, metadata['latitude'] assert metadata['longitude'] == 99.9999999999, metadata['longitude']
def test_set_location(): temporary_folder, folder = helper.create_working_folder() origin = '%s/photo.jpg' % folder shutil.copyfile(helper.get_file('plain.jpg'), origin) photo = Photo(origin) origin_metadata = photo.get_metadata() # Verify that original photo has different location info that what we # will be setting and checking assert not helper.isclose(origin_metadata['latitude'], 11.1111111111), origin_metadata['latitude'] assert not helper.isclose(origin_metadata['longitude'], 99.9999999999), origin_metadata['longitude'] status = photo.set_location(11.1111111111, 99.9999999999) assert status == True, status photo_new = Photo(origin) metadata = photo_new.get_metadata() shutil.rmtree(folder) assert helper.isclose(metadata['latitude'], 11.1111111111), metadata['latitude'] assert helper.isclose(metadata['longitude'], 99.9999999999), metadata['longitude']
def test_set_metadata_on_rw2(): raise SkipTest('gh-94 Writing to RW2 images is not supported') temporary_folder, folder = helper.create_working_folder() photo_file = helper.get_file('photo.rw2') origin = '%s/photo.rw2' % folder if not photo_file: photo_file = helper.download_file('photo.rw2', folder) if not photo_file or not os.path.isfile(photo_file): raise SkipTest('rw2 file not downlaoded') shutil.copyfile(photo_file, origin) photo = Photo(origin) origin_metadata = photo.get_metadata() status = photo.set_location(11.1111111111, 99.9999999999) assert status == True, status photo_new = Photo(origin) metadata = photo_new.get_metadata() shutil.rmtree(folder) assert metadata['date_taken'] == helper.time_convert((2014, 11, 19, 23, 7, 44, 2, 323, 0)), metadata['date_taken'] assert helper.isclose(metadata['latitude'], 11.1111111111), metadata['latitude'] assert helper.isclose(metadata['longitude'], 99.9999999999), metadata['longitude']
def test_set_location_without_header(): temporary_folder, folder = helper.create_working_folder() origin = '%s/text.txt' % folder shutil.copyfile(helper.get_file('valid-without-header.txt'), origin) text = Text(origin) origin_metadata = text.get_metadata() with open(origin, 'r') as f: contents = f.read() # Verify that original photo has different location info that what we # will be setting and checking assert not helper.isclose(origin_metadata['latitude'], 11.1111111111), origin_metadata['latitude'] assert not helper.isclose(origin_metadata['longitude'], 99.9999999999), origin_metadata['longitude'] status = text.set_location(11.1111111111, 99.9999999999) assert status == True, status text_new = Text(origin) metadata = text_new.get_metadata() with open(origin, 'r') as f: f.readline() contents_new = f.read() assert contents == contents_new, contents_new shutil.rmtree(folder) assert helper.isclose(metadata['latitude'], 11.1111111111), metadata['latitude']
def test_set_location(): raise SkipTest('gh-31, precision is lost in conversion from decimal to dms') temporary_folder, folder = helper.create_working_folder() origin = '%s/photo.jpg' % folder shutil.copyfile(helper.get_file('plain.jpg'), origin) photo = Photo(origin) origin_metadata = photo.get_metadata() # Verify that original photo has no location information assert origin_metadata['latitude'] is None, origin_metadata['latitude'] assert origin_metadata['longitude'] is None, origin_metadata['longitude'] status = photo.set_location(11.1111111111, 99.9999999999) assert status == True, status photo_new = Photo(origin) metadata = photo_new.get_metadata() shutil.rmtree(folder) # @TODO: understand why the decimal to degree conversion loses accuracy assert metadata['latitude'] == 11.1111111111, metadata['latitude'] assert metadata['longitude'] == 99.9999999999, metadata['longitude']
def test_get_date_taken(): raise SkipTest('gh-32 this test fails on travisci') audio = Audio(helper.get_file('audio.m4a')) date_taken = audio.get_date_taken() print '%r' % date_taken assert date_taken == (2016, 1, 4, 5, 24, 15, 0, 19, 0), date_taken
def _test_photo_type_set(type, date): temporary_folder, folder = helper.create_working_folder() photo_name = 'photo.{}'.format(type) photo_file = helper.get_file(photo_name) origin = '{}/{}'.format(folder, photo_name) if not photo_file: photo_file = helper.download_file(photo_name, folder) if not photo_file or not os.path.isfile(photo_file): raise SkipTest('{} file not downlaoded'.format(type)) shutil.copyfile(photo_file, origin) photo = Photo(origin) origin_metadata = photo.get_metadata() status = photo.set_location(11.1111111111, 99.9999999999) assert status == True, status photo_new = Photo(origin) metadata = photo_new.get_metadata() shutil.rmtree(folder) assert metadata['date_taken'] == helper.time_convert(date), '{} date {}'.format(type, metadata['date_taken']) assert helper.isclose(metadata['latitude'], 11.1111111111), '{} lat {}'.format(type, metadata['latitude']) assert helper.isclose(metadata['longitude'], 99.9999999999), '{} lon {}'.format(type, metadata['latitude'])
def _test_photo_type_get(type, date): temporary_folder, folder = helper.create_working_folder() photo_name = 'photo.{}'.format(type) photo_file = helper.get_file(photo_name) origin = '{}/{}'.format(folder, photo_name) if not photo_file: photo_file = helper.download_file(photo_name, folder) if not photo_file or not os.path.isfile(photo_file): raise SkipTest('{} file not downlaoded'.format(type)) # downloading for each test is costly so we save it in the working directory file_path_save_as = helper.get_file_path(photo_name) if os.path.isfile(photo_file): shutil.copyfile(photo_file, file_path_save_as) shutil.copyfile(photo_file, origin) photo = Photo(origin) metadata = photo.get_metadata() shutil.rmtree(folder) assert metadata['date_taken'] == helper.time_convert(date), '{} date {}'.format(type, metadata['date_taken'])
def test_set_location(): if not can_edit_exif(): raise SkipTest('avmetareadwrite executable not found') temporary_folder, folder = helper.create_working_folder() origin = '%s/video.mov' % folder shutil.copyfile(helper.get_file('video.mov'), origin) video = Video(origin) origin_metadata = video.get_metadata() # Verify that original video has different location info that what we # will be setting and checking assert not helper.isclose(origin_metadata['latitude'], 11.1111111111), origin_metadata['latitude'] assert not helper.isclose(origin_metadata['longitude'], 99.9999999999), origin_metadata['longitude'] status = video.set_location(11.1111111111, 99.9999999999) assert status == True, status video_new = Video(origin) metadata = video_new.get_metadata() shutil.rmtree(folder) assert helper.isclose(metadata['latitude'], 11.1111111111), metadata['latitude'] assert helper.isclose(metadata['longitude'], 99.9999999999), metadata['longitude']
def test_update_time_on_video(): temporary_folder, folder = helper.create_working_folder() temporary_folder_destination, folder_destination = helper.create_working_folder() origin = "%s/video.mov" % folder shutil.copyfile(helper.get_file("video.mov"), origin) video = Video(origin) metadata = video.get_metadata() reset_hash_db() status = elodie.update_time(video, origin, "2000-01-01 12:00:00") restore_hash_db() video_processed = Video(origin) metadata_processed = video_processed.get_metadata() shutil.rmtree(folder) shutil.rmtree(folder_destination) assert status == True, status assert metadata["date_taken"] != metadata_processed["date_taken"] assert metadata_processed["date_taken"] == helper.time_convert((2000, 1, 1, 12, 0, 0, 5, 1, 0)), metadata_processed[ "date_taken" ]
def test_checksum(): db = Db() src = helper.get_file('plain.jpg') checksum = db.checksum(src) assert checksum == 'd5eb755569ddbc8a664712d2d7d6e0fa1ddfcdb378475e4a6758dc38d5ea9a16', 'Checksum for plain.jpg did not match'
def test_get_date_taken_without_exif(): source = helper.get_file('no-exif.jpg') photo = Photo(source) date_taken = photo.get_date_taken() date_taken_from_file = time.gmtime(min(os.path.getmtime(source), os.path.getctime(source))) assert date_taken == date_taken_from_file, date_taken
def test_get_metadata_with_numeric_header(): # See gh-98 for details text = Text(helper.get_file('valid-with-numeric-header.txt')) # Should not throw error # TypeError: argument of type 'int' is not iterable metadata = text.get_metadata() assert metadata['mime_type'] == 'text/plain'
def test_regenerate_valid_source_with_invalid_files(): temporary_folder, folder = helper.create_working_folder() origin_valid = "%s/valid.txt" % folder shutil.copyfile(helper.get_file("valid.txt"), origin_valid) origin_invalid = "%s/invalid.invalid" % folder shutil.copyfile(helper.get_file("invalid.invalid"), origin_invalid) reset_hash_db() runner = CliRunner() result = runner.invoke(elodie._generate_db, ["--source", folder]) db = Db() restore_hash_db() shutil.rmtree(folder) assert result.exit_code == 0, result.exit_code assert "bde2dc0b839a5d20b0b4c1f57605f84e0e2a4562aaebc1c362de6cb7cc02eeb3" in db.hash_db, db.hash_db assert "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" not in db.hash_db, db.hash_db
def test_stream_end_part_of_file(): # setup file = get_file(FILE) range = (10, file.file_size - 1) clientsock = MockClientSocket(recv_data=HTTP_REQUEST_KNOWN_FILE) # run file.stream_to(clientsock, range, file_chunk_size=None) # assert tools.assert_equals(clientsock.sent_data, 'test 1')
def test_process_file_invalid(): filesystem = FileSystem() temporary_folder, folder = helper.create_working_folder() origin = os.path.join(folder,'photo.jpg') shutil.copyfile(helper.get_file('invalid.jpg'), origin) media = Photo(origin) destination = filesystem.process_file(origin, temporary_folder, media, allowDuplicate=True) assert destination is None
def test_set_album_from_folder_invalid_file(): temporary_folder, folder = helper.create_working_folder() base_file = helper.get_file('invalid.jpg') origin = '%s/invalid.jpg' % folder shutil.copyfile(base_file, origin) base = Base(origin) status = base.set_album_from_folder() assert status == False, status
def test_get_date_taken_from_invalid(): origin = helper.get_file('valid-without-header.txt') text = Text(origin) text.get_metadata() date_taken = text.get_date_taken() seconds_since_epoch = min( os.path.getmtime(origin), os.path.getctime(origin) ) expected_date_taken = time.gmtime(seconds_since_epoch) assert date_taken == expected_date_taken, date_taken
def test_import_destination_in_source(): temporary_folder, folder = helper.create_working_folder() folder_destination = "{}/destination".format(folder) os.mkdir(folder_destination) origin = "%s/video.mov" % folder shutil.copyfile(helper.get_file("video.mov"), origin) reset_hash_db() dest_path = elodie.import_file(origin, folder_destination, False, False, False) restore_hash_db() shutil.rmtree(folder) assert dest_path is None, dest_path
def test_set_original_name_when_does_not_exist(): temporary_folder, folder = helper.create_working_folder() origin = '%s/%s' % (folder, 'plain.jpg') file = helper.get_file('plain.jpg') shutil.copyfile(file, origin) media = Media.get_class_by_file(origin, [Photo]) metadata_before = media.get_metadata() result = media.set_original_name() metadata_after = media.get_metadata() assert metadata_before['original_name'] is None, metadata_before assert metadata_after['original_name'] == 'plain.jpg', metadata_after assert result is True, result
def test_verify_ok(): temporary_folder, folder = helper.create_working_folder() origin = "%s/valid.txt" % folder shutil.copyfile(helper.get_file("valid.txt"), origin) reset_hash_db() runner = CliRunner() runner.invoke(elodie._generate_db, ["--source", folder]) result = runner.invoke(elodie._verify) restore_hash_db() shutil.rmtree(folder) assert "Success 1" in result.output, result.output assert "Error 0" in result.output, result.output
def test_import_directory_with_non_matching_exclude(): temporary_folder, folder = helper.create_working_folder() temporary_folder_destination, folder_destination = helper.create_working_folder( ) origin_valid = '%s/valid.jpg' % folder shutil.copyfile(helper.get_file('plain.jpg'), origin_valid) runner = CliRunner() result = runner.invoke(elodie._import, [ '--destination', folder_destination, '--source', folder, '--exclude-regex', 'non-matching', '--allow-duplicates' ]) assert 'Success 1' in result.output, result.output assert 'Error 0' in result.output, result.output
def test_regenerate_valid_source(): temporary_folder, folder = helper.create_working_folder() origin = '%s/valid.txt' % folder shutil.copyfile(helper.get_file('valid.txt'), origin) reset_hash_db() runner = CliRunner() result = runner.invoke(elodie._generate_db, ['--source', folder]) db = Db() restore_hash_db() shutil.rmtree(folder) assert result.exit_code == 0, result.exit_code assert 'bde2dc0b839a5d20b0b4c1f57605f84e0e2a4562aaebc1c362de6cb7cc02eeb3' in db.hash_db, db.hash_db
def test_import_file_send_to_trash_true(): temporary_folder, folder = helper.create_working_folder() temporary_folder_destination, folder_destination = helper.create_working_folder() origin = '%s/valid.txt' % folder shutil.copyfile(helper.get_file('valid.txt'), origin) helper.reset_dbs() dest_path1 = elodie.import_file(origin, folder_destination, False, True, False) assert not os.path.isfile(origin), origin helper.restore_dbs() shutil.rmtree(folder) shutil.rmtree(folder_destination) assert dest_path1 is not None
def test_import_destination_in_source(): temporary_folder, folder = helper.create_working_folder() folder_destination = '{}/destination'.format(folder) os.mkdir(folder_destination) origin = '%s/video.mov' % folder shutil.copyfile(helper.get_file('video.mov'), origin) reset_hash_db() dest_path = elodie.import_file(origin, folder_destination, False, False, False) restore_hash_db() shutil.rmtree(folder) assert dest_path is None, dest_path
def test_regenerate_valid_source(): temporary_folder, folder = helper.create_working_folder() origin = "%s/valid.txt" % folder shutil.copyfile(helper.get_file("valid.txt"), origin) reset_hash_db() runner = CliRunner() result = runner.invoke(elodie._generate_db, ["--source", folder]) db = Db() restore_hash_db() shutil.rmtree(folder) assert result.exit_code == 0, result.exit_code assert "bde2dc0b839a5d20b0b4c1f57605f84e0e2a4562aaebc1c362de6cb7cc02eeb3" in db.hash_db, db.hash_db
def test_verify_ok(): temporary_folder, folder = helper.create_working_folder() origin = '%s/valid.txt' % folder shutil.copyfile(helper.get_file('valid.txt'), origin) helper.reset_dbs() runner = CliRunner() runner.invoke(elodie._generate_db, ['--source', folder]) result = runner.invoke(elodie._verify) helper.restore_dbs() shutil.rmtree(folder) assert 'Success 1' in result.output, result.output assert 'Error 0' in result.output, result.output
def test_regenerate_valid_source(): temporary_folder, folder = helper.create_working_folder() origin = '%s/valid.txt' % folder shutil.copyfile(helper.get_file('valid.txt'), origin) helper.reset_dbs() runner = CliRunner() result = runner.invoke(elodie._generate_db, ['--source', folder]) db = Db() helper.restore_dbs() shutil.rmtree(folder) assert result.exit_code == 0, result.exit_code assert '3c19a5d751cf19e093b7447297731124d9cc987d3f91a9d1872c3b1c1b15639a' in db.hash_db, db.hash_db
def test_set_original_name(): temporary_folder, folder = helper.create_working_folder() random_file_name = '%s.txt' % helper.random_string(10) origin = '%s/%s' % (folder, random_file_name) shutil.copyfile(helper.get_file('valid.txt'), origin) text = Text(origin) metadata = text.get_metadata() text.set_original_name() metadata_updated = text.get_metadata() shutil.rmtree(folder) assert metadata['original_name'] is None, metadata['original_name'] assert metadata_updated[ 'original_name'] == random_file_name, metadata_updated['original_name']
def test_import_file_audio(): temporary_folder, folder = helper.create_working_folder() temporary_folder_destination, folder_destination = helper.create_working_folder() origin = "%s/audio.m4a" % folder shutil.copyfile(helper.get_file("audio.m4a"), origin) reset_hash_db() dest_path = elodie.import_file(origin, folder_destination, False, False, False) restore_hash_db() shutil.rmtree(folder) shutil.rmtree(folder_destination) assert ( helper.path_tz_fix(os.path.join("2016-01-Jan", "Houston", "2016-01-04_05-28-15-audio.m4a")) in dest_path ), dest_path
def test_import_file_video(): temporary_folder, folder = helper.create_working_folder() temporary_folder_destination, folder_destination = helper.create_working_folder() origin = "%s/video.mov" % folder shutil.copyfile(helper.get_file("video.mov"), origin) reset_hash_db() dest_path = elodie.import_file(origin, folder_destination, False, False, False) restore_hash_db() shutil.rmtree(folder) shutil.rmtree(folder_destination) assert ( helper.path_tz_fix(os.path.join("2015-01-Jan", "California", "2015-01-19_12-45-11-video.mov")) in dest_path ), dest_path
def test_import_file_allow_duplicate_false(): temporary_folder, folder = helper.create_working_folder() temporary_folder_destination, folder_destination = helper.create_working_folder() origin = '%s/valid.txt' % folder shutil.copyfile(helper.get_file('valid.txt'), origin) helper.reset_dbs() dest_path1 = elodie.import_file(origin, folder_destination, False, False, False) dest_path2 = elodie.import_file(origin, folder_destination, False, False, False) helper.restore_dbs() shutil.rmtree(folder) shutil.rmtree(folder_destination) assert dest_path1 is not None assert dest_path2 is None
def test_import_file_with_multiple_exclude(): temporary_folder, folder = helper.create_working_folder() temporary_folder_destination, folder_destination = helper.create_working_folder( ) origin_valid = '%s/valid.jpg' % folder shutil.copyfile(helper.get_file('plain.jpg'), origin_valid) runner = CliRunner() result = runner.invoke(elodie._import, [ '--destination', folder_destination, '--exclude-regex', 'does not exist in path', '--exclude-regex', origin_valid[0:5], '--allow-duplicates', origin_valid ]) assert 'Success 0' in result.output, result.output assert 'Error 0' in result.output, result.output
def test_set_metadata(): temporary_folder, folder = helper.create_working_folder() origin = '%s/photo.jpg' % folder shutil.copyfile(helper.get_file('plain.jpg'), origin) photo = Photo(origin) metadata = photo.get_metadata() assert metadata['title'] == None, metadata['title'] new_title = 'Some Title' photo.set_metadata(title=new_title) new_metadata = photo.get_metadata() assert new_metadata['title'] == new_title, new_metadata['title']
def test_set_metadata_basename(): temporary_folder, folder = helper.create_working_folder() origin = '%s/photo.jpg' % folder shutil.copyfile(helper.get_file('plain.jpg'), origin) photo = Photo(origin) metadata = photo.get_metadata() assert metadata['base_name'] == 'photo', metadata['base_name'] new_basename = 'Some Base Name' photo.set_metadata_basename(new_basename) new_metadata = photo.get_metadata() assert new_metadata['base_name'] == new_basename, new_metadata['base_name']
def test_set_original_name_with_arg(): temporary_folder, folder = helper.create_working_folder() origin = '%s/%s' % (folder, 'plain.jpg') file = helper.get_file('plain.jpg') shutil.copyfile(file, origin) new_name = helper.random_string(15) media = Media.get_class_by_file(origin, [Photo]) metadata_before = media.get_metadata() result = media.set_original_name(new_name) metadata_after = media.get_metadata() assert metadata_before['original_name'] is None, metadata_before assert metadata_after['original_name'] == new_name, metadata_after assert result is True, result
def test_verify_error(): temporary_folder, folder = helper.create_working_folder() origin = '%s/valid.txt' % folder shutil.copyfile(helper.get_file('valid.txt'), origin) helper.reset_dbs() runner = CliRunner() runner.invoke(elodie._generate_db, ['--source', folder]) with open(origin, 'w') as f: f.write('changed text') result = runner.invoke(elodie._verify) helper.restore_dbs() shutil.rmtree(folder) assert origin in result.output, result.output assert 'Error 1' in result.output, result.output
def test_import_file_path_unicode(): raise SkipTest("Temporarily skipping unicode test. sh-167") temporary_folder, folder = helper.create_working_folder() temporary_folder_destination, folder_destination = helper.create_working_folder() origin = text_type(folder)+u'/unicode'+six_unichr(160)+u'filename.txt' origin = origin.encode('utf-8') shutil.copyfile(helper.get_file('valid.txt'), origin) helper.reset_dbs() dest_path = elodie.import_file(origin, folder_destination, False, False, False) helper.restore_dbs() shutil.rmtree(folder) shutil.rmtree(folder_destination) assert helper.path_tz_fix(os.path.join('2016-04-Apr','Unknown Location',u'2016-04-07_11-15-26-unicode\xa0filename-sample-title.txt')) in dest_path, dest_path
def test_googlephotos_after_unsupported(): with open('%s/config.ini-googlephotos-after-unsupported' % gettempdir(), 'w') as f: f.write(config_string_fmt) if hasattr(load_config, 'config'): del load_config.config final_file_path = helper.get_file('audio.m4a') sample_photo = Audio(final_file_path) sample_metadata = sample_photo.get_metadata() sample_metadata['original_name'] = 'foobar' gp = GooglePhotos() gp.after('', '', final_file_path, sample_metadata) db_row = gp.db.get(final_file_path) if hasattr(load_config, 'config'): del load_config.config assert db_row == None, db_row
def test_set_title(): temporary_folder, folder = helper.create_working_folder() origin = '%s/video.mov' % folder shutil.copyfile(helper.get_file('video.mov'), origin) video = Video(origin) origin_metadata = video.get_metadata() status = video.set_title('my video title') assert status == True, status video_new = Video(origin) metadata = video_new.get_metadata() shutil.rmtree(folder) assert metadata['title'] == 'my video title', metadata['title']
def test_set_title(): temporary_folder, folder = helper.create_working_folder() origin = '%s/audio.m4a' % folder shutil.copyfile(helper.get_file('audio.m4a'), origin) audio = Audio(origin) origin_metadata = audio.get_metadata() status = audio.set_title('my audio title') assert status == True, status audio_new = Audio(origin) metadata = audio_new.get_metadata() shutil.rmtree(folder) assert metadata['title'] == 'my audio title', metadata['title']
def test_set_date_taken(): temporary_folder, folder = helper.create_working_folder() origin = '%s/video.mov' % folder shutil.copyfile(helper.get_file('video.mov'), origin) video = Video(origin) status = video.set_date_taken(datetime.datetime(2013, 9, 30, 7, 6, 5)) assert status == True, status video_new = Video(origin) metadata = video_new.get_metadata() date_taken = metadata['date_taken'] shutil.rmtree(folder) assert date_taken == (2013, 9, 30, 7, 6, 5, 0, 273, 0), metadata['date_taken']
def test_process_file_with_album_and_title_and_location(): filesystem = FileSystem() temporary_folder, folder = helper.create_working_folder() origin = '%s/photo.jpg' % folder shutil.copyfile(helper.get_file('with-album-and-title-and-location.jpg'), origin) media = Photo(origin) destination = filesystem.process_file(origin, temporary_folder, media, allowDuplicate=True) origin_checksum = helper.checksum(origin) destination_checksum = helper.checksum(destination) shutil.rmtree(folder) shutil.rmtree(os.path.dirname(os.path.dirname(destination))) assert origin_checksum is not None, origin_checksum assert origin_checksum == destination_checksum, destination_checksum assert '2015-12-Dec/Test Album/2015-12-05_00-59-26-photo-some-title.jpg' in destination, destination
def test_process_file_plain(): filesystem = FileSystem() temporary_folder, folder = helper.create_working_folder() origin = '%s/photo.jpg' % folder shutil.copyfile(helper.get_file('plain.jpg'), origin) media = Photo(origin) destination = filesystem.process_file(origin, temporary_folder, media, allowDuplicate=True) origin_checksum = helper.checksum(origin) destination_checksum = helper.checksum(destination) shutil.rmtree(folder) shutil.rmtree(os.path.dirname(os.path.dirname(destination))) assert origin_checksum is not None, origin_checksum assert origin_checksum == destination_checksum, destination_checksum assert '2015-12-Dec/Unknown Location/2015-12-05_00-59-26-photo.jpg' in destination, destination
def test_import_file_video(): temporary_folder, folder = helper.create_working_folder() temporary_folder_destination, folder_destination = helper.create_working_folder( ) origin = '%s/video.mov' % folder shutil.copyfile(helper.get_file('video.mov'), origin) helper.reset_dbs() dest_path = elodie.import_file(origin, folder_destination, False, False, False) helper.restore_dbs() shutil.rmtree(folder) shutil.rmtree(folder_destination) assert helper.path_tz_fix( os.path.join('2015-01-Jan', 'California', '2015-01-19_12-45-11-video.mov')) in dest_path, dest_path
def test_set_title(): temporary_folder, folder = helper.create_working_folder() origin = '%s/photo.jpg' % folder shutil.copyfile(helper.get_file('plain.jpg'), origin) photo = Photo(origin) origin_metadata = photo.get_metadata() status = photo.set_title('my photo title') assert status == True, status photo_new = Photo(origin) metadata = photo_new.get_metadata() shutil.rmtree(folder) assert metadata['title'] == 'my photo title', metadata['title']
def test_import_file_audio(): temporary_folder, folder = helper.create_working_folder() temporary_folder_destination, folder_destination = helper.create_working_folder( ) origin = '%s/audio.m4a' % folder shutil.copyfile(helper.get_file('audio.m4a'), origin) helper.reset_dbs() dest_path = elodie.import_file(origin, folder_destination, False, False, False) helper.restore_dbs() shutil.rmtree(folder) shutil.rmtree(folder_destination) assert helper.path_tz_fix( os.path.join('2016-01-Jan', 'Houston', '2016-01-04_05-28-15-audio.m4a')) in dest_path, dest_path
def test_import_file_photo(): temporary_folder, folder = helper.create_working_folder() temporary_folder_destination, folder_destination = helper.create_working_folder( ) origin = '%s/plain.jpg' % folder shutil.copyfile(helper.get_file('plain.jpg'), origin) helper.reset_dbs() dest_path = elodie.import_file(origin, folder_destination, False, False, False) helper.restore_dbs() shutil.rmtree(folder) shutil.rmtree(folder_destination) assert helper.path_tz_fix( os.path.join('2015-12-Dec', 'Unknown Location', '2015-12-05_00-59-26-plain.jpg')) in dest_path, dest_path
def test_set_title_non_ascii(): temporary_folder, folder = helper.create_working_folder() origin = '%s/video.mov' % folder shutil.copyfile(helper.get_file('video.mov'), origin) video = Video(origin) origin_metadata = video.get_metadata() unicode_title = u'形声字 / 形聲字' status = video.set_title(unicode_title) assert status == True, status video_new = Video(origin) metadata = video_new.get_metadata() shutil.rmtree(folder) assert metadata['title'] == unicode_title, metadata['title']
def test_set_date_taken(): temporary_folder, folder = helper.create_working_folder() origin = '%s/photo.jpg' % folder shutil.copyfile(helper.get_file('plain.jpg'), origin) photo = Photo(origin) status = photo.set_date_taken(datetime(2013, 9, 30, 7, 6, 5)) assert status == True, status photo_new = Photo(origin) metadata = photo_new.get_metadata() date_taken = metadata['date_taken'] shutil.rmtree(folder) #assert date_taken == (2013, 9, 30, 7, 6, 5, 0, 273, 0), metadata['date_taken'] assert date_taken == helper.time_convert((2013, 9, 30, 7, 6, 5, 0, 273, 0)), metadata['date_taken']
def test_import_file_text(): temporary_folder, folder = helper.create_working_folder() temporary_folder_destination, folder_destination = helper.create_working_folder( ) origin = '%s/valid.txt' % folder shutil.copyfile(helper.get_file('valid.txt'), origin) helper.reset_dbs() dest_path = elodie.import_file(origin, folder_destination, False, False, False) helper.restore_dbs() shutil.rmtree(folder) shutil.rmtree(folder_destination) assert helper.path_tz_fix( os.path.join('2016-04-Apr', 'London', '2016-04-07_11-15-26-valid-sample-title.txt') ) in dest_path, dest_path
def test_set_title_non_ascii(): temporary_folder, folder = helper.create_working_folder() origin = '%s/photo.jpg' % folder shutil.copyfile(helper.get_file('plain.jpg'), origin) photo = Photo(origin) origin_metadata = photo.get_metadata() unicode_title = u'形声字 / 形聲字' status = photo.set_title(unicode_title) assert status == True, status photo_new = Photo(origin) metadata = photo_new.get_metadata() shutil.rmtree(folder) assert metadata['title'] == unicode_title, metadata['title']
def test_set_album(): temporary_folder, folder = helper.create_working_folder() origin = '%s/video.mov' % folder shutil.copyfile(helper.get_file('video.mov'), origin) video = Video(origin) metadata = video.get_metadata() assert metadata['album'] is None, metadata['album'] status = video.set_album('Test Album') assert status == True, status video_new = Video(origin) metadata_new = video_new.get_metadata() shutil.rmtree(folder) assert metadata_new['album'] == 'Test Album', metadata_new['album']