Hello! We are running our annual fundraising. Please consider making a donation if you value this freely available service or want to support people around the world working towards liberatory social change. https://riseup.net/donate.

Commit f5aef1b3 authored by jvoisin's avatar jvoisin
Browse files

Improve the reliability of Exiftool-base parsers

parent 2e3496d3
Pipeline #31821 passed with stages
in 2 minutes and 8 seconds
...@@ -20,13 +20,18 @@ class ExiftoolParser(abstract.AbstractParser): ...@@ -20,13 +20,18 @@ class ExiftoolParser(abstract.AbstractParser):
meta_allowlist = set() # type: Set[str] meta_allowlist = set() # type: Set[str]
def get_meta(self) -> Dict[str, Union[str, dict]]: def get_meta(self) -> Dict[str, Union[str, dict]]:
try:
if self.sandbox: if self.sandbox:
out = bubblewrap.run([_get_exiftool_path(), '-json', self.filename], out = bubblewrap.run([_get_exiftool_path(), '-json',
self.filename],
input_filename=self.filename, input_filename=self.filename,
check=True, stdout=subprocess.PIPE).stdout check=True, stdout=subprocess.PIPE).stdout
else: else:
out = subprocess.run([_get_exiftool_path(), '-json', self.filename], out = subprocess.run([_get_exiftool_path(), '-json',
self.filename],
check=True, stdout=subprocess.PIPE).stdout check=True, stdout=subprocess.PIPE).stdout
except subprocess.CalledProcessError: # pragma: no cover
raise ValueError
meta = json.loads(out.decode('utf-8'))[0] meta = json.loads(out.decode('utf-8'))[0]
for key in self.meta_allowlist: for key in self.meta_allowlist:
meta.pop(key, None) meta.pop(key, None)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment