示例#1
0
 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'])
示例#2
0
 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'])
示例#3
0
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)
示例#4
0
    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')
示例#5
0
 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'])
示例#6
0
 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')
示例#7
0
    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')
示例#8
0
 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'])
示例#9
0
 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'))
示例#10
0
 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])