Экспорт база данных GMail Offline

0
67

Не секрет, что GMail сейчас де-факто стал одним из почтовых стандартов, благодаря уйме удобностей. Это фактически входные двери в мир для мииллионов людей. Я тоже являюсь пользователем GMail именно этот сервис я запускаю первым делом при включении компьютера. Хотя, многие первым делом читают анекдоты о любви, таким образом поднимая себе настроение на весь день. Но вернемся к вочте. Вот какую занимательную статью я нашел на Хабре (http://habrahabr.ru/blogs/GMail/80288/). Весьма полезно!
Давно хотел вытащить историю джаббера из GMail (в принципе достаточно удобно, но хочется без дополнительных преград пользоваться)
Когда на глаза попался топик Скачиваем историю сообщений из GTalk’a себе на компьютер, я, было, возрадовался, но, узрев громоздкость и усилия, прилагаемые для извлечения, решил что игра не стоит свеч.Поэтому решил пойти другим путем, и разобраться в Google Gears \ GMail Offline.
Подготовка

Первым делом, нам надо Поставить Gears

Залогиниваемся в GMail, идём в чаты и помечаем ярлыком (например export) нужные чат-сессии.
Далее, идём в Настройки Gmail Offline, выбираем Включить Gmail Офлайн для этого компьютера, жмём по ссылке Изменить настройки ярлыка и ставим Все напротив ярлыка export (все остальные можно выставить в Нет, чтобы не качать лишнего.
Дальше остаётся Сохранить изменения и подождать пока Gears синхронизирует нужные цепочки с локалхостом.

База

Пройдясь по директориям Firefox, я нашёл хранилище Google Gears.

Cуть такова, что письма и чаты лежат в файле
%username%@%servername%-GoogleMail@%servername%#database
где %servername% — обычно gmail.com, но для сервисов гугл для домена — будет вашим доменом соответственно.

Заметьте: файл может называться и …#database[1] и [2] или вообще без [цифры], так что если чатов нет в одном файле, то надо будет попробовать со всеми (кроме тех, в чьем имени есть -b, -t, -u, это какая-то служебная информация, нас она не интересует)

Сам файл базы данных находится в %GearsDatabaseDir%/mail.google.com/http_80
где _80 может быть также и _443, если используется SSL, а %GearsDatabaseDir% для вашей платформы можно узнать здесь

Как оказалось, база лежит в формате SQLite. Дальше — проще. sqlite3, скаченый с офсайта помогает нам добраться до самой сути GMail Offline.

Выдёргиваем

Для начала проверим, есть ли там сообщения для нужного нам ярлыка:
sqlite3 -line «user@gmail.com-GoogleMail@gmail.com#database» «SELECT l.`Label` as `label`,COUNT(*) as messages FROM `Labels` l, Messages m, MessageLabels ml WHERE ml.`LabelId`=l.`LabelId` AND m.`rowid`=ml.`MessageId` AND l.`Label`=’export'»

Получаем:
label = export
messages = 662

Итак, сообщения есть, можно начинать экспортировать.

Создадим заголовок () и «подвал» () будущего HTML файла чатов, и запустим:
sqlite3 -list -separator ‘\n\n’ «user@gmail.com-GoogleMail@gmail.com#database» «SELECT »|| datetime(m.`datems`/1000,’unixepoch’,’+3 hours’) || » || c.`c1Body` || ‘

‘ FROM MessagesFT_content c, Messages m, MessageLabels ml, Labels l WHERE ml.`LabelId`=l.`labelId` AND c.`rowid`=ml.`MessageId` AND m.`MessageId`=c.`rowid` AND l.`Label`=’export’ ORDER BY m.`datems` ASC» > body.html

(+3 hours заменить на ваш часовой пояс)

А теперь осталось только «слить» файлы в один.
Под Windows:
copy /B header.tpl + body.html + footer.tpl history_export.html

(если не ставить /B то под winxp остаётся в конце какой то стрёмный символ. сopy его зачем-то ставит)

Bash:
cat header.tpl >> history_export.html
cat body.html>> history_export.html
cat footer.tpl >> history_export.html

Вот вкратце и всё. Можно ещё воспользоваться html2text, что, учитывая объем оформления (CSS не было использовано!) — по меньшей мере рационально.

НЕТ КОММЕНТАРИЕВ

ОСТАВЬТЕ ОТВЕТ