Т.к. демарши со стороны AOL и ICQ продолжаются, и нормально пользоваться аськой становится невозможно, я уже обосновался в jabber. Однако, достаточно много контактов по прежнему пользуются ICQ и с ними нужно как-то поддерживать связь. На идею меня натолкнула информация о том, что все неприятности с ICQ имеют выраженный географический характер, попросту говоря, отключения происходят только для адресов на территории бывшего СССР, в то время, как например, в Германии люди спокойно пользуются теми же неофициальными клиентами без каких-либо проблем.
И так, я действовал следующим образом: Выбрал из списка сервер с ICQ-транспортом и находящийся на достаточном удалении от подверженной ударам территории.Подключил этот транспорт к своему jabber-аккаунту (на российском сервере), тут можно поступить по-разному: можно регистрировать аккаунт на сервере, где находится транспорт, а можно этого не делать и подключить транспорт к существующему jabber-аккаунту.
Дальше в случае с транспортом PyICQt (как было у меня) в ростер (контакт-лист) jabber'а "прилетают" ICQ-контакты с сервера, но не сортированные по группам и иногда без указания ников. В случае с транспортом JIT все контакты придётся добавлять самостоятельно. Так или иначе, но с контактами надо что-то делать, а при достаточном их количестве делать это что-то руками совсем не хочется. Решение принято: нужно искать способы автоматизации этой процедуры!
Первым делом я скачал Менеджер контактов QIP, эта программа позволяет редактировать контакт-лист ICQ на сервере и сохранять его в файл, у меня в linux-системе она прекрасно работала под эмулятором Wine. Для тех, кто паталогически не переваривает QIP и всё что с ним связано, есть ещё вариант, но этой программой я не пользовался, потому ничего про неё не скажу.
Первым делом я удалил контакты из игнор-списка (они ведь тоже в серверном листе, а значит окажутся у меня в контак-листе) и удалил контакты из списка "не в списке".
После чего сохранил контакт-лист в виде файла .clb, вообще-то сохранить копию листа перед началом всех изменений тоже будет не лишним, а редактирование серверного контакт-листа теперь я бы поставил на первое место (т.е., до подключения транспорта). Что такое clb формат можно прочитать здесь. Далее, я перекодировал сохранённый лист из кодировки windows-1251 в utf-8 (она у меня системная):
$ cat ICQ-list.clb | iconv -f cp1251 -t utf8 > ICQ-list-utf8.clb
Я все операции произвожу в linux, в windows перекодировку можно выполнить текстовым редактором с функцией перекодировки, если конечно перекодировка вообще нужна (загляните в .clb файл, читаются ли там русские имена и названия групп?) Далее я воспользовался самописным скриптом для преобразования clb-файла в список для внесения контактов в jabber-ростер:
$ ./list.sh > jabber-list.txt
вот сам скрипт:
list.sh
---8<---------------
#!/bin/bash
# clb-файл с ICQ контактами
file="ICQ-list-utf8.clb"
# адрес ICQ-транспорта
# обычно: icq.<адрес_сервера>
transport="icq.jabber-server.net"
# подписка для контакта в Jabber-ростере
# возможные значения: none, from, to, both
subscibe="both"
################
while read line
do
icq_group=`echo $line | cut -d";" -f1`
icq_uin=`echo $line | cut -d";" -f2`
icq_nickname=`echo $line | cut -d";" -f3`
echo "+,$icq_uin@$transport,$icq_nickname,$subscibe,$icq_group"
done < $file
---8<---------------
Эту же операцию можно сделать через веб-форму на сайте jabber.ru, там же есть и обратный конвертор формата. Теперь копируем то, что у нас получилось и вставляем в веб-форму здесь или здесь (сайт разработчиков этой полезной штуковины), указываем свой jid (Jabber-id) и пароль, и контакты отсортированные по группам добавляются в ростер!
Ну вот и всё, можно подключаться к jabber и включать ICQ-транспорт! Что самое замечательное, сервер ICQ теперь считает, что я нахожусь в Европе :)
PS: На работу ICQ с обычным ICQ-клиентом всё проделанное никак не влияет.