root/branches/licq/website/licq.trillianconvert

Revision 4129, 3.7 kB (checked in by anonymous, 4 years ago)

This commit was manufactured by cvs2svn to create branch 'licq'.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1#!/bin/bash
2#
3#############################################################
4#
5# Converts a Trillian Contact List into a Licq contact list
6#
7# only the icq-part, of course
8#
9##############################################################
10#
11# You need to have a working licq.conf in your LICQ_DIR
12#
13# All old group/User information already in Licq will be lost!
14#
15# Back up your licq dir before using this tool!
16#
17##############################################################
18#
19# Written by Steffen Stein
20#
21#############################################################
22
23# your buddies file from Trillian
24# usually located in c:\program files\Trillian\default\
25SOURCE_FILE="buddies.xml"
26
27# Licq default $HOME/.licq
28LICQ_DIR="$HOME/licq_tmp"
29LICQ_USER_DIR="$LICQ_DIR/users"
30LICQ_CONF="$LICQ_DIR/licq.conf"
31
32CONTACT_COUNT=`cat $SOURCE_FILE | grep buddy | grep ICQ | wc -l`
33
34
35# Some checks to start with
36if ! [ -d $LICQ_DIR ]
37then
38    echo "Licq Directory not found!!"
39    echo "either update LICQ_DIR in this file or prepare $LICQ_DIR with a working licq.conf"
40    exit 1
41fi
42
43if ! [ -f $LICQ_CONF ]
44then
45    echo "You need to have a working licq.conf in $LICQ_DIR!"
46    exit 1
47fi
48
49if ! [ -d $LICQ_USER_DIR ]
50then
51    mkdir $LICQ_USER_DIR
52fi
53
54
55echo "Writing users.conf"
56
57#write users.conf
58echo "[users]" > "$LICQ_DIR/users.conf"
59echo "NumOfUsers = $CONTACT_COUNT" >> "$LICQ_DIR/users.conf"
60
61I=1;
62for UIN in `cat $SOURCE_FILE | grep buddy | grep ICQ | awk -F ">" '{print $1}' \
63        | sed  "s/^[^%3A]*%3A//" | sed "s/%3A.*$//"`
64do
65    echo "User$I = $UIN.Licq" >> "$LICQ_DIR/users.conf"
66    I=$(($I+1))
67done
68
69# edit licq.conf -> remove groups section and replace by new one
70
71echo "Initializing groups in $LICQ_CONF"
72
73#remove old groups part (lets hope there is a blank line afterwards!)
74sed "/^\[groups\]$/,/^$/d" $LICQ_CONF > $LICQ_CONF.2
75mv $LICQ_CONF.2 $LICQ_CONF # the one not so good thing in sed....
76
77#make new groups section
78echo >> $LICQ_CONF
79echo [groups] >> $LICQ_CONF
80echo "NumOfGroups = `cat $SOURCE_FILE | grep group -A 2 | grep title | wc -l`" >> $LICQ_CONF
81echo "DefaultGroup = 0" >> $LICQ_CONF
82echo "NewUserGroup = 0"  >> $LICQ_CONF
83
84#sorry blanks become underscores :( don't know how to do it better.
85NUM=1
86for GROUP in `cat $SOURCE_FILE | grep "[G,g][R,r][O,o][U,u][P,p]" -A 2 | grep "[T,t][I,i][T,t][L,l][E,e]" | sed -e "s/<[^>]*>//g" -e "s/^ *//" -e "s/ /_/g"`
87do
88  echo "Group$NUM.name = $GROUP" >> $LICQ_CONF
89  NUM=$(($NUM + 1))
90done
91
92NUM_BUD=0
93UPD_BUD=0
94
95echo "Adding/Updating Buddies"
96
97for ((j=1;$j<$NUM;j++))
98do
99    echo "Group$j.id = 0" >> $LICQ_CONF
100    START_GROUP=`cat -n $SOURCE_FILE | grep \<group | head -n $j | tail -n 1 |awk '{print $1}'`
101    END_GROUP=`cat -n $SOURCE_FILE | grep \</group | head -n $j | tail -n 1 |awk '{print $1}'`
102
103    GROUP_CODE=$((2**$(($j-1)) ))
104
105    for UIN in `head -n $END_GROUP $SOURCE_FILE | tail -n $(($END_GROUP - $START_GROUP +1)) | grep buddy | grep ICQ | \
106                awk -F ">" '{print $1}' | sed  "s/^[^%3A]*%3A//" | sed "s/%3A.*$//"`
107    do
108        USR_FILE="$LICQ_USER_DIR/$UIN.Licq"
109        echo -n "."
110
111        if [ -f "$USR_FILE" ]
112        then
113            #user file already exits -> add current GROUP_CODE to the one already there
114            UPD_BUD=$(($UPD_BUD+1))
115            G_CODE=`cat $USR_FILE | awk -F = '/Groups\.User/ {printf "%i",$2}'`
116            if ! [ $G_CODE -eq $GROUP_CODE ]
117            then
118                G_CODE=$(($G_CODE+$GROUP_CODE))
119            fi
120            sed "s/^Groups\.User.*$/Groups.User = $G_CODE/" $USR_FILE > $USR_FILE.2
121            mv $USR_FILE.2 $USR_FILE
122        else
123            #create new user file
124            NUM_BUD=$(($NUM_BUD + 1))
125            ALIAS=`cat $SOURCE_FILE | grep $UIN | sed -e "s/<[^>]*>//g" -e "s/^ *//" | head -n 1`
126            echo "[user]" > $USR_FILE
127            echo "History = default" >> $USR_FILE
128            echo "Groups.System = 0" >> $USR_FILE
129            echo "Groups.User = $GROUP_CODE" >> $USR_FILE
130            echo "Alias = $ALIAS" >> $USR_FILE
131        fi
132    done
133
134done
135
136echo
137echo "added $NUM_BUD Buddies, updated $UPD_BUD Buddies"
Note: See TracBrowser for help on using the browser.