LINUX.ORG.RU

Multisync


0

0

Есть телефон SE T630. Необходимо синхронизировать адресную книгу с компом. Используется KDE Address book, multisync + irmc plugin.
При синхронизации некорректно передаются записи, содержащие кириллические символы.
KitchenSync, MultisynK не работают вообще, постоянно вылетают (under heavy development, как написано у них на сайте).
Использовать Evolution не предлагать.

У кого-нибудь вообще работает связка SE phone + KDE? Имеется ввиду синхронизация.

★★★★

Такая же беда с multisync и c kmobiletools. У меня телефон SE T610. Проблема в том, что у kontakt в KDE храниться информация в utf8, а телефону надо utf7. Ни одна программа из перечисленных так не умеет. Я шел таким путем - телефон понимает файлы *.vcf - визитные карточки. Именно так кстати хранится информация в kontakt. Я просто обрабатываю скриптом файл с адресной книгой, заменяя значения полей с кириллицей на перекодированные в utf7, а затем копирую файл на телефон. Криво, но работает. :)

anonymous
()
Ответ на: комментарий от anonymous

Kmobiletools работало через раз. Пришлось патчить на предмет посыла команды AT+CSCS="UCS2" перед началом копирования контактов. А кодировку приходилось делать GSM, чтобы видеть слоты памяти. Иначе, фигня была. К тому же я не нашел экспорт в Kontact.

А скрипт можешь выложить?

kaktyc ★★★★
() автор топика
Ответ на: комментарий от kaktyc

Не, не могу:( Он дома, а когда я туда попаду, неизвестно, будет ли время и желание занятся темой. Примерно так:

#!/bin/sh
file=$(cat std.vcf)
for i in $file ; do
  #имя поля
  f1=$(echo $i | cut -d ":" -f 1)
  #иногда после имени бывают еще параметры
  f11=$(echo $f1 | cut -d ";" -f 1)
  #значение
  f2=$(echo $i | cut -d ":" -f 2)
  if [ "$f11" == "N" ] ; then
    #надо
    j=$f1:$(echo f2 | recode utf8..utf7)
    echo $j >> stdutf7.vcf
  elif [ ... ] ; then
    #то же надо
  else
    #не надо
    echo $i >> stdutf7.vcf
  fi
done
Возможно где то ошибки и чего то не хватает, но идея именно такая. И также наоборот из телефона файл разбирается и перекодируется для kontakt. А он уже может импортировать.

anonymous
()
Ответ на: комментарий от anonymous

Спасибо, буду разбираться.

Я еще нашел скрипт на питоне, который через АТ-команды копирует контакты. То же самое в принципе делает и kmobiletools. Буду его ковырять, может что и выйдет =).

kaktyc ★★★★
() автор топика
Ответ на: комментарий от kaktyc

Поделись, если что получится. На перекодировку меня еще хватило. А с ат командами - даже справочник у SE скачал, но времени нет совсем:( Хочется совсем автоматизировать процесс - зашел в комнату с компутером - контакты синхронизировались. Сейчас все еще много кнопок давить надо:(

anonymous
()
Ответ на: комментарий от anonymous

Вот скрипт: http://www.webfile.ru/418673
Можно выбрать кодировку (см. p.setEncoding() )
В моем телефоне поддерживаются GSM, UCS2, UTF-8, IRA, ERICSSON, 8859-1
Более менее нормально получилось перегнать контакты в UTF-8. Осталось теперь написать скрипт, расчленяющий contacts.txt на VCard =)

Вот еще несколько ссылок:
http://nelson.monkey.org/~nelson/weblog/tech/phone/
http://www.anotherurl.com/library/at_test.htm

P.S. Пойду читать ABS guide. Давно надо было это сделать =)

kaktyc ★★★★
() автор топика
Ответ на: комментарий от anonymous

Нашел еще вот это: http://www.45.free.net/~vitus/mobile/

Я слегка модифицировал скрипт и вот что получилось:
---cut-here---

#!/usr/bin/tclsh
# получаем телефонную книгу
exec obexftp -b 00:11:22:33:44 -g telecom/pb.vcf >&@ stdout
# делаем перекодировку
set f [open pb.vcf r]
fconfigure $f -encoding utf-8
set data [split [read $f] "\n"]
close $f
catch {file delete pb.vcf.bak}
file rename pb.vcf pb.vcf.bak
set f [open pb.vcf w]
fconfigure $f -encoding utf-8 -translation crlf
foreach line $data {
        if {![ string length $line]} continue
        regsub "\;CHARSET=UTF-7" $line "" line
                set pipe [open "|iconv -f utf-7 -t utf-8 <<$line" r]
                fconfigure $pipe -encoding utf-8
                set line [gets $pipe]
                close $pipe
        puts $f $line
}
close $f

---cut-here---

Для работы нужен obexftp. Вместо 00:11:22:33:44 указываешь свой адрес, 
который можно узнать с помощью hcitool scan
Полученный pb.vcf просто импортируется в адресную книгу.
Мне пока хватит =)

kaktyc ★★★★
() автор топика
Ответ на: комментарий от kaktyc

Блин, щас заметил, что телефоны, которые начинаются с +7 или +3 неправильно обрабатываются - тоже перекодируются. Те, что на 8 - нормально.
KAddressBook тоже имеет глюк. Если vcf в виндовом формате, то имена отображаются другим шрифтом. Если перегнать в UNIX-формат, то все нормально.
Попробую еще поставить svn-версию kmobiletools. Там похоже много изменений. Добавили поддержку разных движков (AT - тот что был раньше, и gammu), других фич и новых багов.

kaktyc ★★★★
() автор топика
Ответ на: комментарий от kaktyc

Версия 0.0.2 =)

--cut-here---

#!/usr/bin/tclsh
exec obexftp -b 00:11:22:33:44:55 -g telecom/pb.vcf >&@ stdout
set f [open pb.vcf r]
fconfigure $f -encoding utf-8
set data [split [read $f] "\n"]
close $f
catch {file delete pb.vcf.bak}
file rename pb.vcf pb.vcf.bak
set f [open pb.vcf w]
fconfigure $f -encoding utf-8 -translation lf
foreach line $data {
        if {![ string length $line]} continue
        if {![string match *UTF-7* $line]} {
                set line [encoding convertfrom iso8859-5 $line]
        } elseif {[regsub "\;CHARSET=UTF-7" $line "" line]} {
                set pipe [open "|iconv -f utf-7 -t utf-8 <<$line" r]
                fconfigure $pipe -encoding utf-8
                set line [gets $pipe]
                close $pipe
        }
        if {[string match *CHARSET* $line]} continue
        puts $f $line
}
close $f

---cut-here---

Теперь перекодируются только поля с именами, телефоны не трогаются.
vcf теперь в lf-формате.

Баги: если в записи указано более 3-х слов (например Имя Фамилия Отчество), скрипт перестает парсить и выходит. 
Проблема скорее всего в iconv. Буду дальше ковырять =)

kaktyc ★★★★
() автор топика
Ответ на: комментарий от kaktyc

Добрался я до своего скрипта:)

#!/bin/sh
#set -x
file=std.vcf
count=$(wc -l std.vcf | cut -d " " -f 1)
i=0
while [ $i -lt $count ] ; do
    i=$(($i+1))
    str=$(head -n $i std.vcf | tail -n 1)
    F1=$(echo $str | cut -d : -f 1)
    F01=$(echo $F1 | cut -d \; -f 1)
    F2=$(echo $str | cut -d : -f 2)
    if [ $F01 == "BEGIN" ] ; then
        echo $str
    elif [ $F01 == "EMAIL" ] ; then
        echo $str
    elif [ $F01 == "N" ] ; then
        F2="$(echo $F2 | cut -d ";" -f 1), $(echo $F2 | cut -d ";" -f 2) $(echo $F2 | cut -d ";" -f 3)"
        F2=$(echo -ne "$F2\n\r")
        F2=$(echo $F2 | iconv -f UTF-8 -t UTF-7)
        echo "$F01;CHARSET=UTF-7;ENCODING=QUOTED-PRINTABLE:$F2"
    elif [ $F01 == "ORG" ] ; then
        F2=$(echo $F2 | iconv -f UTF-8 -t UTF-7)
        echo "$F1;CHARSET=UTF-7;ENCODING=QUOTED-PRINTABLE:$F2"
    elif [ $F01 == "TITLE" ] ; then
        F2=$(echo $F2 | iconv -f UTF-8 -t UTF-7)
        echo "$F01;CHARSET=UTF-7;ENCODING=QUOTED-PRINTABLE:$F2"
    elif [ $F01 == "TEL" ] ; then
        echo $str
    elif [ $F01 == "VERSION" ] ; then
        echo $F01:2.1
    elif [ $F01 == "END" ] ; then
        echo $str
    fi
done
Используются только те поля, которые есть в телефоне.
Кроме групп, картинок и мелодий вызова.
Перекодируются тоже только необходимые поля.
Контакты из KMail, Kontakt - файл ~/.kde/share/apps/kabc/std.vcf

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.