summaryrefslogtreecommitdiff
path: root/libmat2
diff options
context:
space:
mode:
Diffstat (limited to 'libmat2')
-rw-r--r--libmat2/__init__.py21
-rw-r--r--libmat2/images.py4
2 files changed, 18 insertions, 7 deletions
diff --git a/libmat2/__init__.py b/libmat2/__init__.py
index 6072b42..6067861 100644
--- a/libmat2/__init__.py
+++ b/libmat2/__init__.py
@@ -3,7 +3,7 @@
3import os 3import os
4import collections 4import collections
5import importlib 5import importlib
6from typing import Dict 6from typing import Dict, Optional
7 7
8# make pyflakes happy 8# make pyflakes happy
9assert Dict 9assert Dict
@@ -35,13 +35,24 @@ DEPENDENCIES = {
35 'mutagen': 'Mutagen', 35 'mutagen': 'Mutagen',
36 } 36 }
37 37
38def _get_exiftool_path() -> Optional[str]:
39 exiftool_path = '/usr/bin/exiftool'
40 if os.path.isfile(exiftool_path):
41 if os.access(exiftool_path, os.X_OK): # pragma: no cover
42 return exiftool_path
43
44 # ArchLinux
45 exiftool_path = '/usr/bin/vendor_perl/exiftool'
46 if os.path.isfile(exiftool_path):
47 if os.access(exiftool_path, os.X_OK): # pragma: no cover
48 return exiftool_path
49
50 return None
51
38def check_dependencies() -> dict: 52def check_dependencies() -> dict:
39 ret = collections.defaultdict(bool) # type: Dict[str, bool] 53 ret = collections.defaultdict(bool) # type: Dict[str, bool]
40 54
41 exiftool = '/usr/bin/exiftool' 55 ret['Exiftool'] = True if _get_exiftool_path() else False
42 ret['Exiftool'] = False
43 if os.path.isfile(exiftool) and os.access(exiftool, os.X_OK): # pragma: no cover
44 ret['Exiftool'] = True
45 56
46 for key, value in DEPENDENCIES.items(): 57 for key, value in DEPENDENCIES.items():
47 ret[value] = True 58 ret[value] = True
diff --git a/libmat2/images.py b/libmat2/images.py
index faa93a4..837f015 100644
--- a/libmat2/images.py
+++ b/libmat2/images.py
@@ -13,7 +13,7 @@ import gi
13gi.require_version('GdkPixbuf', '2.0') 13gi.require_version('GdkPixbuf', '2.0')
14from gi.repository import GdkPixbuf 14from gi.repository import GdkPixbuf
15 15
16from . import abstract 16from . import abstract, _get_exiftool_path
17 17
18# Make pyflakes happy 18# Make pyflakes happy
19assert Set 19assert Set
@@ -40,7 +40,7 @@ class _ImageParser(abstract.AbstractParser):
40 self.filename to prevent parameter injections, so we need to take care 40 self.filename to prevent parameter injections, so we need to take care
41 of this. 41 of this.
42 """ 42 """
43 fun = lambda f: subprocess.check_output(['/usr/bin/exiftool', '-json', f]) 43 fun = lambda f: subprocess.check_output([_get_exiftool_path(), '-json', f])
44 if re.search('^[a-z0-9/]', self.filename) is None: 44 if re.search('^[a-z0-9/]', self.filename) is None:
45 out = self.__handle_problematic_filename(self.filename, fun) 45 out = self.__handle_problematic_filename(self.filename, fun)
46 else: 46 else: