Как извлечь историю переписки в Skype

Ноябрь9

Skype1

На днях возникла необходимость найти в истории переписки с одним человеком некоторые ссылки, которые он мне присылал и потом вспомнить, кому из моих контактов я их пересылал. Учитывая, что это было довольно давно, вспомнить подробности довольно проблематично)
Встал вопрос, как решить данную проблему? Перебирать все истории переписок руками в клиенте скайпа — огромный труд и куча потерянного времени. К тому, же встроенный просмотр истории иногда глючит и отказывается искать текст стандартными средствами Crt+F.


Решил распарсить историю сообщений для удобства индексации и поиска.
Я делал это под Ubuntu.

Сначала смотрим, где хранится история сообщений Skype и заходим в этот каталог:

cd ~/home/feanor184/.Skype/skype_login/

копируем шифрованный файл main.db в любую папку для дальнейшей работы

cp main.db ~/testbase_skype/

переходим в эту папку

cd $_

Дальше можем работать с этим файлом. Если его до этого не скопировать — то придется закрывать службу скайпа, т.к. она не даст с ним работать. К тому же, если работать с оригиналом — есть шанс его испортить каким-то случайным неправильным вводом команд. Поэтому будем работать с копией.

Дальше проверяем, чтобы у нас был установлен sqlite3, если нет — ставим.

sudo apt-get install sqlite3

Далее выгружаем дамп в читабельный sql формат.

sqlite3 main.db .dump >> mySkypeDump.sql

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

Обрезаем лишнюю системную информацию

Обрезаем все лишние поля — кроме сообщений

cat mySkypeDump.sql | grep 'INSERT INTO "Messages" VALUES' > history_1

cat history_1 | sed -e 's/,NULL,*//g' | sed -e 's/INSERT INTO "Messages" VALUES*//g' > history_2

После проделанных операций в файле history_2 остаются нужные нам строки примерно в следующем виде(привожу для наглядности 3 строки сообщений):

INSERT INTO "TEST-skype" VALUES(140,1,263,'#user1/$user2;1633cb6c61f369e6','user1','user1'X'6512864C7028DCB17F5DDEA3663CE51082BF461A5EEA2E5C1024D47F82172914'1439749518,61,2,0NULLNULL,'текст тестового сообщения 1)'NULLNULL3,4,1NULLNULL,3304554754,831352659);

INSERT INTO "TEST-skype" VALUES(141,1,263,'#user1/$user2;1633cb6c61f369e6','user2','user2'X'6233268E7FEFB4773EE63E79E5FAD5C2290C069273C8B60AA734C2435CF7F542'1436589536,610NULLNULL,'текст тестового сообщения 2'NULLNULL3,4,1NULLNULL,585002415,153024551);

INSERT INTO "TEST-skype" VALUES(142,1,263,'#user1/$user2;1633cb6c61f369e6','user2','user2'X'81CADA68E5FF5BF22A5CDD01E33C061BDB7B68B7BF16D2C7602AAF17D2ABB922'1439885579,610NULLNULL,'текст тестового сообщения 3'NULLNULL3,4,1NULLNULL,1544456789,153634552);

Стало более читабельно но по прежнему есть много постороннего мусора. Чистим дальше.

Создаем скрипт на Perl

touch perl2.pl

Делаем его исполняемым

chmod +x perl2.pl

сам скрипт:

#!/usr/bin/perl
while (<>) {
print "($1/$2):$4 '$5'\n" if (/#(\w+)\/\$(\w+);[^']+','(\w+)','(\w+).+NULLNULL,'(.+)'NULLNULL/g)
}

Далее прогоняем наш получившийся файл истории через этот скрипт

cat history_2 | ./perl2.pl > Final_skype_history

На выходе получаем отличный читабельный вид, который уже даже разбит по участникам диалога(те же самые 3 строчки):

(user1/user2):user1 'текст тестового сообщения 1'
(user1/user2):user2 'текст тестового сообщения 2'
(user1/user2):user2 'текст тестового сообщения 3'

Поделиться в соц. сетях


Copyright © 2013-2016. All rights reserved.

Опубликованно Ноябрь 9, 2015 by Feanor184 в категории Linux, Скрипты

31 комментарий(ев) к записи “Как извлечь историю переписки в Skype

  1. Deuros

    Спасибо Вам большое, автор. Хотел почитать всю старую переписку в скайпе, и вот нашел действенный способ у Вас. Сохраню Ваш сайт в закладки, очень интересно)

  2. Петр

    Спасибо огромное за статью, так давно не мог решить проблему с тем как удалить историю переписки, а это для меня очень важно.Буду пробовать.

  3. ivan

    Тоже была такая же задача, решал подобным образом, спасибо что поделились с народом данным мануалом

  4. Андрей

    Всмысле заходим в папку в которую скайп пишет историю ? А если у меня ее нету ? То где искать ?

    1. Feanor184 Автор поста

      Папка эта у вас есть — если вы пользуетесь скайпом) Только находиться она может немного в другом месте — в зависимости от системы, с которой сидите)

  5. Сергей

    Блииин, спасибо, выручили! Очень надо было скопировать переписку с одним заказчиком! Вы спасли! :)

  6. Владимир

    Была необходимость достать в переписке ссылку на нужный мне сайт.
    Как и у автора статьи мне скинули её давно. И я не смог найти необходимую мне информацию. В с вязи с этим я расстроился о том что в своё время её не сохранил на компютере. Но сей час есть шанс найти и во становить её. Это прекрасно!!! Спасибо автору.

  7. webwed

    Я даже не догадывалась о том что скайп пишет историю переписки.Попробовала проделать все вышеперечисленное но так и не получилось извлечь историю переписки Skype/skype_login. Может она по другому называется у меня есть папк Skype/Phone может она?

    1. Feanor184 Автор поста

      webwed, на какой системе делаете? Возможно у вас путь пользователя другой просто)

  8. Наталия

    Хотела проделать все по пунктам, но запуталась, не могу найти весь путь, такого файла у меня нету, скайп стоит на компьютере виндовс, в какой папке может быть история еще?

    1. Feanor184 Автор поста

      Наталья, на windows попробуйте посмотреть тут:
      C:\Users\< имя_пользователя_windows_8>\AppData\Local\Packages
      \Microsoft.SkypeApp\Localstate\< логин_skype>

  9. Serghey

    А есть ли какой то способ удалять историю переписки? только не всю а от определенных пользхователей

    1. Feanor184 Автор поста

      Данный вопрос не исследовал) Но есть предположение, что если удалить из локальной бд всю историю переписки с человеком, то после синхронизации она удалится и с серверной копии) Надо проверять, если действительно интересно — маякните, потестирую и напишу статью)

  10. Serghey

    День добрый, да действительно интересно, правда больше интересно под виндоус чем линукс :) но в принципе без разницы

  11. stin

    Спасибо большое. Очень ценная информация. Бывает нужна сарая переписка чтобы вспомнить, а когда переустановил винду, она пропадает. И вот он метод решить эту проблему. Еще раз спасибо вам.

  12. Оксана

    Спасибо большое за статью!У меня вечная проблема с перепиской в скайпе. Большинство моих клиентов пишут сообщения именно туда. Моя проблема решена, все переписки можно восстановить. Все работает!

  13. MindRepublic

    Спасибо автору, теперь моя переписка в скайп спасена. Добавлю в закладки, вдруг еще пригодится, а алгоритм не простой. Не запомнишь))

  14. Разработчик КМД

    Хорошая статья. Давно столкнулся с проблемой извлечения переписки! Спасибо большое)))

  15. вероника

    Отличная статья. Никогда и подумать не могла , что в скайпе есть история переписки которую можно сохранить. Теперь буду знать, а вдруг пригодиться.

  16. Serghey

    День добрый, ну так вы попробовали протестировать можно ли удалять переписку от отдельного человека а не всю сразу? желательно и под винду

    1. Feanor184 Автор поста

      Serghey, нет — не тестировал) Да и удалять таким образом переписку получится лишь локально)

  17. Михаил

    Спасибо за информацию, нечасто, но бывает жизненно важно :)
    Если даже удалить локальную переписку, то по выходу второго участника беседы в онлайн, вам ее перешлет заново, думается.

  18. Илья

    Сколько всего я еще не знаю) Теперь реально будет проще сохранять переписки, мне часто приходится это делать, т.к. работаю с заказчиками в основном через скайп. Спасибо)

  19. Илья

    Хорошая инфа!

    Кто может сказать точную информацию по скайпу?! а именно сколько храниться история на сервере? ибо я слышал, что сообщения вообще не хранятся на сервере. Но я заходил на другой аккаунт который не разу не отрывался на моем ПК, и там были последние сообщения в переписках.

    1. Feanor184 Автор поста

      Илья, насколько я знаю, точной информации по этому вопросу нет. Зависит от версии скайпа и архитектуры системы. Под убунтой у меня локальная история отматывается до года, при проставленной галочке — ‘хранить историю всегда’. А под винловыми машинами на том же аккаунте — мотается и на 3 года на старых версиях. На новых не тестил, но там говорят урезали это.

  20. Uni-t

    автор маолодец :) только что по предыдущей статье установил скайп, а тут еще один повод поэксперементировать (поучиться). Правда, практической пользы для меня нет, но вдруг пригодится

Оставьте комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

=

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