summaryrefslogtreecommitdiff
path: root/libmat2/exiftool.py
diff options
context:
space:
mode:
Diffstat (limited to 'libmat2/exiftool.py')
-rw-r--r--libmat2/exiftool.py22
1 files changed, 15 insertions, 7 deletions
diff --git a/libmat2/exiftool.py b/libmat2/exiftool.py
index 024f490..89081e2 100644
--- a/libmat2/exiftool.py
+++ b/libmat2/exiftool.py
@@ -2,10 +2,11 @@ import functools
2import json 2import json
3import logging 3import logging
4import os 4import os
5import subprocess
5from typing import Dict, Union, Set 6from typing import Dict, Union, Set
6 7
7from . import abstract 8from . import abstract
8from . import subprocess 9from . import bubblewrap
9 10
10# Make pyflakes happy 11# Make pyflakes happy
11assert Set 12assert Set
@@ -19,9 +20,13 @@ class ExiftoolParser(abstract.AbstractParser):
19 meta_allowlist = set() # type: Set[str] 20 meta_allowlist = set() # type: Set[str]
20 21
21 def get_meta(self) -> Dict[str, Union[str, dict]]: 22 def get_meta(self) -> Dict[str, Union[str, dict]]:
22 out = subprocess.run([_get_exiftool_path(), '-json', self.filename], 23 if self.sandbox:
23 input_filename=self.filename, 24 out = bubblewrap.run([_get_exiftool_path(), '-json', self.filename],
24 check=True, stdout=subprocess.PIPE).stdout 25 input_filename=self.filename,
26 check=True, stdout=subprocess.PIPE).stdout
27 else:
28 out = subprocess.run([_get_exiftool_path(), '-json', self.filename],
29 check=True, stdout=subprocess.PIPE).stdout
25 meta = json.loads(out.decode('utf-8'))[0] 30 meta = json.loads(out.decode('utf-8'))[0]
26 for key in self.meta_allowlist: 31 for key in self.meta_allowlist:
27 meta.pop(key, None) 32 meta.pop(key, None)
@@ -48,9 +53,12 @@ class ExiftoolParser(abstract.AbstractParser):
48 '-o', self.output_filename, 53 '-o', self.output_filename,
49 self.filename] 54 self.filename]
50 try: 55 try:
51 subprocess.run(cmd, check=True, 56 if self.sandbox:
52 input_filename=self.filename, 57 bubblewrap.run(cmd, check=True,
53 output_filename=self.output_filename) 58 input_filename=self.filename,
59 output_filename=self.output_filename)
60 else:
61 subprocess.run(cmd, check=True)
54 except subprocess.CalledProcessError as e: # pragma: no cover 62 except subprocess.CalledProcessError as e: # pragma: no cover
55 logging.error("Something went wrong during the processing of %s: %s", self.filename, e) 63 logging.error("Something went wrong during the processing of %s: %s", self.filename, e)
56 return False 64 return False