失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 【自动化】【微信公众号】油猴 - 自动发布文章

【自动化】【微信公众号】油猴 - 自动发布文章

时间:2023-06-16 18:47:13

相关推荐

【自动化】【微信公众号】油猴 - 自动发布文章

▒ 目录 ▒

🛫 导读需求开发环境1️⃣ 键盘触发2️⃣ 设置时间3️⃣ 完整代码📖 参考资料

🛫 导读

需求

公众号文章发布,需要设置定时发布、选择发布时间、点击继续等操作,时间久了,就懒了,特此做了插件,提高效率。效果图如下:

插件编程基础知识可参考文章《【自动化】初见 - 最强浏览器开发插件 油猴Tampermonkey /kinghzking/article/details/128272180》

开发环境

1️⃣ 键盘触发

公众号可以发布今天和明天的内容,为了区分该操作,通过小键盘按键的1和2进行区分。

// day: "today" / "tomorrow"// day: 1 / 2function main(day) {// debugger;var timer_id = setInterval(function() {fabu(day, timer_id);}, 1234);}document.body.onkeyup = function (e) {e = e || window.event; //标准化事件处理var s = e.type + " " + e.keyCode; //获取键盘事件类型和按下的值console.log(s, e);switch(e.keyCode){// 获取当前按下键盘键的编码// case 0x31 : // 1case 0x61 : // 小键盘 1console.log('发布今天的')main(1)break;// case 0x32 : // 2case 0x62 : // 小键盘 2console.log('发布明天的')main(2)break;}return false}

2️⃣ 设置时间

设置时间,不能直接对元素进行赋值,这里采用了模拟点击的方式,代码如下:

function fabu_setting_qunfa(jintian_mingtian, send__timer, hour, minute) {// 今天明天按钮(两个元素的时候,才能继续执行)var dropbox_jintian_mingtian = $('.weui-desktop-form__dropdown__value');if (dropbox_jintian_mingtian.length < 2) {return false;}if (dropbox_jintian_mingtian[0].innerText != jintian_mingtian) {// dropbox_jintian_mingtian[0].innerText = jintian_mingtian;// dropbox_jintian_mingtian[0].setAttribute('title', jintian_mingtian);return false;}var send__timer__input = $('div.mass-send__timer input')if (send__timer__input.length < 2) {return false;}// 方案三:可见的元素点击// 显示出来时间选择框if($('.weui-desktop-picker__dd__time.weui-desktop-picker__dd').is(":visible") == false) {$('.weui-desktop-icon__time:visible').click();return false;}var eles_h = $('div.mass-send__timer > dl > dd > ol.weui-desktop-picker__time__panel.weui-desktop-picker__time__hour > li:nth-child(' + (hour+1) + ').weui-desktop-picker__selected:visible');var eles_m = $('div.mass-send__timer > dl > dd > ol.weui-desktop-picker__time__panel.weui-desktop-picker__time__minute > li:nth-child(' + (minute+1) + ').weui-desktop-picker__selected:visible');if (eles_h.length == 0 || eles_m.length == 0) {var eles_h = $('div.mass-send__timer > dl > dd > ol.weui-desktop-picker__time__panel.weui-desktop-picker__time__hour > li:nth-child(' + (hour+1) + '):visible');var eles_m = $('div.mass-send__timer > dl > dd > ol.weui-desktop-picker__time__panel.weui-desktop-picker__time__minute > li:nth-child(' + (minute+1) + '):visible');eles_h[0].click();eles_m[0].click();return false;}return true;}fabu_setting_qunfa('今天', '11:55', 11, 55);

3️⃣ 完整代码

其他逻辑都比较简单,通过定时器,不断检测当前状态,然后进行模拟点击完成相关操作。

// ==UserScript==// @name MpAutoPublish// @namespace /// @version0.2// @description 微信公众号自动发布插件// @author yeahMao// @match http://mp./*// @match https://mp./*// @icon /s2/favicons?domain=// @require/ajax/libs/axios/0.21.1/axios.js// @require/jquery-1.11.0.min.js// @grant GM_setValue// @grant GM_getValue// @grant GM_listValues// @grant GM_deleteValue// 红色油猴才有的权限 @grant GM_cookie// 红色油猴才有的权限 @grant unsafeWindow// 红色油猴才有的权限 @grant window// @copyright , yeahmiao (/users/yeahmiao)// @license MIT// ==/UserScript==(function() {'use strict';// 获取群发ticketfunction getticket() {Log.info('获取群发ticket');return WechatRequest({url: `${Config.api.safeassistant}?1=1&token=${getUrlParam('token')}`,form: {token: getUrlParam('token'),f: 'json',ajax: 1,random: Math.random(),action: 'get_ticket',},}).then((body) => {console.log(body)if (body.base_resp.ret === 0) {Log.info('群发ticket获取成功');return {ticket: body.ticket,operation_seq: body.operation_seq,};} else {Log.info('群发ticket获取失败');throw body;}});}// var ticket = getticket();// console.log(ticket)function fabu_setting_set_mingtian() {var _dropbox_jintian_mingtian = $('div.mass-send__timer > div > dl > div:nth-child(2) > ul > li.weui-desktop-dropdown__list-ele');if (_dropbox_jintian_mingtian.length >= 2) {_dropbox_jintian_mingtian[1].click()}}function fabu_setting_qunfa(jintian_mingtian, send__timer, hour, minute) {// 今天明天按钮(两个元素的时候,才能继续执行)var dropbox_jintian_mingtian = $('.weui-desktop-form__dropdown__value');if (dropbox_jintian_mingtian.length < 2) {return false;}if (dropbox_jintian_mingtian[0].innerText != jintian_mingtian) {// dropbox_jintian_mingtian[0].innerText = jintian_mingtian;// dropbox_jintian_mingtian[0].setAttribute('title', jintian_mingtian);return false;}var send__timer__input = $('div.mass-send__timer input')if (send__timer__input.length < 2) {return false;}// 方案三:可见的元素点击// 显示出来时间选择框if($('.weui-desktop-picker__dd__time.weui-desktop-picker__dd').is(":visible") == false) {$('.weui-desktop-icon__time:visible').click();return false;}var eles_h = $('div.mass-send__timer > dl > dd > ol.weui-desktop-picker__time__panel.weui-desktop-picker__time__hour > li:nth-child(' + (hour+1) + ').weui-desktop-picker__selected:visible');var eles_m = $('div.mass-send__timer > dl > dd > ol.weui-desktop-picker__time__panel.weui-desktop-picker__time__minute > li:nth-child(' + (minute+1) + ').weui-desktop-picker__selected:visible');if (eles_h.length == 0 || eles_m.length == 0) {var eles_h = $('div.mass-send__timer > dl > dd > ol.weui-desktop-picker__time__panel.weui-desktop-picker__time__hour > li:nth-child(' + (hour+1) + '):visible');var eles_m = $('div.mass-send__timer > dl > dd > ol.weui-desktop-picker__time__panel.weui-desktop-picker__time__minute > li:nth-child(' + (minute+1) + '):visible');eles_h[0].click();eles_m[0].click();return false;}return true;}// 0. 打开定时群发// 1. 今天还可以群发1次//设置时间为12:12// 2. 今天还可以群发0次//设置时间为12:00function fabu_setting(day) {// 0. 打开定时群发{var eles = $('.mass-send__form input.weui-desktop-switch__input');if (eles.length) {if (eles[0].checked == false) {eles[0].click()return}}}var dingshi_qunfa = $('.weui-desktop-form__control-group .weui-desktop-switch__box');if (dingshi_qunfa.length) {var dropbox_jintian_mingtian = $('.weui-desktop-form__dropdown__value');if (dropbox_jintian_mingtian.length < 2) {dingshi_qunfa[0].click();return false;}}// 元素不存在(未加载),直接返回var mass_send__footer = $('.mass-send__footer');if (mass_send__footer.length == 0) {return}var mass_send__footer_txt = mass_send__footer[0].innerText;console.log(">>> mass_send__footer_txt = ", mass_send__footer_txt);// 发布今天的if (day == 1) {if (mass_send__footer_txt.search('今天还可以群发1次') == -1) {alert('今天还可以群发0次!!! ' + mass_send__footer_txt)return false;}let d = new Date();if (d.getHours() < 11) {return fabu_setting_qunfa('今天', '11:55', 11, 55);} else if (d.getHours() < 18) {return fabu_setting_qunfa('今天', '18:18', 18, 18);} else {return true;}}// 发布明天的else if (day == 2) {if (mass_send__footer_txt.search('今天还可以群发') != -1) {fabu_setting_set_mingtian();return false;} else if (mass_send__footer_txt.search('明天还可以群发0次') != -1) {alert('明天还可以群发0次!!! ' + mass_send__footer_txt)} else if (mass_send__footer_txt.search('明天还可以群发1次') != -1) {console.log(">>> 明天还可以群发1次");return fabu_setting_qunfa('明天', '11:58', 11, 58);} else {alert('未知内容:' + mass_send__footer_txt)}}return false;}function getContinueSend() {var ret = null;var btns = $('.weui-desktop-dialog__ft button');for (var i = 0; i < btns.length; ++i) {var btn = btns[i];console.log(btn)}}// getContinueSend()function fabu(day, timer_id) {// 取消选中《文中广告智能插入》var js_auto_insert_ad = $('.js_auto_insert_ad')if (js_auto_insert_ad.length == 0) {alert('【失败】 取消选中《文中广告智能插入》');clearInterval(timer_id);return;} else {if (js_auto_insert_ad[0].checked) {js_auto_insert_ad[0].click();}}var mass_send__footer = $('.mass-send__footer');var jixu_qunfa = $('div > div:nth-child(2) > div.weui-desktop-dialog__wrp > div > div.weui-desktop-dialog__ft > div > div:nth-child(1) > button');var wechat_yanzheng = $('body > div.dialog_wrp.ui-draggable > div > div.dialog_hd > h3');if (wechat_yanzheng.length && $(wechat_yanzheng[0]).is(":visible")) {console.log(">>> 微信验证");// 微信验证:清理定时器clearInterval(timer_id);throw(-1);}else if (jixu_qunfa.length && $(jixu_qunfa[0]).is(":visible")) {console.log(">>> 继续群发");jixu_qunfa.click()clearInterval(timer_id);}else if (mass_send__footer.length && $(mass_send__footer).is(":visible")) {console.log(">>> 设置页面");// 如果设置完成了,执行点击《群发》按钮if (fabu_setting(day)) {// 立即发送var btn_qunfa = $('div.weui-desktop-dialog__ft > div > div.weui-desktop-popover__wrp > div > button');btn_qunfa.click();}}else {console.log(">>> 保存并群发");$('#js_send').click()}}// day: "today" / "tomorrow"// day: 1 / 2function main(day) {// debugger;var timer_id = setInterval(function() {fabu(day, timer_id);}, 1234);}document.body.onkeyup = function (e) {e = e || window.event; //标准化事件处理var s = e.type + " " + e.keyCode; //获取键盘事件类型和按下的值console.log(s, e);switch(e.keyCode){// 获取当前按下键盘键的编码// case 0x31 : // 1case 0x61 : // 小键盘 1console.log('发布今天的')main(1)break;// case 0x32 : // 2case 0x62 : // 小键盘 2console.log('发布明天的')main(2)break;}return false}})();

📖 参考资料

【自动化】初见 - 最强浏览器开发插件 油猴Tampermonkey /kinghzking/article/details/128272180

**ps:**文章中内容仅用于技术交流,请勿用于违规违法行为。

如果觉得《【自动化】【微信公众号】油猴 - 自动发布文章》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。