Как сохранять историю Skype

Мне сильно не нравится, когда собеседник удаляет в «Скайпе» свои сообщения. Бывает, что я их не успеваю прочитать, это печально. Я подумал, что было бы неплохо научиться их куда-то логировать, попробовал несколько модулей для «Пайтона», все они на «Маке» падают.

К счастью, «Скайп» хранит свою историю в SQLite, а там, как оказалось, есть триггеры. В общем, простой способ сохранять историю — создать ещё одну таблицу и триггер, который будет висеть на операции INSERT и копировать все новые сообщения в нашу таблицу:

CREATE TABLE Messages_backup (timestamp int, author text, body_xml text); -- таблица, где будут храниться сообщения

-- А вот и наш триггер, причём посмотрите, после WHEN у меня идёт условие, я сохраняю только сообщения
-- от пользователя megadestroyer, это условие можно убрать (вместе с WHEN)
-- или написать туда через OR несколько логинов  
CREATE TRIGGER Messages_insert INSERT ON Messages WHEN new.author='megadestroyer'
  BEGIN
    INSERT INTO Messages_backup VALUES(new.timestamp, new.author, new.body_xml);
  END;

Создать таблицу и тригер очень просто, база SQLite — это просто файл (вам нужен файл «main.db»), который лежит где-то у вас на диске (можно в интренете поискать, гуглится элементарно), у меня на «Маке» он лежит в папке «~/Library/Application Support/Skype/bolknote.#». Его надо открыть утилитой sqlite3 (на «Маке» она уже есть) и выполнить эти команды.

После чего, если захочется прочитать что же удалил собеседник, там же, в sqlite3, можно будет выполнять команду

select * from Messages_backup;

и видеть весь лог сообщений, включая удалённые пользователем.

30 комментариев