ICQ закрывается: сохраняем историю, нажитую непосильным трудом

от автора

В преддверии закрытия мессенджера ICQ (которое запланировано на 26 июня) немногочисленные оставшиеся пользователи задаются вопросом как скачать и сохранить историю переписок. Официальный клиент ICQ позволяет лишь вручную скопировать сообщения в текстовый редактор:

Запускаем клиент ICQ на компьютере и открываем необходимый чат. Щёлкаем правой кнопкой мыши по последнему сообщению → «Выбрать». После того как выбрано первое сообщение, нажимаем и удерживаем клавишу Shift, и одновременно с этим нажимаем и удерживаем клавишу Вверх. Держим до тех пор, пока не выделятся все сообщения чата. Нажимаем «Копировать». Вставляем содержимое в текстовый редактор и сохраняем.

Очевидные неудобства:

  • История может быть длинной. Очень длинной. Например, моя переписка с одним контактом насчитывает почти сто тысяч сообщений.

  • Каждый файл, каждое изображение придётся сохранять вручную.

На помощь приходит мультипротокольный мессенджер Миранда.

Не просто жива, а обзавелась поддержкой современных протоколов (Discord, Telegram), кроме того, кипит работа над реализацией голосовых звонков.

Не просто жива, а обзавелась поддержкой современных протоколов (Discord, Telegram), кроме того, кипит работа над реализацией голосовых звонков.

Загрузка истории с сервера

  1. Забираем портативный дистрибутив («Архив 7-zip») с сайта программы. Можно брать стабильную версию (версия в разработке предназначена для пользователей желающих обмазаться самым горячим, ещё дымящимся… кодом. Для наших целей это не нужно). Распаковываем и запускаем.

  2. Создаём профиль — это каталог, где будет храниться база (файл, в котором содержатся настройки программы, контакты, история) и вспомогательные файлы (кэши, резервные копии, отчёты о падениях).

    Имя профиля может быть любым, ограничения накладывает только файловая система.

    Имя профиля может быть любым, ограничения накладывает только файловая система.
  3. Появляется список контактов (пока пустой) и предложение добавить учётные записи мессенджеров и соцсетей.

    В дальнейшем менеджер учётных записей можно вызвать из главного меню.

    В дальнейшем менеджер учётных записей можно вызвать из главного меню.
  4. Нажимаем +, выбираем протокол и придумываем имя учётной записи.

    Имя может быть любым, это имя, по которому Миранда будет отличать эту учётную запись от прочих.

    Имя может быть любым, это имя, по которому Миранда будет отличать эту учётную запись от прочих.

Выбираем созданную учётную запись, вводим UIN и пароль. Если к UIN привязан номер телефона, то можно войти и по SMS.

Можете даже мне написать. Ответа, конечно, не будет.

Можете даже мне написать. Ответа, конечно, не будет.
  1. Нажимаем OK и переходим в главное окно программы, оно же список контактов.

    💡Рекомендую сразу перейти в настройки и в разделе Events → File transfers, во-первых, поменять каталог входящих файлов на %miranda_userdata%\Incoming\%userid%\, во-вторых, снять ограничение на размер скачиваемых файлов, выставив настройке «Only if their size is less than» значение 0. Тем самым, при загрузке истории все файлы, независимо от размера, будут скачаны и с разбивкой по контактно помещены в подкаталог Incoming, находящийся в профиле.

    💡Кроме того, стоит установить просмотрщик истории NewStory (Главное меню → Available components list) и затем в настройках программы назначить его журналом сообщений (Message sessions → Log Viewer). Это пригодится чуть позже.

    💡А если вы хотите видеть и загружать стикеры, то установите плагин SmileyAdd.

  2. Нажимаем цветочек аськи в нижней части окна и переводим протокол в онлайн. Вот и контакты подтянулись (если с подключением возникли проблемы, см. раздел ЧАВО в конце статьи). Все давно офлайн, многие удалены из-за отсутствия активности.

Оно живое!

Оно живое!
  1. Нажимаем правой кнопкой на контакт и выбираем «Load server history». Начнётся загрузка истории переписки с этим контактом. Если история большая, это займёт минуты и даже десятки минут. Например, с одним контактом за 5 лет мы натрындели почти сто тысяч сообщений.

    Контролировать процесс (чтобы понять, что история скачалась и пора переходить к следующему контакту) можно двумя способами:

    • Выбрав в меню контакта (щелчок правой кнопкой мыши по контакту) пункт History, Это рекомендуемый вариант.

    • Двойным щелчком по контакту открыть приват с ним. Вы увидите бешено всасываемый с сервера поток истории, а окно может заметно подвиснуть. И даже упасть, утянув с собой всю Миранду. Ничего не поделаешь: кодовая база в следующем году отметит 25-летие, над программой работали за это время сотни человек, большая часть которых была отнюдь не профессиональными, но вчерашними школьниками и студентами, а слов типа «юнит-тесты» и «автоматизированное тестирование» Миранда никогда не знала. Лучшее тестирование — это тестирование на пользователях. В общем, не открывайте приват с контактом, пока туда всасывается история, вас предупредили.

    Вся история сохраняется в базе (файл .dat в папке профиля), а файлы — в каталог, указанный на шаге 5. Да, файл и событие (сообщение), содержащее этот файл, хранятся в разных местах. Придётся понять и простить, так исторически сложилось. Кроме того, хранение файлов в базе привело бы к значительному увеличению её размера и захламлению (представьте какой-нибудь канал с мемасиками в Telegram, изображения из которого стремительным домкратом ежедневно льются в базу).

    Когда история контакта загрузилась, повторяем загрузку для следующего контакта. И так далее.

  2. PROFIT! История загружена. Теперь с ней можно делать всякое.

    Интересный факт: Миранда позволяет выкачать более старую историю, которую официальный клиент даже не видит. Например, в моей практике официальный клиент видел историю, начиная с 2017 года, а Миранда позволила забраться глубже в прошлое — вплоть до 2015.

Просмотр истории в Миранде

Выбираем в меню контакта пункт History. Если вы послушались совета и установили NewStory, то увидите такое окно:

Здесь можно искать в истории, копировать текст, есть дерево дат, поддержка закладок, предпросмотр изображений и экспорт истории в формат JSON. Есть даже фильтры, но они не работают ¯\_(ツ)_/¯

Экспорт истории в текстовый формат

Устанавливаем плагин Msg_Export. Переходим в Настройки → History → Message export. Здесь можно выбрать формат, путь (по умолчанию папка профиля\MsgExport\) и контакты для экспорта (щелчок правой кнопкой мыши по выделенным контактам → Export).

💡Если нужен формат JSON, лучше воспользоваться плагином NewStory. Плагин Msg_Export очень старый и странный, а поддержка JSON к нему была прикручена лишь несколько лет назад. В NewStory поддержка экспорта в JSON реализована гораздо лучше.

Другие варианты

Поскольку база (.dat) представляет собой обычную базу SQLite, можете использовать сторонние утилиты для работы с SQLite. Тысячи их.


ЧАВО

Пароль не подходит. А я ведь точно-точно его помню!

Во-первых, убедитесь, что ваша учётная запись не удалена. Пройдите по ссылке https://icq.im/вашUIN — если вместо имени видите [deleted], то учётную запись удалили из-за неактивности. Восстановить её невозможно.

Во-вторых, попробуйте ввести в Миранде не весь пароль, а лишь первые 8 символов. Дело в том, что все годы до перехода под крыло Mail.ru, максимальная длина пароля была именно такой. Если пользователь вводил более длинный пароль, то все официальные и сторонние клиенты молча урезали его до 8 символов. Сейчас это ограничение снято и Миранда отправляет на сервер пароль целиком. Но если вы не меняли его с древних времён, то сервер ожидает получить 8 символов.

Всё это слишком сложно, а у меня лапки. Можно ли как-то попроще?

Устанавливаем в браузер расширение ICQ Backup 2024, написанное хабраюзером @minch-dev. Логинимся на web.icq.com. Выбираем чат, нажимаем «Собрать историю чата». Когда закончится прокрутка чата, собранную историю можно сохранить в форматах MHTML и JSON. Файлы из чатов автоматически скачиваются в подкаталоги с разбивкой по чатам.


ссылка на оригинал статьи https://habr.com/ru/articles/819273/