В последние полтора года я стал достаточно активно использовать Skype в качестве IM-клиента. Причем корпоративная политика отразилась и на персональных предпочтениях, ведь привычка - вторая натура. Тем более, что начиная с версии 4 Skype стал достаточно удобным в повседневном использовании (до этого я очень плохо с ним уживался).
В связи со сменой работы возник вопрос синхронизации истории сообщений между профилем, который я забрал с работы и личным профилем, который хранился дома. Ну или экспорт/импорт (в крайнем случае). Поясню: я использую одину и ту же учетную запись дома и на работе. Частенько получается, что начинаешь разговор с кем-то с работы, а заканчиваешь его дома. В результате история сообщений разорвана между двумя (а то и больше) компьютерами. Гугл мало чем смог помочь: есть плагин к Skype, который автоматом сохраняет все звонки и исообщения в гуглопочте - неплохо, конечно, но во-первых избыточно, во-вторых за деньги ($25 может и немного, но нет, спасибо). Еще на форуме Skype можно найти пару ссылок на программы, которые могут вытащить историю и выгрузить ее в txt или html. Тоже не совсем то. Пришлось разбираться самому.
На проверку все оказалось не так плохо (хотя и несколько запутано):
- для хранения профиля (в том числе и истории звонков и сообщений) Skype использует базу данных SQLite - что хорошо (ибо эта СУБД открытая и для нее имеется .NET Provider)
- схема не то чтобы сложная (16 таблиц), но о связях приходится догадываться (ибо внешние ключи не определены) и таблицы довольно "широкие" (до 40 полей)
За выходные в неспешном режиме написал программулину, которая делает то, что нужно (ну или почти): копирует сообщения из одного профиля в другой (если их там еще нет). Выглядит сиё чудо инженерной мысли следующим образом:
Скачать его можно отсюда (выложил на SkyDrive на случае если кому еще пригодится).
Что следует иметь в виду, в ходе синхронизации:
- профили должны быть от одной версии Skype (строго, ибо даже между v.4.0 и v.4.1 схема имеет некоторые различия)
- профиль хранится в каталоге %user dir%\AppData\Roaming\Skype\<your skype name>\main.db
- перед внесением изменений в целевой профиль, делается его резервная копия (так что в случае чего его можно вернуть)
- свойства чата не обновляются - так что в списке "последних разговоров" можно не увидеть действительно последние разговоры, которые были добавлены в ходе синхронизации (но в базе они будут)
- иногда происходит дублирование сообщений (не всегда) - я так и не смог надежно определить условия, при которых это происходит
- в некоторых случаях в истории появляется сообщение "это сообщение было удалено из чата" - тоже не смог понять из-за чего (подозреваю что где-то не хватате связанной записи ... но вот где?)
Так что не все так шоколадно, как хотелось бы. Но это в любом случае лучше, чем ничего. Тем более, что теперь я знаю, как сделать экспорт истории (не только сообщений, но и звонков, и контактов) почти в любой формат ;-)
HTH,
AlexS
Решаю задачку с логами- на работе несколько человек в одном отделе пользуются одной учетной записью. Нужно знать, кто куда(на уровне учетных записей) звонил. Использую программу SkypeLogView в командной строке.
ОтветитьУдалитьПисать программу типа вашей-нет знаний. А так- батник опрашивает файлы в именованных папках, выдирает оттуда историю звонков, сохраняет в тхт с табуляцией, потом в базу.
У меня есть такой вопрос- можно ли изменить место хранения Skype'ом его логов??
Насколько я знаю, изменить место хранения логов нельзя. Они всегда в профиле пользователя, в подкаталоге, имя которого совпадает с именем учетной записи.
ОтветитьУдалить(увы и ах)
Здравствуйте! Программа выдаёт следующее:
ОтветитьУдалитьSkypeChatHistorySync.exe
The NTVDM CPU has encountered an illegal instruction.
CS:11fa IP:0212 OP:63 6f 6e 74 65 Choose 'Close' to terminate the application.
Ваша программа очень нужна. Заранее спасибо.
Здравствуйте, Вадим.
ОтветитьУдалитьПо этому сообщению я мало что могу Вам сказать. Первое, что приходит в голову - а у Вас .NET установлен? Для нормальной работы программы нужен .NET Framework 3.5 + SQLite (точно не помню версию). Проверьте, если нет - установите. Я тем временем (на выходных скорее всего) доработаю программу так, чтобы она "отлавливала" исключения и выводила по возможности более "человеческие" сообщения об ошибках.
Здравствуйте!
ОтветитьУдалить.NET Framework 3.5 - утановлен вместе с SP1. А вот насчет SQLite - возникли некоторые затруднения. Не могли бы Вы поподробнее обьяснить как утановить. И версия может иметь значение для корректной работы вашей программы? Я скачал Version 3.6.21. Вот только что с ней дальше делать?
Спасибо
Этот комментарий был удален автором.
ОтветитьУдалитьЗдравствуйте!
ОтветитьУдалитьПроблема заключалась в том что файл был скачан криво. (( Перекачал - запускается. Вот только но... Пользую Skype3.8 (больше нравится). Файл main.db есть только в одной базе! В остальных его нет! Все рабочие!
Спасибо!
Это хорошо, а то я уже собрался на выходных добавлять протоколирование где только можно :-)
ОтветитьУдалитьНа счет Skype 3.8 - это довольно странно, если честно. Вы абсолютно уверены, что на всех машинах у Вас установлена одна и таже версия? У меня, к сожалению, нет возможности посмотреть на версию 3.8 (везде пользуюсь 4.х).
И ... может Вы лучше напишете мне на почту (slipchenko[сами-знаете что}гуглопочта)? А то в комментариях как-то неудобно переписываться.
А с версией 5.5 работает эта прога?
ОтветитьУдалитьБуду честен: не проверял. Но собираюсь (были просьбы и помимо вашей). По результатам - отпишусь.
ОтветитьУдалитьЗдравствуйте!
ОтветитьУдалитьПоробовал объединить историю своих сообщений Skype 4.2 - прошло без ошибок. При этом добавленные сообщения не показываются в интерфейсе скайп. посмотрев полученный результат с помощью SkypeLogView обратил внимание что ID-шники добавленных сообщений больше, чем уже имевшихся. Может быть после добавления надо делать общую перенумерацию сообщений в БД?
Михаил.
Этот комментарий был удален автором.
ОтветитьУдалитьздрасьте.
Удалитьчота ничо не вышло, прога вылетела с ошибкой
http://s1.ipicture.ru/uploads/20120408/5q5Gp5UR.png
скайп одной версии - 4.1
расскажите чуть подробней про структуру таблиц\связей
чо от чего зависит?
пытался вот этой тулзой http://www.dbconvert.com/convert-sqlite-to-mysql-sync.php?DB=10
но они денех хотят, прога работает, но с ограничением в 50 записей.. :(
Прога не заработала (W7, .Net 3.5SP1, sqlite).
ОтветитьУдалитьСвязь, насколько я понял,только одна - chat.conv_dbid <-> messages.convo_id.
Если бы автор поправил прогу или выложил исходник - было бы здорово.
Исходник в открытом доступе -- пользуйте, меняйте. https://bitbucket.org/aslipchenko/skypechathistorysync
ОтветитьУдалитьПроверил, все отлично работает.
ОтветитьУдалитьЕсли БД от программ разных версий, то я сделал так:
скачал портейбл версия скайпа, запустил, авторизовался, вышел.
В папке "profile" портейбл версии будет создана вложенная папка по названию вашей учетной записи, а в ней - профиль. В нее и нужно скопировать один из профилей от преобразуемых версий. Затем заново открыть портейбл версию и закрыть ее. Пересохраненный файл main.db из папки профиля скопировать в укромное место. Очистить папку профиля, скопировать туда другой конвертируемый профиль и т.д., пока все main.db-файлы не будут преобразованы в единую версию.
Что касается сообщения "Этот разговор был удален из истории" - у меня это передаваемые файлы, по-видимому ссылки на них хранятся где-то еще.
Подскажите в чем проблема На XP и на Win7 прога не работает. У меня XP Pro SP3 x86, Win7 Ultimate x64.
ОтветитьУдалитьА каким образом можно проинсталлировать Sqlite. Скайп на всех машинах одинаковой версии =6.1.0.129. Может в этом проблема?
Описание:
Stopped working
Сигнатура проблемы:
Имя события проблемы: CLR20r3
Сигнатура проблемы 01: skypechathistorysync.exe
Сигнатура проблемы 02: 1.0.0.0
Сигнатура проблемы 03: 4adb6067
Сигнатура проблемы 04: mscorlib
Сигнатура проблемы 05: 2.0.0.0
Сигнатура проблемы 06: 4ca2b851
Сигнатура проблемы 07: 123a
Сигнатура проблемы 08: 5f
Сигнатура проблемы 09: System.BadImageFormatException
Версия ОС: 6.1.7601.2.1.0.256.1
Код языка: 1049
Да, все заработало в Win7 x86
ОтветитьУдалитьРебята, сорри, у меня не работает, вылетает без причин Win8 Pro 64 bit
ОтветитьУдалитьможет opensource сделаем?
Да легко -- исходник давно лежит на bitbucket (https://bitbucket.org/aslipchenko/skypechathistorysync).
ОтветитьУдалитьЕсли хотите / нужно -- могу переложить на github
AlexS, примите огромную благодарность за вашу программу. Она меня очень выручила. Спасибо!
ОтветитьУдалитьНашел такую программу http://suurjaak.github.com/Skyperious/
ОтветитьУдалитьУдалось совместить 2 файла main.db из разных версий Skype
Также она умеет просматривать и экспортировать чат
Win_x32 http://erki.lap.ee/downloads/Skyperious/skyperious_1.2_setup.exe
Win_x64 http://erki.lap.ee/downloads/Skyperious/skyperious_1.2_x64_setup.exe
Спасибо! Программа по ссылке сработала на отлично для последних версиях скайпа!
УдалитьЗдравствуйте!
ОтветитьУдалитьВзялся бы кто-нибудь помочь за хорошую оплату?
1. Нужна утилита для импорта текстового файла, полученного посредством copy & past окна чата скайпа (заданного контакта), в main.db. Предполагается, что история чата с данным контактом очищена.
2. Нужна утилита для «принудительной синхронизации» истории чата между компьютерами двух контактов (пример: история контакта 1 стёрта или имеется только её часть, нужно восстановить задним числом, начиная с начала, предполагая, что на стороне контакта 2 история полная).
Буду рад ответам на скайп (логин gvrgvrgvr)
Здравствуйте! Вы написали как раз то, что мне нужно! Но вот ссылка на скачку - нерабочая. Перезалейте,пожалуйста.
ОтветитьУдалитьСпасибо.
Странно (оригинальная ссылка для меня сработала "на ура"). На всякий случай перезалил на bitbucket: https://bitbucket.org/aslipchenko/skypechathistorysync/downloads/SkypeChatHistorySync.exe
ОтветитьУдалитьВпрочем, справедливости ради, я должен признать, что не уверен как все это будет работать с последними версиями Skype.
Жаль, что проект кончился. задача-то осталась.
ОтветитьУдалитьВсё же программа помогла. Спасибо автору.
УдалитьСтояла задача добавить историю с W7 к W10, и на W10 программа не работала. Удалось обойти слиянием на W7 и переносом main.db на W10.
Нашел программу, которая позволяет синхронизировать БД новых версий скайпа..
ОтветитьУдалитьhttps://suurjaak.github.io/Skyperious/screens.html