• 17
  • May

换手机了,最麻烦的是什么呢?当然是把联系人从一个手机转移至另一个手机,本来还好的,偏偏我是不喜欢把联系人存在SIM卡的(主要是功能有限)。

那我是怎么把联系人从BlackBerry上转移至G1的呢?用的是Python!

首先是基本原理:

  • 在Windows下用“BlackBerry桌面管理器”,把联系人从黑莓中导出,导出形式是ASCII,而实际上这是csv的格式(之后要用Python来解析csv)
  • 到Linux下,利用gdata这个Python库,写一个脚本,把联系人的姓名和手机号码解析出来,再创建至Google Contacts上。
  • 第三步,G1(Android)上同步联系人,所有的联系人都已经自动到G1上去了。

这个过程很酷吧!利用到了Windows,Linux和Python,除了数据导出部分,其他全是脚本完成,自动的!

其他的不需要多说了,贴一下我的脚本源码吧,主要的技术是:解析CSV,Google Contacts的Python API的应用:

#!/usr/bin/python

import csv
import atom
import gdata.contacts
import gdata.contacts.service

def create_contact(client, name, phone):
    contact = gdata.contacts.ContactEntry()
    contact.title = atom.Title(text=name)
    contact.phone_number.append(gdata.contacts.PhoneNumber(text=phone, rel=gdata.contacts.PHONE_MOBILE))

    entry = client.CreateContact(contact)

    if entry:
        print 'Creation successful!'
        print 'ID for the new contact:', entry.id.text
    else:
        print 'Creation fail!'

email = 'yourname'
password = 'yourpasswd'

gd_client = gdata.contacts.service.ContactsService()
gd_client.email = email
gd_client.password = password
gd_client.source = 'GoogleInc-ContactsPythonSample-1'
gd_client.ProgrammaticLogin()

reader = csv.DictReader(open('contacts.csv'))
for contact in reader:
    name = contact['First Name']
    phone = contact['Mobile Phone']

    print 'Name: %s' % name
    print 'Phone: %s' % phone

    input = raw_input('>>> Create the contact (Y/N)?')
    if input is 'N' or input is 'n':
        print 'pass'
    elif input is 'Y' or input is 'y' or input is '':
        create_contact(gd_client, name, phone)

Python让生活更简单、更方便而且更有趣味啦!

另外,一旦拥有Android以后,所有的联系人信息都交给Google管理了,以后再也不用担心同步问题了!

» You can leave a comment.

3 Comments

  1. 哇塞 這個方法太帥了!我當初手機被NOKIA格了,聯系人通過網絡同步獲得哈哈 那也爽

  2. 很好的例子,学习一下。
    黑莓上有google的同步软件,可以直接同步联系人,日历,任务。

  3. weeklybuilds

    请问谷歌系统手机能运行python吗?,方便不

Leave a Comment