当前位置:   article > 正文

使用Python+SmsForwarder实现微信PC端通知消息_python微信pc版消息读取

python微信pc版消息读取

目录

一、目的

二、准备:

三、实现逻辑:

四、具体实现:

五、最终效果图:

        针对有全屏且任务栏设置隐藏习惯,但是隐藏任务栏后情况,在电脑上看不到微信PC端新消息的问题进行以下方案解决,前提是电脑为Win10系统,手机为安卓手机,如果不是安卓手机,则请按crtl+w或Alt+F4

一、目的

  • 实现微信PC端新消息通知弹出,对接Windows通知,实现类似Mac微信通知,如图所示:

  • 格式为 通知标题:消息发送者或群名,通知内容:具体的消息内容

  • 微信消息主窗口打开则不进行通知提醒,微信消息主窗口关闭(不是最小化)后则新消息通知

  • 最小化微信消息窗口,来新消息不提醒,win10任务栏会自动显示并且闪烁微信任务栏图标

二、准备:

三、实现逻辑:

  • SmsForwarder短信转发器监听安卓手机的微信新消息弹出,并在SmsForwarder短信转发器中配置监听规则与转发通道,将微信新消息转发到Python发布出去的端口中

  • Python编写脚本实现消息的获取和对接Windows通知API接口,将获取到的消息解析并调用通知API将消息提示出来

四、具体实现:

  • SmsForwarder短信转发器配置如下

 1、发送通道->右上角+新增->选择Webhook类型

2、通道名称随意起名,请求方式为GET,Webhook Server地址写电脑Python脚本启动后的IP地址+端口号,消息模板固定为[msg]

 

3、转发规则->右上角+新增->选择刚新建的发送通道

匹配字段:APP包名

匹配模式:

匹配的值:com.tencent.mm,也可以使用已安装列表直接搜索微信,自动会带出来匹配的值

启用自定义模板,模板内容:{{通知标题}}$$${{通知内容}},$$$这个是用来分割内容的,在Python脚本中定义好,用其他分隔符也可以,只要和Python脚本中分割字符串对应上即可

4、通用设置

转发应用通知:开启

开启启动:开启

忽略电池优化设置:开启

  • Python脚本内容如下:

  1. from flask import Flask, request
  2. from winotify import Notification
  3. import urllib.parse
  4. import win32gui
  5. import win32con
  6. app = Flask(__name__)
  7. @app.route('/') # 获取url信息
  8. def getUrlInfo():
  9. # 完整url
  10. url = request.url
  11. # 主机部分
  12. hostUrl = request.host_url
  13. # 访问路径
  14. fullPath = request.full_path
  15. # 处理空格转为+的问题
  16. fullPath = fullPath.replace('+', ' ')
  17. # 输出
  18. print('收到推送任务,推送内容是:' +
  19. str(
  20. urllib.parse.unquote(
  21. fullPath.split("/?")[1]
  22. )
  23. ).replace('+', ' ', 1)
  24. )
  25. # 接收到的内容
  26. content = str(
  27. urllib.parse.unquote(fullPath.split("/?")[1])
  28. ).replace('+', ' ', 1)
  29. hwnd = win32gui.FindWindow("WeChatMainWndForPC", u"微信")
  30. if win32gui.IsWindowVisible(hwnd):
  31. print('不推送')
  32. return "not push"
  33. else:
  34. print('推送开始')
  35. titleNameCheck = "$$$" in content
  36. if titleNameCheck == True:
  37. nickname = content.split("$$$")[0]
  38. weixinMsg = content.split("$$$")[1]
  39. else:
  40. nickname = '微信消息通知'
  41. weixinMsg = content
  42. # 开发Push通知
  43. # toaster = ToastNotifier()
  44. # toaster.show_toast(title=nickname, msg=weixinMsg,icon_path="logo.ico", duration=5)
  45. toast = Notification(
  46. app_id = "微信",
  47. title = nickname,
  48. msg = weixinMsg,
  49. icon = "D:/noticeWeChatMsg/weixin.png"
  50. )
  51. toast.show()
  52. print('推送结束')
  53. return "push ok"
  54. # def notify(hwnd, msg, wparam, lparam):
  55. # # print("notify", msg)
  56. # if lparam == win32con.WM_LBUTTONDBLCLK: # 双击左键
  57. # print("双击左键", msg)
  58. # pass
  59. # elif lparam == win32con.WM_RBUTTONUP: # 右键弹起
  60. # print("右键弹起", msg)
  61. # pass
  62. # elif lparam == win32con.WM_LBUTTONUP: # 左键弹起
  63. # print("左键弹起", msg)
  64. # pass
  65. # return True
  66. # wc = win32gui.WNDCLASS()
  67. # wc.hInstance = win32gui.GetModuleHandle(None)
  68. # wc.lpszClassName = "微信新消息通知"
  69. # wc.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW
  70. # wc.lpfnWndProc = notify
  71. # classAtom = win32gui.RegisterClass(wc)
  72. # hwnd = win32gui.CreateWindow(
  73. # classAtom,
  74. # "tst2",
  75. # win32con.WS_OVERLAPPEDWINDOW,
  76. # win32con.CW_USEDEFAULT,
  77. # win32con.CW_USEDEFAULT,
  78. # win32con.CW_USEDEFAULT,
  79. # win32con.CW_USEDEFAULT,
  80. # None,
  81. # None,
  82. # None,
  83. # None
  84. # )
  85. # notify_id = (
  86. # hwnd,
  87. # 0,
  88. # win32gui.NIF_ICON | win32gui.NIF_MESSAGE | win32gui.NIF_TIP,
  89. # win32con.WM_USER + 20,
  90. # win32gui.LoadIcon(
  91. # 0,
  92. # win32con.IDI_APPLICATION
  93. # ),
  94. # "微信新消息通知"
  95. # )
  96. # win32gui.Shell_NotifyIcon(0, notify_id)
  97. # win32gui.PumpMessages()
  98. # 在指定IP和端口开启HTTP服务
  99. if __name__ == '__main__':
  100. app.run(debug=False, host='192.168.137.1', port=9998)

  1. # 改成实际的图片存放位置这是放到D:/noticeWeChatMsg/文件夹下
  2. icon = "D:/noticeWeChatMsg/weixin.png"
  • 安装完毕Python后,在运行脚本之前需要在本地安装脚本中所依赖的第三方库,使用pip install 模块名称进行安装,例如:

pip install flask
  • 在脚本所在目录下Python执行脚本

python noticeWeChatMsg.py

启动后浏览器访问 http://192.168.137.1:9998?推送内容三生三世 可进行测试,看是否推送到Windows通知,如下图所示:

  • 电脑开启热点,手机连接电脑热点,使用转发规则进行发送测试,右下角出现通知内容则算成功

五、最终效果图:

参考文章:

Python实现Windows弹出微信消息通知(可显示发送人和消息内容)https://segmentfault.com/a/1190000042388968

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/94396
推荐阅读
相关标签
  

闽ICP备14008679号