mailcap — Обработка Mailcap файла


Файлы Mailcap используются для настройки того, как программы поддерживающие MIME (например, чтения почты и веб-браузеры), реагируют на файлы с различными MIME типами. (Название «mailcap» происходит от фразы «возможности почты (mail capability)».) Например, mailcap файл может содержать строку вида video/mpeg; xmpeg %s. Затем, если пользователь сталкивается с сообщением электронной почты или веб-документом с MIME типом video/mpeg, %s будет заменен именем файла (обычно принадлежащим временному файлу), и программа xmpeg может быть автоматически запущена для просмотра файла.

Формат mailcap задокументирован в RFC 1524, «Механизм настройки пользовательского агента для информации о формате мультимедийной почты», но не является стандартом Интернета. Однако mailcap файлы поддерживаются в большинстве Unix систем.

mailcap.findmatch(caps, MIMEtype, key='view', filename='/dev/null', plist=[])

Возвращает 2-кортеж; первый элемент представляет собой строку, содержащую командную строку для выполнения (которую можно передать в os.system()), а второй элемент представляет собой запись mailcap для данного MIME типа. Если соответствующий MIME тип не найден, возвращается (None, None).

key — имя желаемого поля, представляющее тип выполняемой деятельности; значение по умолчанию — «view», т. к. в наиболее распространенном случае вам просто нужно просмотреть тело MIME-типизированных данных. Другими возможными значениями могут быть «compose» и «edit», если вы хотите создать новое тело данного MIME типа или изменить существующие данные тела. Полный список данных полей см. в RFC 1524.

filename — имя файла, которое нужно заменить на %s в командной строке; значение по умолчанию — '/dev/null', что почти наверняка не то, что вам нужно, поэтому обычно вы переопределяете его, указав имя файла.

plist может быть списком, содержащим именованные параметры; значение по умолчанию — просто пустой список. Каждая запись в списке должна быть строкой, содержащей имя параметра, знак равенства ('=') и значение параметра. Записи Mailcap могут содержать именованные параметры, такие как %{foo}, которые будут заменены значением параметра с именем «foo». Например, если командная строка showpartial %{id} %{number} %{total} находится в mailcap файле, а для plist установлено значение ['id=1', 'number=2', 'total=3'], результирующая командная строка будет 'showpartial 1 2 3'.

В файле mailcap опциональное поле «test» может указывать на проверки некоторых внешних условий (например, архитектура машины или используемая оконная система), чтобы определить, применима ли mailcap строка. findmatch() автоматически проверит такие условия и пропустит запись, если проверка не пройдена.

mailcap.getcaps()

Возвращает словарь, отображающий MIME типы в список записей mailcap файла. Данный словарь необходимо передать функции findmatch(). Запись хранится в виде списка словарей, но нет необходимости знать детали этого представления.

Информация получена из всех mailcap файлов, найденных в системе. Параметры в файле почтового ящика пользователя $HOME/.mailcap переопределяют параметры в системных файлах почтового ящика /etc/mailcap, /usr/etc/mailcap и /usr/local/etc/mailcap.

Пример использования:

>>> import mailcap
>>> d = mailcap.getcaps()
>>> mailcap.findmatch(d, 'video/mpeg', filename='tmp1223')
('xmpeg tmp1223', {'view': 'xmpeg %s'})