用于与skype http api交互的非官方python库。

Sk的Python项目详细描述


用于与skype http api交互的非官方python库。

这里是龙

这里使用的上游api没有文档记录,并且容易更改,这可能会导致这个库的某些部分以明显或不明显的方式崩溃。你被警告了。

要求

[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的非正式文档集合。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
spring引导服务器忽略java上载请求   java多个驼峰路由会导致大量线程吗?   java 安卓单签入回收器gridLayout管理器   Java中指向类的不同实例的对象数组   java的启动/停止和打开/关闭等分组功能是否违反了单一责任原则?   java hibernate组件映射与自定义值类型   java如何使用不同的JDK在Jenkins作业中使用JDK8   java从匹配器获取字符串的特定部分   java通过在Spark数据框内的数组列中映射来创建新列   servlet的java Tomcat配置   java多个活动不在一个应用程序安卓 studio中   javajsf:view beforePhase在我离开页面时多次触发   javascript如何使用“java脚本”进行加密,使用和“java”进行解密   java My App不是从URL ASPX读取简单的JSON   java在RESTish web服务中应用DDD原则