Как извлечь историю переписки в Skype
На днях возникла необходимость найти в истории переписки с одним человеком некоторые ссылки, которые он мне присылал и потом вспомнить, кому из моих контактов я их пересылал. Учитывая, что это было довольно давно, вспомнить подробности довольно проблематично)
Встал вопрос, как решить данную проблему? Перебирать все истории переписок руками в клиенте скайпа — огромный труд и куча потерянного времени. К тому, же встроенный просмотр истории иногда глючит и отказывается искать текст стандартными средствами 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'
А не подскажите есть ли подобный способ в Телеграмм?
Думаю что есть, не пользуюсь — не интересовался)
Спасибо Вам большое, автор. Хотел почитать всю старую переписку в скайпе, и вот нашел действенный способ у Вас. Сохраню Ваш сайт в закладки, очень интересно)
Спасибо огромное за статью, так давно не мог решить проблему с тем как удалить историю переписки, а это для меня очень важно.Буду пробовать.
Тоже была такая же задача, решал подобным образом, спасибо что поделились с народом данным мануалом
Всмысле заходим в папку в которую скайп пишет историю ? А если у меня ее нету ? То где искать ?
Папка эта у вас есть — если вы пользуетесь скайпом) Только находиться она может немного в другом месте — в зависимости от системы, с которой сидите)
Большое спасибо за информацию! Очень мне пригодилась!
То что так долго искала!)) Спасибо))Думала уж нереально найти такую статью)
Блииин, спасибо, выручили! Очень надо было скопировать переписку с одним заказчиком! Вы спасли!
Была необходимость достать в переписке ссылку на нужный мне сайт.
Как и у автора статьи мне скинули её давно. И я не смог найти необходимую мне информацию. В с вязи с этим я расстроился о том что в своё время её не сохранил на компютере. Но сей час есть шанс найти и во становить её. Это прекрасно!!! Спасибо автору.
Я даже не догадывалась о том что скайп пишет историю переписки.Попробовала проделать все вышеперечисленное но так и не получилось извлечь историю переписки Skype/skype_login. Может она по другому называется у меня есть папк Skype/Phone может она?
webwed, на какой системе делаете? Возможно у вас путь пользователя другой просто)
Наконец-то хоть где-то нашел об этом информацию, спасибо очень помогли!
Хотела проделать все по пунктам, но запуталась, не могу найти весь путь, такого файла у меня нету, скайп стоит на компьютере виндовс, в какой папке может быть история еще?
Наталья, на windows попробуйте посмотреть тут:
C:\Users\< имя_пользователя_windows_8>\AppData\Local\Packages
\Microsoft.SkypeApp\Localstate\< логин_skype>
А есть ли какой то способ удалять историю переписки? только не всю а от определенных пользхователей
Данный вопрос не исследовал) Но есть предположение, что если удалить из локальной бд всю историю переписки с человеком, то после синхронизации она удалится и с серверной копии) Надо проверять, если действительно интересно — маякните, потестирую и напишу статью)
День добрый, да действительно интересно, правда больше интересно под виндоус чем линукс но в принципе без разницы
Спасибо большое. Очень ценная информация. Бывает нужна сарая переписка чтобы вспомнить, а когда переустановил винду, она пропадает. И вот он метод решить эту проблему. Еще раз спасибо вам.
Спасибо большое за статью!У меня вечная проблема с перепиской в скайпе. Большинство моих клиентов пишут сообщения именно туда. Моя проблема решена, все переписки можно восстановить. Все работает!
Спасибо автору, теперь моя переписка в скайп спасена. Добавлю в закладки, вдруг еще пригодится, а алгоритм не простой. Не запомнишь))
Хорошая статья. Давно столкнулся с проблемой извлечения переписки! Спасибо большое)))
Отличная статья. Никогда и подумать не могла , что в скайпе есть история переписки которую можно сохранить. Теперь буду знать, а вдруг пригодиться.
День добрый, ну так вы попробовали протестировать можно ли удалять переписку от отдельного человека а не всю сразу? желательно и под винду
Serghey, нет — не тестировал) Да и удалять таким образом переписку получится лишь локально)
Спасибо за информацию, нечасто, но бывает жизненно важно
Если даже удалить локальную переписку, то по выходу второго участника беседы в онлайн, вам ее перешлет заново, думается.
Сколько всего я еще не знаю) Теперь реально будет проще сохранять переписки, мне часто приходится это делать, т.к. работаю с заказчиками в основном через скайп. Спасибо)
Хорошая инфа!
Кто может сказать точную информацию по скайпу?! а именно сколько храниться история на сервере? ибо я слышал, что сообщения вообще не хранятся на сервере. Но я заходил на другой аккаунт который не разу не отрывался на моем ПК, и там были последние сообщения в переписках.
Илья, насколько я знаю, точной информации по этому вопросу нет. Зависит от версии скайпа и архитектуры системы. Под убунтой у меня локальная история отматывается до года, при проставленной галочке — ‘хранить историю всегда’. А под винловыми машинами на том же аккаунте — мотается и на 3 года на старых версиях. На новых не тестил, но там говорят урезали это.
автор маолодец только что по предыдущей статье установил скайп, а тут еще один повод поэксперементировать (поучиться). Правда, практической пользы для меня нет, но вдруг пригодится
После выполнения скрипта создаётся пустой файл. Перепроверял пути к файлу и скрипт. Что может быть не так?
какая у вас стоит версия скайпа и правильно ли указываете пути?)
Skype крайний для Windows. Пути верные. Работал через Ubuntu в Live режиме. Для Windows иная структура? Как быть и что делать?
temp_user, на последних версиях скайп — микрософты начали переводить историю в облако, там действительно возможны расхождения в работе со скриптом.
До выполнения скрипта, то есть в файле history_2 из вашего примера, содержимое сообщений есть. Значит дело не в облачности, как понимаю.
если содержимое есть — то возможно что-то неправильно обрезается. Такое тоже может быть — если структура вывода информации была немного изменена разработчиками с момента написания моего скрипта) Можете закинуть несколько строк сюда для примера, покажу как обрезать. Текст сообщений можно заменить на любой рандомный)
Спасибо, отличная статья. Только вот скрипт не сработал. Финальный файл пустой.
Александр, чуть выше посмотрите — уже отвечал)
Удалите потом комментарий с цитируемым тестом.
я глянул, там у вас действительно другой формат вывода. Можете если хотите стукнуть мне в скайп или написать на почту — помогу написать корректный скрипт для данного случая.
Спасибо, как раз то что нужно! Как раз на ноуте необходимо недавно было достать старую переписку, а он не хочет заходить в скайп (просит обновить, но при попытке обновления выкидывает ошибку). Это скайп который встроен сразу в систему был (вин 8), а не отдельно установлен. Но все равно все сработало. Ещё раз спасибо!
Очень полезно. Когда-то такая штука нужна была для вк, когда я случайно удалила переписку. А вот со skype у меня не сложилось. Он ужасно вешает мой компьютер. Раньше лет 7 назад у них сервис и качество было на высоте. А сейчас толком не поговорить. При чём проверяла как на стационарном компе, так и на ноуте — результат один и тот же. Использую майл ру агент вместо него.