下载地址:www.pan38.com/dow/share.p… 提取密码:2881
之前给客户定制的,定制的我发现现在还能用的,这种情况下我们必须得分享到网上,让更多的人用到我们的源码,更多人学习到我们程序的一个精髓。
` import time import random import os from datetime import datetime from PIL import Image import uiautomation as auto
class WeChatMomentsAuto: def init(self): self.wechat_window = None self.max_retry = 5 self.wait_time = 2
def _find_wechat_window(self):
"""查找微信主窗口"""
for _ in range(self.max_retry):
self.wechat_window = auto.WindowControl(
searchDepth=1,
ClassName='WeChatMainWndForPC'
)
if self.wechat_window.Exists():
return True
time.sleep(self.wait_time)
return False
def _open_moments(self):
"""打开朋友圈页面"""
btn_moments = self.wechat_window.ButtonControl(
Name='朋友圈'
)
if btn_moments.Exists():
btn_moments.Click()
return True
return False
def _click_post_button(self):
"""点击发布按钮"""
btn_post = self.wechat_window.ButtonControl(
Name='发布'
)
if btn_post.Exists():
btn_post.Click()
return True
return False
def _select_images(self, image_paths):
"""选择要发布的图片"""
btn_add = self.wechat_window.ButtonControl(
Name='添加图片'
)
if btn_add.Exists():
btn_add.Click()
time.sleep(1)
# 打开文件选择对话框
file_dialog = auto.WindowControl(
searchDepth=1,
ClassName='#32770'
)
if file_dialog.Exists():
# 输入图片路径
edit_path = file_dialog.EditControl(
searchDepth=4,
Name='文件名:'
)
for img_path in image_paths:
edit_path.SendKeys(img_path)
time.sleep(0.5)
edit_path.SendKeys('{Enter}')
time.sleep(1)
# 点击打开按钮
btn_open = file_dialog.ButtonControl(
Name='打开(O)'
)
if btn_open.Exists():
btn_open.Click()
return True
return False
def _input_text(self, content):
"""输入朋友圈文字内容"""
edit_content = self.wechat_window.EditControl(
Name='这一刻的想法...'
)
if edit_content.Exists():
edit_content.SendKeys(content)
return True
return False
def _post_moments(self):
"""点击发布按钮"""
btn_send = self.wechat_window.ButtonControl(
Name='发表'
)
if btn_send.Exists():
btn_send.Click()
return True
return False
def post_moments(self, content, image_paths=None):
"""
发布朋友圈
:param content: 文字内容
:param image_paths: 图片路径列表
:return: bool 是否发布成功
"""
if not self._find_wechat_window():
print("找不到微信窗口")
return False
if not self._open_moments():
print("无法打开朋友圈")
return False
time.sleep(2)
if not self._click_post_button():
print("无法点击发布按钮")
return False
time.sleep(1)
if image_paths and len(image_paths) > 0:
if not self._select_images(image_paths):
print("无法选择图片")
return False
time.sleep(1)
if not self._input_text(content):
print("无法输入文字内容")
return False
time.sleep(1)
if not self._post_moments():
print("无法点击发表按钮")
return False
print("朋友圈发布成功")
return True
def main(): auto_poster = WeChatMomentsAuto()
# 示例内容
content = "这是自动发布的朋友圈测试 - " + datetime.now().strftime("%Y-%m-%d %H:%M:%S")
# 示例图片路径(需要替换为实际存在的图片)
image_paths = [
r"C:\Users\Public\Pictures\Sample Pictures\Chrysanthemum.jpg",
r"C:\Users\Public\Pictures\Sample Pictures\Penguins.jpg"
]
# 发布朋友圈
success = auto_poster.post_moments(content, image_paths)
if success:
print("朋友圈自动发布成功")
else:
print("朋友圈自动发布失败")
if name == "main": main() `