我们提供安全,免费的手游软件下载!

安卓手机游戏下载_安卓手机软件下载_安卓手机应用免费下载-先锋下载

当前位置: 主页 > 软件教程 > 软件教程

公众号自动发布工具的实现与步骤

来源:网络 更新时间:2024-05-24 15:31:27

之前受到多位朋友的要求,希望能够提供一个公众号自动发布的工具。

现在,这个工具已经问世了。

前提条件

首先,需要下载博客自动发布工具blog-auto-publishing-tools。下载地址为: blog-auto-publishing-tools 。

公众号的实现

在使用自动发布公众号工具之前,务必确保你的公众号处于登录状态。否则,将无法自动发布公众号消息。

登录到首页

若已登录公众号,可直接访问 https://mp.weixin.qq.com/ ,将直接跳转至公众号的后台发布界面。

点击图文消息

在首页,点击“图文消息”按钮,即可开始创作。

图文消息实现较为复杂,仅能通过xpath定位该元素。

# 点击图文消息 pic_and_article_button = driver.find_element(By.XPATH, '//div[@class="new-creation__menu-item"]//div[@class="new-creation__menu-title" and contains(text(), "图文消息")]') pic_and_article_button.click() time.sleep(1)

点击后将跳转至公众号创作页面,需切换至新的tab。

# 切换到新的tab driver.switch_to.window(driver.window_handles[-1]) time.sleep(1)

输入标题

公众号标题带有title id,可直接通过id获取。

# 文章标题 title = driver.find_element(By.ID, 'title') title.clear() if 'title' in front_matter['title'] and front_matter['title']: title.send_keys(front_matter['title']) else: title.send_keys(common_config['title']) time.sleep(2) # 等待3秒

输入作者

公众号作者也有对应的author id。

这里有两种配置作者ID的方法,一种是将作者、标题、图片等信息写入markdown文件的YAML Front Matter中;另一种是在mpweixin的配置文件中设置author字段。两种方式都可行,但个人更推荐第一种。

# 文章作者 author = driver.find_element(By.ID, 'author') if 'authors' in front_matter and front_matter['authors']: author.send_keys(front_matter['authors']) else: author.send_keys(mpweixin_config['author']) time.sleep(1)

文章内容

公众号的文章内容居然是一个嵌入的iframe,因此无法像传统方式那样设置内容,只能使用拷贝粘贴的方式。另外,微信公众号不支持markdown,因此需将markdown转换为html。

Markdown转换成html格式的工具有很多,其中pandoc是其中一个比较出名的工具。

对于markdown转换成html,可使用以下命令: pandoc -f markdown -t html5 input.md -o output.html

为了使拷贝出来的样式更美观,可以添加css文件。

感兴趣的朋友可以查看convert_md_to_html方法中的具体实现。

最终的实现代码如下:

# 文章内容 html版本
content_file = common_config['content']
content_file_html = convert_md_to_html(content_file, False)
get_html_web_content(driver, content_file_html)
time.sleep(2)  # 等待2秒
driver.switch_to.window(driver.window_handles[-1])
time.sleep(1)  # 等待1秒
cmd_ctrl = Keys.COMMAND if sys.platform == 'darwin' else Keys.CONTROL
action_chains = webdriver.ActionChains(driver)
content_element = driver.find_element(By.ID, 'edui1_contentplaceholder')
ActionChains(driver).click(content_element).perform()
time.sleep(1)
action_chains.key_down(cmd_ctrl).send_keys('v').key_up(cmd_ctrl).perform()
time.sleep(3)  # 等待5秒 不需要进行图片解析

添加封面

公众号的封面添加较为复杂,目前尚未找到对应的上传标签。因此,封面添加功能尚未实现。

原创声明

通常情况下,文章都是原创的,因此已经实现了原创声明功能。

首先,需要点击原创标签:

original_statement = driver.find_element(By.ID, 'js_original')
original_statement.click()

随后在弹出的对话框中点击确认按钮:

## 点击确认按钮
confirm_button = driver.find_element(By.XPATH, '//div[@class="weui-desktop-dialog"]//div[@class="weui-desktop-btn_wrp"]//button[contains(text(), "确定")]')
confirm_button.click()

开启赞赏

只有声明原创后才能开启赞赏功能,因此将赞赏功能设置与原创声明一起。

同样地,赞赏需要点击赞赏按钮,可通过id获取:

# 赞赏
zhanshang_button = driver.find_element(By.ID, 'js_reward_setting_area')
zhanshang_button.click()

随后在弹出的对话框中,点击确认按钮:

## 点击确认按钮
confirm_button = driver.find_element(By.XPATH, '//div[@class="reward-setting-dialog__footer"]//div[@class="weui-desktop-btn_wrp"]//button[contains(text(), "确定")]')
confirm_button.click()

设置合集

接下来需要设置合集。首先找到可点击的合集区域:

tag_button = driver.find_element(By.XPATH, '//div[@id="js_article_tags_area"]//div[contains(@class,"js_article_tags_label")]/span[text()="未添加"]')
ActionChains(driver).move_to_element(tag_button).perform()
time.sleep(1)
ActionChains(driver).click(tag_button).perform()
time.sleep(1)

这里无法使用tag_button.click方法,否则将直接报错。因此,可使用ActionChains模拟鼠标的点击操作。在弹出框中,找到tag输入框,逐个输入标签,然后点击回车:

# 输入标签
tag_input = driver.find_element(By.XPATH, '//span[@class="weui-desktop-form-tag__area"]//input[@placeholder="输入后按回车分割"]')
for tag in tags:
    tag_input.send_keys(tag)
    time.sleep(1)
    tag_input.send_keys(Keys.ENTER)
    time.sleep(1)

最后,点击确认按钮:

# 点击确定按钮
confirm_button = driver.find_element(By.XPATH, '//div[@class="weui-desktop-btn_wrp"]//button[contains(text(), "确定")]')
confirm_button.click()

最后的发布

最终,到了最后的发布阶段,找到按钮并点击即可:

confirm_button = driver.find_element(By.ID, 'js_send')
confirm_button.click()

在弹出框中再次点击确认:

send_button = driver.find_element(By.XPATH, '//div[@class="weui-desktop-btn_wrp"]/button[text()="发表"]')
send_button.click()

总结

公众号的基本功能已经实现,实际上还有一些细节内容并未实现,因为通常情况下并不常用。如有需要,欢迎向我反馈。

更多精彩内容,请访问: www.flydean.com