def test_only_write_tags_once(self): labeler = FileLabeler() info = IPTCInfo(self.jpg_file, force=True) info.keywords = ('cat', 'mammal') info.save() os.remove('%s~' % self.jpg_file) labeler.label(self.jpg_file, (u'cat', u'mammal')) info = IPTCInfo(self.jpg_file) self.assertEqual(info.keywords, ['cat', 'mammal'])
def test_preserve_existing_labels(self): labeler = FileLabeler() info = IPTCInfo(self.jpg_file, force=True) info.keywords = ('cat', 'mammal') info.save() os.remove('%s~' % self.jpg_file) labeler.label(self.jpg_file, (u'dog', u'mammal')) info = IPTCInfo(self.jpg_file) self.assertEqual(info.keywords, ['cat', 'mammal', 'dog'])
def main(options): if options.verbose > 1: _checked_load_logging_config("~/.python/logging_debug.conf") elif options.verbose: _checked_load_logging_config("~/.python/logging.conf") logging.basicConfig(stream=sys.stdout, level=logging.INFO) file_walker = FileWalker(FileLabeler(), LabelServiceExecutor(GoogleServiceConnector())) file_walker.walk_and_tag(args.root_directory)
def test_log_error_when_image_to_big_fails(self): connector = TestServiceConnector() connector.build_request = MagicMock(side_effect=(create_exception(), connector.build_request(None))) service_executor = LabelServiceExecutor(connector) file_walker = FileWalker(FileLabeler(), service_executor) os.makedirs('_testdir/2016/10') self._create_testfile('_testdir/2016/10/test1.jpg') file_walker._log = MagicMock() file_walker.walk_and_tag('_testdir/2016') file_walker._log.error.assert_called_once_with( 'image [_testdir/2016/10/test1.jpg] is too big, skipping')
def test_skip_already_tagged_files(self): file_walker = FileWalker(FileLabeler(), LabelServiceExecutor(TestServiceConnector())) os.makedirs('_testdir/2016/10') self._create_testfile('_testdir/2016/10/test1.jpg') os.makedirs('_testdir/2016/11') self._create_testfile('_testdir/2016/11/test2.jpg') info = IPTCInfo('_testdir/2016/11/test2.jpg', force=True) info.keywords = ('already', 'tagged') info.data[TAGGED_PHOTO_KEY] = TAGGED_PHOTO_LABEL info.save() file_walker.walk_and_tag('_testdir/2016') self.assertEqual(IPTCInfo('_testdir/2016/10/test1.jpg').keywords, ['cat', 'mammal', 'vertebrate', 'whiskers', 'animal']) self.assertEqual(IPTCInfo('_testdir/2016/11/test2.jpg').keywords, ['already', 'tagged'])
def test_walk_files_and_tag_only_in_subdirectory(self): file_walker = FileWalker(FileLabeler(), LabelServiceExecutor(TestServiceConnector())) os.makedirs('_testdir/2016/10') self._create_testfile('_testdir/2016/10/test1.jpg') os.makedirs('_testdir/2016/11') self._create_testfile('_testdir/2016/11/test2.jpg') os.makedirs('_testdir/2015/10') self._create_testfile('_testdir/2015/10/test3.jpg') file_walker.walk_and_tag('_testdir/2016') self.assertEqual(IPTCInfo('_testdir/2016/10/test1.jpg').keywords, ['cat', 'mammal', 'vertebrate', 'whiskers', 'animal']) self.assertEqual(IPTCInfo('_testdir/2016/11/test2.jpg').keywords, ['cat', 'mammal', 'vertebrate', 'whiskers', 'animal']) # file in 2015 has no tag set self.assertRaisesRegexp(Exception, 'No IPTC data found', IPTCInfo, '_testdir/2015/10/test3.jpg')
def test_skip_special_directories(self): file_walker = FileWalker(FileLabeler(), LabelServiceExecutor(TestServiceConnector())) os.makedirs('_testdir/2016/10') self._create_testfile('_testdir/2016/10/test1.jpg') os.makedirs('_testdir/2016/10/@eaDir') self._create_testfile('_testdir/2016/10/@eaDir/test1.jpg') os.makedirs('_testdir/2016/10/2006-07-21 12.45.16.jpg/') self._create_testfile('_testdir/2016/10/2006-07-21 12.45.16.jpg/SYNOPHOTO_THUMB_XL.jpg') file_walker.walk_and_tag('_testdir/2016') self.assertEqual(IPTCInfo('_testdir/2016/10/test1.jpg').keywords, ['cat', 'mammal', 'vertebrate', 'whiskers', 'animal']) self.assertRaisesRegexp(Exception, 'No IPTC data found.', IPTCInfo, '_testdir/2016/10/@eaDir/test1.jpg') self.assertRaisesRegexp(Exception, 'No IPTC data found.', IPTCInfo, '_testdir/2016/10/2006-07-21 12.45.16.jpg/SYNOPHOTO_THUMB_XL.jpg')
def test_label_image(self): labeler = FileLabeler() labeler.label(self.jpg_file, (u'cat', u'mammal')) info = IPTCInfo(self.jpg_file) self.assertEqual(info.keywords, ['cat', 'mammal'])
def test_do_not_tag_already_tagged_image(self): labeler = FileLabeler() labeler.label(self.jpg_file, (u'dog', u'mammal')) self.assertRaisesRegexp(AlreadyLabeledException, '_testdir/testfile.jpg', labeler.label, self.jpg_file, (u'dog', u'mammal'))
def test_mark_already_tagged_image(self): labeler = FileLabeler() labeler.label(self.jpg_file, (u'dog', u'mammal')) info = IPTCInfo(self.jpg_file) self.assertEqual(TAGGED_PHOTO_LABEL, info.data[TAGGED_PHOTO_KEY])