Example #1
0
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
Example #2
0
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
Example #3
0
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']
Example #4
0
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']
Example #5
0
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']
Example #6
0
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
Example #7
0
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
Example #8
0
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']
Example #9
0
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']
Example #10
0
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']
Example #11
0
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']
Example #12
0
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']
Example #13
0
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
Example #14
0
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'])
Example #15
0
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'])
Example #16
0
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']
Example #17
0
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'
Example #19
0
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
Example #20
0
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'
Example #21
0
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
Example #22
0
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')
Example #23
0
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
Example #24
0
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
Example #25
0
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
Example #26
0
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
Example #27
0
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
Example #28
0
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
Example #29
0
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
Example #30
0
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
Example #31
0
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
Example #32
0
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
Example #33
0
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
Example #34
0
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
Example #35
0
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
Example #36
0
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']
Example #37
0
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
Example #38
0
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
Example #39
0
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
Example #40
0
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
Example #41
0
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']
Example #42
0
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']
Example #43
0
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
Example #44
0
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
Example #45
0
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
Example #46
0
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
Example #47
0
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']
Example #48
0
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']
Example #49
0
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']
Example #50
0
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
Example #51
0
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
Example #52
0
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
Example #53
0
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']
Example #54
0
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
Example #55
0
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
Example #56
0
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']
Example #57
0
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']
Example #58
0
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
Example #59
0
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']
Example #60
0
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']