Показаны сообщения с ярлыком email. Показать все сообщения
Показаны сообщения с ярлыком email. Показать все сообщения

20080218

Кросспост RSS в ЖЖ (bash-скрипт)

Обновление: Более совершенный скрипт для кросспоста был написан мной на Haskell. Подробности здесь.


Захотелось мне наладить автоматическую публикацию ссылок на мои записи в ЖЖ…

Сразу же нашёл сервис rss2lj. Он, однако, в настоящий момент не работает. После этого стал искать, как сделать то же самое своими силами.

Нашёл, что есть два механизма автоматической публикации в ЖЖ. Первый — с использованием XMLRPC. Как это делается на PHP желющие могут увидеть в исходниках плагина к вордпресс lj_crosspost. Второй способ — использовать возможность emailpost в ЖЖ. В этом случае письма, отправленные на адрес вида пользователь@post.livejournal.com будут публиковаться как посты.

Я выбрал второй вариант, потому что письма можно слать из любого скрипта одной командой, а возиться с авторизацией через XMLRPC не хотелось. Правда, функция emailpost в ЖЖ не бесплатна, платить за неё надо либо чистым золотом, либо рекламой. Остановился на рекламе, включив в ЖЖ «улучшенный рекламой эккаунт» :)

После этого оставалось написать скрипт, который бы брал RSS и делал из него много писем. В действительности, такой скрипт уже есть. Можете взглянуть на rss2email, лежащий в репозиториях Debian. Впрочем, он скорее предназначен для чтения RSS через email, а я хотел лишь вытаскивать из RSS ссылки.

Вытащить нужные поля из RSS можно и xmlstarlet-ом:
curl -g http://feeds.feedburner.com/sovety?alt=rss -s | \
xmlstarlet sel -t -m "/rss/channel/item" \
-v "guid" -n -v "pubDate" -n \
-v "title" -n -v "link" -n
Оставалось только атоматически формировать из этих полей текст письма (awk-ом), отсылать всё это в ЖЖ (mutt-ом) и отмечать на память уже отосланные записи (чтобы не слать повторно). Получился вот такой скрипт.

Теперь анонсы моих постов можно прочитать и в ЖЖ: jetxee.livejournal.com.

Что не работает: ЖЖ приходит в ступор, получая письма, в Subject которых UTF-8. По идее Subject должен становиться заголовком поста, но выходит ерунда. ЖЖ должен особым образом обрабатывать в письме строки вида lj-tags: blabla, давая записям тэги, но у меня это тоже почему-то не срабатывает.

20080109

Просмотр вложений *.doc в виде простого текста

Не знаю кому как, а мне приходится получать пустые письма, к которым приложен файл DOC, PDF или, чего доброго, PPT, с двумя абзацами текста. Запускать OpenOffice всякий раз только для того, чтобы взглянуть про что письмо или скопипастить оттуда два слова — долго и неудобно.

Пользуюсь я почтовиком Claws Mail. К нему прилагается скриптик textviewer.pl, готовый работать универсальным просмотрщиком (точнее вызывать подходящий конвертер что-нибудь—в—просто-текст и показывать содержимое файла в стандартный вывод). Так, файлы Word он обрабатывает antiword-ом, файлы RTF — unrtf-ом, файлы PowerPoint — ppthtml (не всегда удачно), PDF — pdftotext, OpenOffice — ooo2txt (а вот этого у меня нет). Получается быстро и удобно.

Соответственно в настройках Claws Mail в качестве универсального просмотрщика нужно указать textviewer.pl -v '%s'.

Однако я думаю, такой скриптик может быть полезен и пользователям других почтовых клиентов. В Debian его можно найти внутри пакета claws-mail-tools или взять прямо из CVS репозитория. Сами конвертеры «хитрый формат в plain text» в Debian находятся в пакетах antiword, unrtf, ppthtml, xpdf-utils.

Дополнение: Вначале обрадовался. Узнал, что в Debian просматривать файлы OpenOffice.org без установки можно с помощью o3read (o3read, o3totxt). Потом огорчился. Ни один из моих файлов *.odt прочитать с помощью o3read не вышло.

20070629

Как перенести адресную книгу GMail (Outlook CSV) в Claws Mail (Sylpheed)

Разбирать, читать и хранить почту мне нравится в почтовой прораммке Claws Mail («Челюсти», ранее известной как Sylpheed Claws). Там у меня собирается почта и с личных ящиков, и с рабочих, и nntp-конференции на GMANE... Всё удобно, архив почты всегда под рукой, даже в оффлайн... Однако личную почту иногда я читаю и через веб-интерфейс GMail.

Недавно же заметил, что часть адресов, которые имеются у меня в адресной книге GMail, отсутствуют в адресной книге почтового клиента, и иногда это бывает неудобно. Вот я и задумал, адресную книгу GMail перенести себе в Claws Mail. Далее я опишу, как это сделал.

Итак, GMail может экспортировать адресную книгу в двух вариантах:
  • CSV для переноса в другую учётную запись GMail
  • и CSV формата Microsoft Outlook


Я выбрал последний. Получил файл, в котором адреса хранятся примерно так:
Имя Фамилия,email@address,,,,,,
по одному на строчку, в кодировке CP1251.

При этом Claws может импортировать адресные книги в следующих форматах:
  • LDIF
  • Адресная книга mutt
  • Адресная книга pine


Всё. Писать конвертер CSV2LDIF мне было лень. Методом тыка установил, что под адресной книгой mutt подразумевается файл .muttrc, в котором есть записи вида:
alias shortname email@address (Имя Фамилия)

Ну вот, собственно, и всё, сохранённый gmail.csv переводится в такой формат следующей командой:
$ cat gmail.csv | konwert cp1251-utf8 | sed '1d' | awk 'FS="," { print "alias",$2,$2,"("$1")" ; }' | sed 's/@[^ @]//' > gmail.mutt

Здесь я конвертировал (konwert cp1251-utf8) файл из кодировки CP1251 в UTF8, поскольку пользуюсь везде ru_RU.UTF-8. Это можно было сделать также с помощью iconv -f CP1251 -t UTF8. команда sed '1d' отрезала первую строчку с названиями полей, awk обработал разделённые запятыми поля и напечатал их в нужном порядке, e-mail дважды, а последний вызов sed сделал муттовские псевдонимы вида userxxx из e-mail аресов вида userxxx@server.

Всё, полученный файл gmail.mutt нормально импортируется в Claws Mail.

Единственное замечание: были повреждены все акценты над латинскими буквами, поскольку в однобайтной кодировке CP1251 они не представимы... На моё счастье, таких имён в моей адресной книге оказалось немного. Ну и разные комментарии к адресам я тоже проигнорировал ;)

Дополнение: нашёл набор скриптов для конвертации почтовых архивов и адресных книг в формат Claws, claws mail tools, который также доступен в виде отдельного пакета claws-mail-tools в Debian.