diff --git a/readme.md b/readme.md index 73dddd8..d6a0829 100644 --- a/readme.md +++ b/readme.md @@ -186,11 +186,13 @@ KEEP_MEDIA = 7 FILE_PICKER_CMD = "ranger --choosefile={file_path}" # FILE_PICKER_CMD = "nnn -p {file_path}" + +MAILCAP_FILE = os.path.expanduser("~/.config/mailcap") ``` ### Mailcap file -Mailcap file is used for deciding how to open telegram files (docs, pics, voice notes, etc.). +Mailcap file is used for deciding how to open telegram files (docs, pics, voice notes, etc.). Path to the file can be overriden with `MAILCAP_FILE` in config file. Example: `~/.mailcap` diff --git a/tg/config.py b/tg/config.py index c6b783b..c9ed8c9 100644 --- a/tg/config.py +++ b/tg/config.py @@ -15,6 +15,7 @@ _linux = "Linux" CONFIG_DIR = os.path.expanduser("~/.config/tg/") CONFIG_FILE = os.path.join(CONFIG_DIR, "conf.py") FILES_DIR = os.path.expanduser("~/.cache/tg/") +MAILCAP_FILE = None LOG_LEVEL = "INFO" LOG_PATH = os.path.expanduser("~/.local/share/tg/") diff --git a/tg/utils.py b/tg/utils.py index 5995714..e8df9f2 100644 --- a/tg/utils.py +++ b/tg/utils.py @@ -72,12 +72,19 @@ def get_mime(file_path: str) -> str: return mtype.split("/")[0] +def get_mailcap(): + if config.MAILCAP_FILE: + with open(config.MAILCAP_FILE) as f: + return mailcap.readmailcapfile(f) + return mailcap.getcaps() + + def get_file_handler(file_path: str) -> str: mtype, _ = mimetypes.guess_type(file_path) if not mtype: return config.DEFAULT_OPEN.format(file_path=shlex.quote(file_path)) - caps = mailcap.getcaps() + caps = get_mailcap() handler, view = mailcap.findmatch(caps, mtype, filename=file_path) if not handler: return config.DEFAULT_OPEN.format(file_path=shlex.quote(file_path))