mirror of https://github.com/papermerge/mglib
47 lines
1.0 KiB
Python
47 lines
1.0 KiB
Python
import logging
|
|
from . import wrapper
|
|
|
|
from .conf import settings
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
class Mime(wrapper.Wrapper):
|
|
def __init__(self, filepath):
|
|
super().__init__(exec_name=settings.BINARY_FILE)
|
|
self.filepath = filepath
|
|
|
|
def get_cmd(self):
|
|
cmd = super().get_cmd()
|
|
|
|
cmd.extend(['--mime-type'])
|
|
cmd.extend(['-b'])
|
|
cmd.extend([self.filepath])
|
|
|
|
return cmd
|
|
|
|
def is_tiff(self):
|
|
return self.guess() == 'image/tiff'
|
|
|
|
def is_pdf(self):
|
|
return self.guess() == 'application/pdf'
|
|
|
|
def is_image(self):
|
|
"""
|
|
Returns true if MIME type is one of following:
|
|
* image/png
|
|
* image/jpg
|
|
"""
|
|
return self.guess() in ('image/png', 'image/jpg', 'image/jpeg')
|
|
|
|
def guess(self):
|
|
cmd = self.get_cmd()
|
|
complete = self.run(cmd)
|
|
|
|
return complete.stdout.strip()
|
|
|
|
def __str__(self):
|
|
|
|
mime_type = self.guess()
|
|
return f"Mime({self.filepath}, {mime_type})"
|