[关闭]
@coder-pig 2018-04-02T11:50:22.000000Z 字数 3776 阅读 2101

小猪的Python学习之旅 —— 18.Python微信转发小宇宙早报

Python


一句话概括本文

利用itchat,监控特定信息,转发到特定微信群~


引言

上一篇 小猪的Python学习之旅 —— 17.Python数据分析:我主良缘交友了解下
貌似反响不错,一堆微信加群的,后面有个小伙伴说看到我的文章,是被推荐到了
掘金Python群的早报,掘金竟然还有官方Py群,妥妥地让他拉我进群啊,然后呢,
里面的掘金之饼赵小饼是个机器人,会拉人,发表之类的,觉得有些意思,自己
也搜了一下相关的库Star了,以后怕是会用到。这不,今天就搞了个简单的东西
玩玩,场景是这样的:

在干货群里有个蘑菇云大佬天天发小宇宙早报,比如今天的:

#每天清晨花60秒了解昨夜今晨的世界大事#

小宇宙整理第663天早安快报,3月30日,星期五,农历二月十四!

1、交通部:全国190个城市实现交通一卡通互联互通;

2、霍金墓地将与牛顿达尔文为邻 葬礼只邀请家人朋友参加;

3、央行货币金银工作会议:开展对各类虚拟货币的整顿清理;

4、三大运营商年报对比:赚钱方面,联通+电信=0.18个移动;

5、爱奇艺 正式登陆纳斯达克 成为目前国内视频平台中唯一的上市公司;

6、6秒42!国际田联正式官宣:中国选手苏炳添以6秒42的成绩创造了新的亚洲纪录!

7、WiFi万能钥匙回应“窃取用户密码”:原理是热点共享 不是破解;

8、动车降价!28条城际铁路动车票价最大折扣将提高至20%;

9、脸书丑闻发酵,剑桥分析母公司被指研究印度选民数据,花花公子宣布删除Facebook官方主页;

10、提议乐视破产重整或退市,孙宏斌或涉嫌"操纵市场";

【早安微语】Time goes by so fast, people go in and out of your life. 如梭时光,生命中人来人往

然后呢,之前自己发到过几个群里,都很喜欢看这个,然后天天早上@我发,
然而我也是转发别人的,别人没发我怎么发?我跟你讲我就是这个表情:

然后呢,每次我都要翻一堆聊天记录,找到小宇宙日报,然后转发,
有时蘑菇云大佬有事,或者我开会忙之类的,往往早报变成了午报。

说有没有公号之类的,就死了这条心吧,目前是没有的,专门发新闻那个
群是要付费的,已经问过小宇宙本人了,只是他偶尔会在一些群里发。

作为一个Py玩家,肯定要想办法解放自己的双手啊,让自动来,套路也不复杂:

监测到小宇宙或者蘑菇云发送的今天的小宇宙,就转发到特定的群。

怎么监测?

最后想起之前star的:itchathttps://github.com/littlecodersh/ItChat

啧啧,有点意思,反正写着基于微信网页端,网页端能干的,这个都能干。


1.用itchat写个小宇宙早报转发脚本

显示命令行走一波pip装下库:

  1. pip install itchat

接着分析下我们的流程:

另外要注意:

移动端要保证微信号在线,不然网页端会断开链接,具体网页端时效性有多久,
还不知道,另外感觉长时间不发信息会被下线,故加个定时器,每隔半个小时
往一个没用的群里发送一条信息。

大概实现流程如上所述,接着开始撸代码

过滤小宇宙早报的正则

对接收到的信息做正则,小宇宙的,而且是特定人发的,
遍历群发的组,调用send方法发送信息。

接着main方法调用下,会弹出一个二维码页面让你扫:

接着就可以试试发下早报了,复制了今天的小宇宙,另外建了三个群聊,
接着随便往其中的一个发小宇宙~

到此相信就没什么疑问了吧,非常简单,接着Timer写个定时器,
每个半个小时往探挽懒月群里发一条广告词

代码如下

先把时间改成10s看下结果:

可以,接下来就是把脚本丢服务器上执行了。


2.把脚本丢到服务器上运行(利用Screen命令)

不知道你还记不记得ssh连服务器执行py脚本,终端关闭后,脚本也会停止,
如果不记得可以看回之前写的:8.爬虫实战:刷某博客站点的访问量
那里调用的是nohup命令,以后台程序的方式执行我们的脚本。

评论区那里有个掘金大佬评论说可以试试screen(虚拟终端),这里就来试试~

基本用法如下

接着依旧复制下小宇宙发到群里,看是否能正常转发~

到此就完了,脚本挂着,手机微信也需要登着,坐等明天小宇宙发早报
来检验效果啦~


小结

本节试了下itchat,写了个监控小宇宙发的日报,并转发到某特定群
的小脚本,挺有意思的,当然你可以自行扩展做个机器人,比如每天
定时发车,每日一女优介绍,每日一车牌号?或者一些其他的信息,
结合后台玩起来更嗨,当然这就是后面的事了~

最后祝周末愉快~


附:最终代码(都可以在:https://github.com/coder-pig/ReptileSomething 找到):

  1. # 微信小宇宙助手
  2. import itchat
  3. from itchat.content import *
  4. import datetime
  5. import re
  6. import time
  7. from threading import Timer
  8. xyz_compile = re.compile(r'.*?小宇宙整理.*?%d月%d日.*'
  9. % (datetime.datetime.now().month, datetime.datetime.now().day), re.S)
  10. # 小宇宙日报抓取
  11. @itchat.msg_register([TEXT], isGroupChat=True)
  12. def xyz_reply(msg):
  13. group_list = [u'我是渣渣辉', u'我是轱天乐', u'探挽懒月']
  14. group_name = []
  15. for group in group_list:
  16. chat = itchat.search_chatrooms(name=group)
  17. if len(chat) > 0:
  18. group_name.append(chat[0]['UserName'])
  19. # 过滤小宇宙新闻
  20. result = xyz_compile.search(msg['Content'])
  21. if result is not None:
  22. if result.group() is not None and msg['ActualNickName'] == '十二':
  23. for group in group_name:
  24. itchat.send('%s' % (msg['Content']), toUserName=group)
  25. # 发信息
  26. def send_msg():
  27. sched_time = datetime.datetime(2018, 3, 30, 16, 30, 0)
  28. flag = 0
  29. while True:
  30. now = datetime.datetime.now()
  31. if now == sched_time < now < (sched_time + datetime.timedelta(seconds=10)):
  32. flag = 1
  33. time.sleep(1)
  34. else:
  35. if flag == 1:
  36. itchat.send('123', toUserName=u'探挽懒月')
  37. flag = 0
  38. # 每个半个小时发依次信息貌似能防止掉线
  39. def loop_send():
  40. global count
  41. itchat.send('大扎好,我系轱天乐,我四渣嘎辉,探挽懒月,介四里没有挽过的船新版本,'
  42. '挤需体验三番钟,里造会干我一样,爱像借款游戏。'
  43. , toUserName=itchat.search_chatrooms(name=u'探挽懒月')[0]['UserName'])
  44. count += 1
  45. if count < 10000:
  46. Timer(1800, loop_send).start()
  47. if __name__ == '__main__':
  48. count = 0
  49. Timer(1800, loop_send).start()
  50. itchat.auto_login(enableCmdQR=2, hotReload=True)
  51. itchat.run()

来啊,Py交易啊

想加群一起学习Py的可以加下,智障机器人小Pig,验证信息里包含:
PythonpythonpyPy加群交易屁眼 中的一个关键词即可通过;

验证通过后回复 加群 即可获得加群链接(不要把机器人玩坏了!!!)~~~
欢迎各种像我一样的Py初学者,Py大神加入,一起愉快地交流学♂习,van♂转py。


添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注