最近在给社团写微信的一个管理后台,本身是订阅号但运营的那伙人想要各种高级功能……今天总算把这个开发包写得差不多了,下一步开发也方便多了,分享出来,希望对大家有用
项目地址: https://github.com/doraemonext/wechat-python-sdk (star一下也不错呢 >_<)
文档地址: http://wechat-python-sdk.readthedocs.org/
现在只是把基本功能写出来了,下一步会继续添加缓存,Session支持
下面直接把 README 贴出来
非官方微信公众平台 Python 开发包,包括官方接口和非官方接口。
官方接口依据公众平台开发者文档编写,可以实现公众平台开发者文档中的所有内容,具体不列举,请查看 WechatBasic
文档;
非官方接口采用模拟登陆的方式,可以实现更多高级功能,但也存在相应风险。尤其注意,本开发包不提供群发功能,此功能被微信公众平台明令禁止。
目前提供的非官方接口功能有:
请注意:本开发包并不打算提供一个独立的完整微信解决方案,我们更希望这个开发包可以非常融洽的在各个框架中进行集成并使用,对于HTTP请求及响应方面并不涉及,该开发包仅仅接受必要参数,提供各种微信操作的方法,并返回相应的可以响应微信服务器的数据(Response)或操作执行结果。
1
whtsky 2014-08-23 17:28:25 +08:00 via iPhone 1
顺便给自己的「独立的完整微信解决方案」 WeRoBot 打个广告=。=
代码: http://github.com/whtsky/WeRoBot (欢迎 Pull Request ) 文档: https://werobot.readthedocs.org/ 能和 Flask, Django 和 Tornado 比较好的整合,也可以独立运行。 |
2
doraemonext OP @whtsky 官方接口里面的东西基本都是从你那偷的 >_<
|
3
kookxiang 2014-08-23 19:10:41 +08:00
收藏了,刚好缺主动消息这块的
|
4
bcxx 2014-08-23 19:20:25 +08:00
api 可以简化一下吧,没必要把 check signature 这部分交出来让用户来做,太繁琐了。
|
5
Aegwynn 2014-08-23 19:27:59 +08:00
我想问下,上传素材到微信服务器有效期只有三天的问题,怎么解决的?
|
6
renzhn 2014-08-23 19:29:27 +08:00
"不提供群发功能,此功能被微信公众平台明令禁止。"
咦,我用一个php版的自动上传素材,获取id,群发消息很久了。。微信号ahutapp |
7
doraemonext OP @Aegwynn 通过官方接口上传的素材有有效期限制,通过模拟登陆上传的素材都是永久的
|
8
doraemonext OP @renzhn 只是说风险大而已 =。= 没有说一定会被封……这东西一般不都是看微信心情么……
|
9
doraemonext OP @bcxx 这只是可选的,完全可以不做,主要是不想过多干涉HTTP请求处理这方面,对用户而言更灵活一些吧 =。=
|
10
whtsky 2014-08-23 20:48:44 +08:00 via iPhone 1
@kookxiang 主动消息这块儿有官方版的 API 啊,就是有一定限制(好像是两天之内给你的微信公共号发过信息)
https://werobot.readthedocs.org/en/latest/client.html |
13
doraemonext OP @kookxiang 其实这里非官方接口实现的这些功能大部分是为了订阅号的,如果本身就是认证的服务号,其实基本用不着模拟登陆的,直接用官方API的客服消息就可以主动了
|
14
yakczh 2014-08-23 21:39:53 +08:00
这个可以每天群发吗?
|
15
wangleineo 2014-08-23 21:48:38 +08:00
原来模拟登录可以用Ajax做啊,我都用无头浏览器去做的..
有几个问题请教: 用ajax模拟登录不会要求验证码吗? 不明白为什么不能群发,官网页面可以群发图文消息的呀。 还有,你怎么知道这些url能返回json的?官网都是直接获取html的吧 还是感觉非官方的接口很脆弱,说不定哪天就改了,上个月好像就改过。 |
16
doraemonext OP @yakczh 下一个版本会添加模拟官网群发的API,这次写完的API还是有点少了……
好像说的不能群发有点歧义……我指的是不会提供一个接口,可以直接对用户批量主动发送消息,这样应该就直接撞微信规定枪口上了……因为这样就能每天不限次数给用户发送消息了……(不过根据这里提供的API自己组合也就几句代码就能组合出来……自己组合好了>_<风险自负) |
17
doraemonext OP @wangleineo
验证码目前还没出现过,不过如果出现验证码的话会抛出 LoginError 异常,捕获后多试几次什么的;或者手动登陆之后把 token 和 cookies 传入,定时保持活动,这样应该也算一种方法吧(没有验证,纯属YY) 下一版本会添加 T_T 应该明天就好了,我也会把语言重新组织一下……这个群发有歧义了…… 直接拦截各种请求然后慢慢找就好了……另外还借鉴了 https://github.com/dodgepudding/wechat-php-sdk 上面的一些内容 及时找到新的地址就好了,如果发现了哪个不能用了,fork改好之后请发个pull request或者直接提一个issue,会尽快更正过来发布新版本的 >_< |
18
fire5 2014-08-29 11:30:28 +08:00
赞
|
19
c386 2014-10-17 11:21:11 +08:00
@doraemonext 使用了一下非官方的接口群发消息,非常赞!!
我这里还有一个小疑问想请教一下,如果是用官方接口来自动回复语音、视频,那么回复的midea_id必须是通过官方接口上传的素材才会有,而且三天后就删除。那我想要长期实现这些素材的自动回复,是不是应该写 如果midea_id存在, 则回复;else:上传素材,返回midea_id,再回复 这样呢? 谢谢! |
20
doraemonext OP |