Ок, надеюсь я открыл что то новое...
Итак я экспортировал из миранды лист с помощью mContact. Получился оогромный текстовый лист какогото своего формата.
Я нашел что pidgin создает свой xml лист с контактами. Видимо при первом подключении взял все с сервера и xml создал.
Ну и осталось самое очевидное и невероятное: привести огромный текстовый файл к xml виду в pidgin.
Поработав 2 дня на работе с sed и awk я кажется добился чего нужно, с некоторыми потерями информации. Группы не знаю как отделить. (BEGIN и END в awk работает только на начало и конец всего обрабатываемого файла), а группы это было важно у нас... и вообще в текстовике больше полей получилось чем в xml файле, но видимо pidgin или его libpurple меньше инфы о юзере пользуют чем миранда.
Теперь надо бы привести примеры: Что было и что стало.
ProtoMode=0
Proto=ICQ
CListNick=Тулун
CListGroup=08.2009
IDStr=UIN
ID=********
IDType=4
[1]
ProtoMode=0
Proto=ICQ
CListNick=ООО Особняк, г.Улан-Удэ, ул. Проспек
CListGroup=08.2009
IDStr=UIN
ID=********
IDType=4
где звездочки - сами uid'ы
А это - то что в pidgin'е:
<group name='mygroup'>
<setting name='collapsed' type='bool'>1</setting>
<contact>
<buddy account='++++++++' proto='prpl-icq'>
<name>хххххххх</name>
<alias>Dmitry</alias>
</buddy>
</contact>
<contact>
<buddy account='++++++++' proto='prpl-icq'>
<name>уууууууу</name>
<alias>Alexandr</alias>
<setting name='servernick' type='string'>Alexandr</setting>
<setting name='last_seen' type='int'>1250750585</setting>
</buddy>
Вот теперь мой скрипт:
cat /home/tremor/miranda_0.8.3/contactlist_utf8.txt | sed -e 's/^\[[0-9]*\]/<\/contact>\n<contact>/' -e 's/^CListNick=/\t\t<alias>/' -e 's/^ID=/\t\t<name>=/' | awk 'BEGIN{print"<group name='MirandaOldClients'>";print"<setting name='collapsed' type='bool'>1</setting>"}{if($1~"<alias>"){print"<contact>";print"\t<buddy account=++++++++ proto='prpl-icq'>";print$a;print"\t\t</alias>"}if($1~"<name>"){print$a;print"\t\t</name>";print"\t</buddy>";print"</contact>"}}END{print"</group>"}' | sed -e s/++++++++/\'++++++++\'/
+++++++ - это мой уин - учетка пиджина. ******** - уины юзеров.
Вот, теперь боюсь его пиджину подсовывать. А пока я решаюсь. Может знатоки подскажут как по группам разделить? "CListGroup=08.2009" - это нужная мне запись группы из листа в миранде, надо сделать так, что пока идут блоки уинов с этой группой, писать все новые записи в xml файл между блоками <group lalala> и </group>. Но я ума не приложу как это сделать, это наверное перлом только. А то так у меня щас все в одну группу между BEGIN и END свалилось. BEGIN и END и задают теги group в начале и в конце.
За более подробной информацией по формату xml файла в пиджине - смотрите свои файлы в дом. папке в папкен .purple. По мирандовскому файлу - просто идут uin между тегами "
- , [1], [2]" и т.д. Плюсом, а может и нет, авляется то что по группам они упорядочены в файле. Т.е. первые 15 [N] блоков с одинаковой записью CListGroup=, следующие 30 со следующей CListGroup=... Вот эти 15 и 30 преобразовать надо в формат buddies, name и т.д. и позасовывать между тегами group. Кто может подскажите?