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'})