Python 操作黑莓(Blackberry)通信录

Python 操作黑莓(Blackberry)通信录
为了给黑莓导入iPhone 的通信录(contacts) , 只能利用黑莓的桌面管理器, 通过ipd 来维护.
但是发现 ABC Amber BlackBerry Converter 只能转换而无法修改, IPDManager 只能维护铃声和音乐啥的:(  只能自己写了个小程序

ipd 的格式可以在 http://na.blackberry.com/eng/developers/resources/journals/jan_2006/ipd_file_format.jsp 这里找到, 后面是代码, 只是生成datablock 列表, 还需要额外拷贝. 操作时最好只同步通信录.

下面是代码
# !/usr/local/bin/python2.5 
#
-*- coding: gbk -*-
from  struct  import   *  

class  BBFile:    
    
def   __init__ (self):
        
pass
        
    
def  _contactblock(self, name, phone, uid):
        s 
=   ''
        
#  name 
        name  =  name.encode( " utf-16be " )
        s 
+=  pack( ' <HB ' , len(name) + 1 0xa0 )
        s 
+=  pack( ' <B ' 0x01 +  name
        
#  ff * 8 
        s  +=  pack( ' <HB ' 8 0x54 )
        s 
+=   ' \xff ' * 8
        
#  uid 
        s  +=  pack( ' <HBI ' 4 0x55 , uid)
        
#  phone
        phone  =  phone.encode( " gbk " )
        s 
+=  pack( ' <HB ' , len(phone) + 1 0x08 )
        s 
+=  phone  +   ' \x00 '
        
return  s 
    
    
def  save(self, filename, us, dbID = 0, dbVer = 0):
        hf 
=  open(filename,  " w+b " )
        rs, uid 
=   1 363797835   #  初始值
         for  u  in  us:
            s 
=  self._contactblock(u[0], u[ 1 ], uid)
            h 
=  pack( ' <HIBHI ' , dbID, len(s) + 7 , dbVer, rs, uid)
            hf.write(h 
+  s)
            uid 
+=   8      #  
            rs   +=   1      #  
        hf.close()
        
if   __name__ == ' __main__ ' :
    bb 
=  BBFile()
    us 
=  [ (u ' 宝宝1 ' , u ' 13888888888 ' ),(u ' 宝宝2 ' , u ' 13888888888 ' ),(u ' 宝宝3 ' , u ' 13888888888 ' ),  ]    
    bb.save(
" bb.ipd " , us, 0, 0)
1. 保存成文件就可以直接运行了:)
2. 如果要真的生成可以导入bb 的文件的话, 要使用高级-> 只同步通讯录, 然后将这个文件生成的内容放在导出文件的头的后面, 还是有点麻烦.... 有空做个全自动的 呵呵   

因为只是测试, 所以很多硬编码了:)    

你可能感兴趣的:(Python 操作黑莓(Blackberry)通信录)