Copy skype chat history to text files?
I’d like to convert my Skype chat history to a collection of text files for archival purposes. Ideally, I’d like to have a command (e.g. script or app) so that I could do this on a regular basis. Any one have any idea on how to go about doing this?
I have created a Python-based software for exporting the newer Skype chat log archives (messages since somewhere in 2017) to text files: github.com/levitation-opensource/… . Skype has its own chat log archive browser tool too, but it does not generate text files and does less comprehensive parsing of the messages: go.skype.com/skype-parser .
7 Answers 7
Your Skype chat history is stored inside a file named main.db located by default at:
Open the File
These files are binary files and can be viewed using:
- a Hex editor like ghex;
- or a regular editor like GVim;
- BUT for an efficient analysis, you should use a SQLite editor like Sqliteman: Performing a query to select the intended data, you can export the results to CSV, HTML, XLS, SQL and other formats.
Backup the File
You can use a simple cp command to copy the folder to somewhere else you want it to.
You can put this command in a cron.daily if you want it to run daily.
Try the software called «Skyperious» which can be clones/ downloaded from HERE. They have installable software for Linux, Windows as well as for Mac.
http://www.kudosknowledge.com/how-do-i-export-skype-chat-history/ describes how to do it, but I believe it assumes a Windows install of Skype. Basically, everything is in your ~/.Skype folder, and you’ll need to read the sqlite database corresponding to your account. It shouldn’t be too hard to make a script to do it, but I’m not aware of any that currently exist.
Whilst this may theoretically answer the question, it would be preferable to include the essential parts of the answer here, and provide the link for reference. Unfortunately, the referenced link is no longer valid.
There’s a good and free windows program that works great with Wine: http://www.nirsoft.net/utils/skype_log_view.html
Tested it on Lubuntu 13.10 & Wine 1.7.10, really awesome utility.
Works good! Don’t forget to configure Wine to show files starting with dots, then you can open ~/.Skype/SKYPEUSERNAME/
If you’re not afraid to upload your Skype database to the web, there is an online tool that allows exporting chats from main.db into html files: http://www.skypebrowser.com
Seems to work OK with small databases.
Skype log view reads skype files u can also simly copy all. Open ur skype chat window to the person u want the istory on make sure the display is set to show from the beginning and select all tohighlight copy and past to an text editor.
You should be able to simply:
- Right click in a chat window → Select All
- Press Ctrl + C to copy.
- Paste it into a file of your choice.
The output will be something like this:
[7:39:36 AM] username1: hello [7:39:46 AM] username2: hello to you as well
If someone had less than one scrollback buffers’ worth of text, and few enough contacts that doing it this way made sense, then odds are good that they wouldn’t be asking this question. I don’t think Skype ever showed the entire log, so this would save only the most recent logs. If you first scroll up to the beginning of each contact’s chat history log (which would take many days for some of us), this might work, but I’m skeptical even then.
чем открыть историю скайпа в линукс?
чем открыть в читабельном виде историю скайпа в линукс не заходя в программу скайп а лишь имея файл dat?
Я как раз этим занимаюсь. Можешь постучать в жаббер ближе к НГ.
спасибо, постучу, а на данный момент это вообще реально?
Сначала расскажи, какая платформа, версия скайпа и какие есть файлы.
платформа и версия скайпа, откуда были взяты логи
потому что «файл dat» в единственном числе вводит меня в недоумение.
Вообще то история скайпа хранится в main.db. Эта база в формате SQLite, соответсвенно можно выдергивать sql запросами.
Возможно вьі уже знаете, но на хабре чтото бьіло об єтом
Платформа — Ubuntu 12.04 x86_64. В домашнем каталоге пользователя после очередной переписки с новым пользователем в каталоге .Skype/Skype_user_name/chatsync/ создается новый каталог с именем типа «04» или «B0» или с похожим именем. В нем создается файл типа 040d5454b4526e6f.dat, который увеличивается по мере переписки — поэтому я и сделал вывод, что это файл или лога или самой переписки. Вот интересуюсь. возможно ли его открыть в читабельном виде? Gedit открывает и даже некоторые слова, которые латиницей написаны, можно прочитать.
поднимись выше в каталог .Skype/Skype_user_name/ там файлы с расширением .dbb они тоже хранят всю переписку и это скорей всего (как и в шиндовс) мускульные базы данных и они на ура читаются любым редактором в кодировке utf-8
Не знаю, до хабры не добрался. В своё время искал информацию по крупицам в интернете.
Экспорт истории сообщений из Skype
Многие пользователи Skype в Linux замечали насколько неудобно там сделана работа с историей сообщений чата. Нет нормального поиска, сообщения за длительный период времени грузятся очень долго. Нет возможности экспорта в другие форматы/клиенты.
Skype для Linux хранит историю сообщений в недокументированном бинарном формате. Несмотря на то что энтузиасты расковыряли его довольно давно, еще многое остается неизвестным.
Поверхностный поиск готового решения для экспорта истории сообщений не привел к успеху. Поэтому я, собрав всю доступную информацию, написал своё.
Skype API
Первой мыслью было использовать Skype API через D-Bus интерфейс. Казалось бы, есть команда «SEARCH CHATS», но почему-то у меня не получилось её заставить выдавать все чаты. Подозреваю, что она для этого и не предназначена. Skype API достаточен чтобы оперировать текущими событиями, но для доступа к истории надо искать другое решение. Поддержка так и пишет, что возможность экспорта через API в планах не стоит https://jira.skype.com/browse/SPA-596.
DBB файлы
Значит единственный выход это извлечь сообщения из файлов профиля. Не знаю по какой причине, но для хранения данных инженеры Skype придумали довольно странный велосипед. С 4ой версии клиента они одумались и перешли на SQLite, но для Linux пока есть только 2ая со старым форматом.
Данные хранятся в папке профиля в файлах nameXXX.dbb. Каждый файл содержит записи фиксированного размера «степень двойки»+8. Размер записи округляется вверх до ближайшей степени двойки (не меньше 256) и запись пишется в соответствующий файл.
Таким образом, файл chatmsg512.dbb состоит из блоков по 512+8=520 байт в которых содержатся записи длиной между 256 и 512 байт.
Я с трудом представляю для какой задачи такой формат будет эффективным. Из-за округления получаются неиспользуемые дырки, что приводит к неоправданному увеличению размера. Для примера, в моей базе из 21500 сообщений 23.5% места потеряно на округлении, в среднем 73 байта на сообщение. При таком вольном обращении со свободным местом, несколько странно выглядит семибитная кодировка чисел (см ниже). Наконец, так как сообщения пишутся в разные файлы, перед каким-то осмысленным использованием их надо объединять и сортировать, что тоже не прибавляет скорости.
Формат записи
Запись состоит из заголовка и тела. Заголовок имеет длину 17 байт (семнадцать).
4 байта магическое значение «l33l»
4 байта размер записи 32-bit int
4 байта идентификатор 32-bit int
5 байт неизвестно
Далее следуют поля трёх типов 0x00 — число в семибитной кодировке, 0x03 — строка, 0x04 — блок двоичных данных. Каждое поле помимо типа данных содержит тип поля также в семибитной кодировке.
Типы полей
0x00 — тип данных (число)
7bit number — тип поля
7bit number — значение поля
0x03 — тип данных (строка)
7bit number — тип поля
null-terminated string — значение поля
0x04 — тип данных (blob)
7bit number — тип поля
7bit blob size — длина поля
binary blob — значение поля
Семибитная кодировка переменной длины
В каждом байте старший бит указывает является ли этот байт последним (1 — нет, 0 — да). Остальные 7 бит значащие. Чтобы получить число надо склеить 7 битные блоки в порядке big-endian.
Скрипт skypelog.py
Питон скрипт/модуль, который читает DBB файлы можно взять с GitHub https://github.com/Vayu/skypelog.
В модуле собрана известная на данный момент информация об именах полей записей различных типов: SkypeMsg, SkypeAcc, SkypeContact.
- JSON предназначен для последующей обработки внешними программами и сохраняет всю историю аккаунта в один файл. Есть два варианта: «full» экспортирует все известные поля и «compact» экспортирует минимальный набор «дата, имя, сообщение».
- HTML создаёт файлы с историей сообщений для каждой пары аккаунт-контакт. Например vasya-petya.html и vasya-masha.html. К сожалению, структура записей для групповых чатов пока до конца не ясна.
#!/usr/bin/env python
from skypelog import *
data = SkypeDBB ( «/home/user/.Skype/account/call256.dbb» )
for r in data. records ( ) :
print r
Более длинный пример apiuse.py на GitHub.
Заключение
Как видно из примера выше, skypelog.py существенно упрощает исследование формата DBB. Имена полей пока известны (угаданы), только для нескольких типов записей:
chatmsgXXX.dbb — сообщения чата, класс SkypeMsg
profileXXX.dbb — учетные записи, класс SkypeAcc
userXXX.dbb — контакты, класс SkypeContact
Желающие приглашаются к угадыванию пока неизвестных значений полей в следующих файлах:
alertXXX.dbb — системные сообщения
chatXXX.dbb — список чатов
chatmemberXXX.dbb — список участников чата (?)
transferXXX.dbb — список переданных файлов
callXXX.dbb — лог звонков
callmemberXXX.dbb — список участников звонка (?)
voicemailXXX.dbb — голосовая почта
PS1: Судя по отзывам в комментариях «SEARCH CHATS» раньше работала, возможно зависит от версии Skype. Желающие могут попробовать следующий код:
(нужен dbus модуль для Python)
#!/usr/bin/env python
import dbus
import sys
try :
skype = dbus. SystemBus ( ) . get_object ( ‘com.Skype.API’ , ‘/com/Skype’ )
except :
try :
skype = dbus. SessionBus ( ) . get_object ( ‘com.Skype.API’ , ‘/com/Skype’ )
except :
print «Can’t find Skype API»
sys . exit ( )
print skype. Invoke ( «NAME python» )
print skype. Invoke ( «PROTOCOL 9999» )
print skype. Invoke ( «SEARCH CHATS» )
How to clear Skype chat history?
It seems that in the Window version of Skype, there is an option to clear chat history. It is supposed to be Tools > Options > IM & SMS > Clear history button but effectively nothing similar is here: This option is not present on the version that come with my Ubuntu 13.04. In the privacy settings there is this option: and somewhere in the Skype forum it is said that changing that to Disable History and then restarting Skype will get rid of the chat history. Tried that, don’t work. Searching a bit I found that you have to eliminate some file in the Skype directory; I did that from the directory I have:
cd $HOME/.Skype/my_skype_name/ rm chat*.dbb user*.dbb
. still no go. Before I get rid of all the .Skype directory and re-configure all Skype, is there anyone that know how to do it? The content of the directory is:
alert2048.dbb chatsync httpfe msn.db-journal alert4096.dbb config.lck keyval.db msn.lock bistats.db config.xml keyval.lock profile16384.dbb bistats.db-journal contactgroup256.dbb main.db sms512.dbb bistats.lock dc.db main.db-journal transfer256.dbb call256.dbb eas.db main.lock voicemail callmember256.dbb eas.db-journal msn.db voicemail256.dbb
Removing all other *.dbb doesn’t work, either. Lesson: never put sensitive data on a Skype chat.