用于与skype http api交互的非官方python库。
Sk的Python项目详细描述
用于与skype http api交互的非官方python库。
这里是龙
这里使用的上游api没有文档记录,并且容易更改,这可能会导致这个库的某些部分以明显或不明显的方式崩溃。你被警告了。
要求
- python 2.6+(包括3.x)
- BeautifulSoup
- Requests[1]
- Responses(用于测试)
[1] | Note that Requests no longer supports Python 3.2 – the last working version is 2.10.0. |
开始
文档提供了一些更详细的示例,以及完整的api规范,但以下是入门的基础知识:
fromskpyimportSkypesk=Skype(username,password)# connect to Skypesk.user# yousk.contacts# your contactssk.chats# your conversationsch=sk.chats.create(["joe.4","daisy.5"])# new group conversationch=sk.contacts["joe.4"].chat# 1-to-1 conversationch.sendMsg(content)# plain-text messagech.sendFile(open("song.mp3","rb"),"song.mp3")# file uploadch.sendContact(sk.contacts["daisy.5"])# contact sharingch.getMsgs()# retrieve recent messages
速率限制和会话
如果您尝试过多身份验证,Skype API可能会暂时限制您的速率,或者需要验证码才能继续。对于后者,您需要在具有匹配IP地址的浏览器中完成此操作。
为了避免这种情况,您应该尽可能重用skype令牌。一个令牌只会持续24小时(web.skype.com会在该时间之后强制重新验证),不过您可以使用sk.tokenExpiry检查到期时间。将文件名作为第三个参数传递给Skype()构造函数,以便将会话信息读写到该文件。
事件处理
使类成为SkypeEventLoop的子类,然后重写onEvent(event)方法以处理传入消息和其他事件:
fromskpyimportSkypeEventLoop,SkypeNewMessageEventclassSkypePing(SkypeEventLoop):def__init__(self):super(SkypePing,self).__init__(username,password)defonEvent(self,event):ifisinstance(event,SkypeNewMessageEvent) \ andnotevent.msg.userId==self.userId \ and"ping"inevent.msg.content:event.msg.chat.sendMsg("Pong!")
创建一个实例并调用其loop()方法来开始处理事件。对于具有前端的程序(例如自定义客户端),您可能希望将事件循环放在它自己的线程中。
测试和文档
单元测试可以在test文件夹中找到——客户端测试用例设计用于测试库的行为和模拟API响应的解析,而服务器用例连接到实时Skype API。
除了这个库的文档之外,SkPy docsrepo还保存了一个用于skype http api的非正式文档集合。