微信自动发朋友圈插件,微信自动发朋友圈工具,python仅供学习

59 阅读2分钟

下载地址: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() `