目录

前言:

微信接龙:

腾讯会议:


前言:

这是我的第一篇博客,看到一个视频,推荐写写博客来验证所学,觉得很有道理,就来写一个.

这两个脚本是我的处女作,还有很多不完善的地方,但重点是能跑.....

系统是win11

微信接龙:

我使用的wxauto库,pip install wxauto就行,不过需要注意微信版本,可以看下面链接去比对版本.wxauto:文档、社区、教程、评论|开放底座 (openbase.com)https://openbase.com/python/wxauto

首先导入wxauto库(下文关于微信的操作有个前提,就是你的微信客户端要处于打开状态,不能最小化)

from wxauto import *

创建微信对象....就跟下边写的一样,注释很清楚

wx = WeChat()  # 获取微信对象wx.GetSessionList()  # 获取聊天列表wx.ChatWith("草草草")  # 打开指定聊天,改这里msgs = wx.GetAllMessage  # 获取指定聊天框内当前显示的聊天记录

我事先给要用到的变量在文件开头都声明了一下,免得出问题,这里的循环是从先前读取的聊天记录中最新一条往前循环,因为微信接龙消息中必须要有"#接龙"的字眼,所以可以通过.find()来返回字符串下标,若不存在则返回-1,可以通过这个方法判断是否是我们想要的接龙消息.

其中的lastMessage[1]是因为wx.GetAllMessage返回的是一个元组,下标1对应的是聊天消息本身,其他两个一个是名字,另一个不记得.(我好像在哪看着有人说wxauto读取聊天记录读到拍一拍就会出问题,不过无伤大雅)

# 检测接龙
for lastMessage in msgs[::-1]:if str(lastMessage).find("#接龙") >= 0:message = lastMessage[1]  # 循环抓取接龙消息break

现在拿到了字符串类型的接龙消息,目光可以对准这条消息来修改了.我一开始的思路是继续使用判断指定字符串来判断序号是否存在,从50到1循环,循环到了就可以将当前循环的数字+1,再在其后添加名字输出

不过这里出现了问题,如果接龙内容光接名字还好,但是如果会带上班级,比如2202,就寄了.

假如当前接龙只接到了15,脚本本该循环到15之后+1,输出16.某某某,但是在循环到22时检测到了名字前面的2202,那可太刺激了,直接接龙从15跳到了23,回头老师就得记你小本本.

我想了半天没想出辙来,整了个傻子招,只检测50-23的数字,成功就输出,不成功就sleep()睡上一两分钟再循环一波,倒也不是不行.

这时我的好兄弟跟我说,接龙的序号后边一定会有个.(这就是个点,前面本该出现句号的位置出现点是因为我把输入法改成了仅限英文,不想换回来就这样罢)

我精神大振,思路开了!

循环,"接龙序号."!找这个!一切问题迎刃而解!

​
num = 50
while True:  # 循环,获取接龙的序号if message.find(str(num) + ".") > 0:nums = num + 1breakelse:num -= 1

这样,我们就得到了接龙序号,接下来只需要将我们获取的接龙消息{message},接龙序号{nums},只需要将这些内容组合起来,使用下图的第一行代码复制到剪切板上,再用第二行代码再当前聊天栏输出即可!

注:这里的nums是我把前文的num转成了str后存在了一个新的变量中

    wxauto.WxUtils.SetClipboard(message + f"\n{nums}. 2202名字")wx.SendClipboard()

后来,保险起见,我又添了一个功能,先别找序号,先去找有没有咱的名,万一周末早八,都还在梦乡中,咱这冷不丁来给接个龙,那可不坏事了,所以就先判断接龙消息中是否存在咱的名,要是存在就直接别签,给我滚粗.修改后的代码如下:

# 如果出现名字则直接离开
if message.find("名字") < 0:while True:  # 循环,获取接龙的序号if message.find(str(num) + ".") > 0:nums = num + 1breakelse:num -= 1

最后就是定时问题了,我起初是想用微软自带的任务计划程序来完成这个事情,但是奈何这东西我用起来不好用啊,搞不明白为什么我只要勾上图上所示的"不管用户是否登录都要运行",它就会一点反应都没有,勾别的完全没问题

"一点反应都没有"是指它既不启动也不报错,哦对,既然说到启动,那么得提一嘴,.py文件是不能直接启动的,如果想要用脚本特意去打开pycharm还会显得很弱智,所以我们需要写一个.bat来辅助打开.py,怎么写呢,

就是你新建一个txt,在里边输入"python 你的文件名.py", 保存退出, 后缀改成.bat, 然后把这.bat和它里面写的python文件塞一块就行.

说回任务计划程序,它如果不勾"不管用户是否登录都要运行" 就会只在亮屏时运行,息屏后也会照常启动,但是必须要在你输完开机密码后才能运行.那就没用了啊 !我研究了挺长时间,没玩明白, 如果能用那会省很多事,介于我不能用,所以我就干脆给脚本加了个计时,比如说要早晨八点签到,那就整一个判断是否到了8*60分钟,没到就睡三分钟循环,电脑就找了一个古董电脑,直接不关了,每天晚上挂脚本,机器永不睡眠,电脑套个纸箱放一边,好兄弟熬了大半夜废了九牛二虎之力给这32位的电脑装上了环境,

from datetime import datetime  # 导入datetime用来计时
def go():#  获取了时钟分钟,并且全部转换为分钟,返回int类型的分钟hours = datetime.now().strftime("%H")minutes = datetime.now().strftime("%M")sumNumber = int(hours) * 60 + int(minutes)print(myTime(), "\t" f"hours={hours},minutes={minutes},sumNumber={sumNumber}")return int(sumNumber)

中间修修改改的次数很多,可以和上文有一定的不一,但这主要是提供一个思路,以及记录曾经的过往.最终的代码如下(import time删了就行,没用上)

# -*- coding:utf-8 -*-
import time
from pyautogui import *from wxauto import *
from datetime import datetimewx = WeChat()def myTime():"""该函数可以用于获取当前时间:return: string:当前时间"""nowTime = datetime.now().strftime("%Y-%m-%d %H:%M:%S")return nowTimemessage = ""
nums = ""
num = 50def go():hours = datetime.now().strftime("%H")minutes = datetime.now().strftime("%M")sumNumber = int(hours) * 60 + int(minutes)print(myTime(), "\t" f"hours={hours},minutes={minutes},sumNumber={sumNumber}")return int(sumNumber)while True:sumNumber = go()if 465 <= int(sumNumber) <= 490:sumNumber = go()wx = WeChat()  # 获取微信对象wx.GetSessionList()  # 获取聊天列表wx.ChatWith("*******")  # 打开指定聊天,改这里msgs = wx.GetAllMessage  # 获取指定聊天框内当前显示的聊天记录print(f"{myTime()},get message succeed!")# 检测接龙for lastMessage in msgs[::-1]:if str(lastMessage).find("#接龙") >= 0:message = lastMessage[1]  # 循环抓取接龙消息print(f"{myTime()},get #接龙 message succeed,{message}")break# 如果出现名字则直接离开if message.find("名字") < 0:while True:  # 循环,获取接龙的序号if message.find(str(num) + ".") > 0:print(f"{myTime()},num = {num}, Index = {num + 1}")nums = num + 1breakelse:num -= 1wxauto.WxUtils.SetClipboard(message + f"\n{nums}. 2202名字")print(f"{myTime()},get Clipboard succeed")wx.SendClipboard()print(f"{myTime()},send succeed!")click(x=1049, y=63)time.sleep(300)

如果是纯纯纯萌新,那看了我上面的一片之后应该看这个不成问题, 如果是大佬的话,真*献丑了...

腾讯会议:

腾讯会议上网课那可太弱智了,因为我没找到什么可以直接对着腾讯会议开干的第三方库,所以干脆pyautogui操控键鼠一顿点点点(我好像看过大佬说可以使用一些什么视觉识别来搞,比较高大上,但是我不会)

pyautogui同样,在终端控制台上pip install pyautogui ,更多细节操作可以看这位大佬的文章(12条消息) pyautogui自动化控制鼠标和键盘操作_灵动的艺术的博客-CSDN博客_pyautoguihttps://blog.csdn.net/weixin_43430036/article/details/84650938

from pyautogui import *

导入之后就是使用这行代码来测鼠标位置,因为腾讯会议每次打开位置都会刷新,所以可以放心调

x, y = position()
print(x, y)

接下来的操作就是:

鼠标放在腾讯会议快捷方式上,alt + table切换回pycharm, ctrl + shift + F10运行脚本,把控制台上输出的位置记录下来,然后下一个,循环往复,

没有任何技术含量的操作,核心要点就是接下来几段代码:

# 这行代码是单击指定坐标
click(x=111,y=122)
# 这行代码是键入指定字符串,第二个参数是每个字符输入的间隔
typewrite(message="", interval=0.1)
# 这行代码是敲击键盘特定键
press("enter")
# 这行代码是睡眠(单位秒)
sleep(120)

我的建议是把这打开腾讯会议的步骤写成一个方法,主要原因还是因为**微软的任务计划程序不能用,我就还得另计时,同样改成分钟来判断,比如8:20上课就是20+8*60,当前时间大于等于这个点就开始执行方法,(方法的第一行可以把鼠标在关闭会议的地方点一个,毕竟一天不可能就只有一节课),等方法执行完就让他睡眠一堂课的时间,等睡醒再继续循环判断当前时间是否到达下一节课的时间

我也曾想过关于签到打卡之类的事,但是我真的技术有限,有能力后可以给整个可视化界面,搞成个exe造福朋友圈.

同样,源码如下,记录我和好兄弟那几日的不断奋斗(源码里有很多没用的废话,甚至我可以说它就是一坨屎,但是如果把废话全删掉....还是一坨屎,一坨没眼看的屎) :

# -*- coding=utf-8 -*-
from pyautogui import *
from datetime import datetime
from overvx import *x, y = position()
print(x, y)def sign(meetingNumber: str):"""需要给出腾讯会议的房间号作为参数:param meetingNumber: 会议号:return: 无"""click(x=1145, y=59)  # 关闭会议sleep(5)click(x=762, y=408)  # 确认sleep(5)# join the meeting set, position=789, 280click(x=539, y=165)  # 加入会议sleep(5)click(x=828, y=62)  # 最小化sleep(5)click(x=536, y=183)  # 输入会议号# import meetingNumbersleep(2)typewrite(message=meetingNumber, interval=0.1)sleep(5)click(x=529, y=388)  # 勾掉"入会开启麦克风"sleep(5)click(x=532, y=330)  # 勾掉开启音频sleep(5)# joinpress("enter")sleep(120)# hotkey("alt", "m")weeks = datetime.now().strftime("%A")def action():hours = datetime.now().strftime("%H")minutes = datetime.now().strftime("%M")sumNumber = int(hours) * 60 + int(minutes)print(myTime(), "\t" f"hours={hours},minutes={minutes},sumNumber={sumNumber},当前的limit_of_time={limit_of_time}")return int(sumNumber)time1 = "08:18"  # 498
over1 = "09:45"  # 585
time2 = "09:58"  # 598
over2 = "11:25"  # 685
time3 = "12:58"  # 778
over3 = "14:20"  # 860
time4 = "14:33"  # 873
over4 = "15:55"  # 955
limit_of_time = 0while True:weeks = datetime.now().strftime("%A")if weeks == "Monday":limit_of_time = 0print("进入循环,周一")sumNumber = action()if 498 <= sumNumber <= 585:if limit_of_time == 0:print(myTime() + f"开始上周一上午第一节英语,limit_of_time={limit_of_time},开始睡眠,预计将在{sumNumber + 87}苏醒")sign("8786998539")  # 周一上午第一节英语sleep(5220)limit_of_time += 1if 598 <= sumNumber <= 685:if limit_of_time <= 1:print(myTime() + f"开始上周一上午第二节民法,limit_of_time={limit_of_time},开始睡眠,预计将在{sumNumber + 87}苏醒")sign("73713214298")  # 周一上午第二节民法sleep(5220)limit_of_time += 1if 873 <= sumNumber <= 955:if limit_of_time <= 2:print(myTime() + f"开始上周一下午第一节民法,limit_of_time={limit_of_time},开始睡眠,预计将在{sumNumber + 82}苏醒")sign("96627959698")  # 周一下午第一节民法sleep(4920)limit_of_time += 1print(f"{myTime()},脱离周一循环")# sleep(120)  # 单位秒elif weeks == "Tuesday":limit_of_time = 0print("进入循环,周二")sumNumber = action()if 598 <= sumNumber <= 685:if limit_of_time == 0:print(myTime() + f"开始上周二上午第二节道法,limit_of_time={limit_of_time},本节课不需要登录腾讯会议,开始睡眠,预计将在{sumNumber + 87}苏醒")# 上午第二节道法sleep(5220)limit_of_time += 1if 778 <= sumNumber <= 860:if limit_of_time <= 1:print(myTime() + f"开始上周二下午第一节视听,limit_of_time={limit_of_time},开始睡眠,预计将在{sumNumber + 82}苏醒")sign("4551453138")  # 下午第一节视听sleep(4920)limit_of_time += 1print(f"{myTime()},脱离周二循环")# sleep(120)elif weeks == "Wednesday":limit_of_time = 0print("进入循环,周三")sumNumber = action()if 498 <= sumNumber <= 585:if limit_of_time == 0:print(myTime() + f"开始上周三上午第一节信息,limit_of_time={limit_of_time},本节课不需要登录腾讯会议,开始睡眠,预计将在{sumNumber + 87}苏醒")# sign("97018438")  # 周一上午第一节信息sleep(5220)limit_of_time += 1if 598 <= sumNumber <= 685:if limit_of_time <= 1:print(myTime() + f"开始上周三上午第二节体育,limit_of_time={limit_of_time},本节课不需要登录腾讯会议,开始睡眠,预计将在{sumNumber + 87}苏醒")# 周一上午第二节体育sleep(5220)limit_of_time += 1if 778 <= sumNumber <= 860:if limit_of_time <= 2:print(myTime() + f"开始上周三下午第一节中华传统文化,limit_of_time={limit_of_time},开始睡眠,预计将在{sumNumber + 82}苏醒")sign("80574557409")  # 下午第一节中华传统文化sleep(4920)limit_of_time += 1if 873 <= sumNumber <= 955:if limit_of_time <= 3:print(myTime() + f"开始上周三下午第二节信息,limit_of_time={limit_of_time},本节课不需要登录腾讯会议,开始睡眠,预计将在{sumNumber + 82}苏醒")# sign("97018438")  # 下午第二节信息sleep(4920)limit_of_time += 1print(f"{myTime()},脱离周三循环")# sleep(120)elif weeks == "Thursday":limit_of_time = 0print("进入循环,周四")sumNumber = action()if 498 <= sumNumber <= 585:if limit_of_time == 0:print(myTime() + f"开始上周四上午第一节英语,limit_of_time={limit_of_time},开始睡眠,预计将在{sumNumber + 87}苏醒")sign("8786998539")  # 周一上午第一节英语sleep(5220)limit_of_time += 1if 778 <= sumNumber <= 860:if limit_of_time <= 1:print(myTime() + f"开始上周四下午第一节视听,limit_of_time={limit_of_time},开始睡眠,预计将在{sumNumber + 82}苏醒")sign("68014439420")  # 下午第一节视听sleep(4920)limit_of_time += 1print(f"{myTime()},脱离周四循环")# sleep(120)elif weeks == "Friday":limit_of_time = 0print("进入循环,周五")sumNumber = action()if 498 <= sumNumber <= 585:if limit_of_time == 0:print(myTime() + f"开始上周五上午第一节中处,limit_of_time={limit_of_time},开始睡眠,预计将在{sumNumber + 87}苏醒")sign("84965262308")  # 上午第一节中处sleep(5220)limit_of_time += 1if 598 <= sumNumber <= 685:if limit_of_time <= 1:print(myTime() + f"开始上周五上午第二节道法,limit_of_time={limit_of_time},本节课不需要登录腾讯会议,开始睡眠,预计将在{sumNumber + 87}苏醒")# 上午第二节道法sleep(5220)limit_of_time += 1print(f"{myTime()},脱离周五循环")# sleep(120)sleep(120)
# Monday :      英语 08:20 - 09:45 8786998539
#               民法 10:00 - 11:25 73713214298
#               民法 14:35 - 15:55 96627959698
# Tuesday:      思想 10:00 - 11:25 无
#               视听 13:00 - 14:20 4551453138
# Wednesday:    信息 08:20 - 09:45 97018438
#               体育 10:00 - 11:25 无
#               中华 13:00 - 14:20 80574557409
#               信息 14:35 - 15:55 97018438
# Thursday      英语 08:20 - 09:45 8786998539
#               法导 13:00 - 14:20 68014439420
# Friday        中处 08:20 - 09:45 84965262308
#               道法 10:00 - 11:25 无

001,Python微信接龙脚本与腾讯会议定时挂网课脚本相关推荐

  1. python微信接龙转Excel表格

    PyQT5下将微信接龙String转成Excel Python文字处理 文字切割 电话号码提取 生成excel表格 结果 软件截图 工具连接 20210819分割线.... 新需求 方案1 方案2 可 ...

  2. Python微信跳一跳自动化脚本

    Python微信跳一跳自动化脚本 前言 准备 模块及版本 思路与流程 详细步骤 总结 前言 这是我在CSDN上的第一篇文章,以后会陆续记录我的学习生涯,希望我的知识能帮助到更多的朋友~ 准备 这篇将详 ...

  3. python实现微信接龙统计

    前一段时间,因为工作的需要需要做一个有关微信小程序接龙的统计工作,由于一个一个人名进行排查相对来说比较麻烦,于是想是否可以通过计算机帮忙实现自动统计的功能,于是便通过编写相关代码试试能否自动完成相应的 ...

  4. python微信跳一跳小游戏刷分

    iOS #python 微信跳一跳小游戏刷分 首先我们安装Facebook的WebDriverAgent,这是一款新的iOS移动测试框架 在GitHub上找到https://github.com/fa ...

  5. python 微信bot_使用Python创建Twitter Bot

    python 微信bot Have you ever wantd to create a Twitter bot? In this tutorial John G. Fisher shows how ...

  6. python 微信bot_使用Tweepy在Python中创建Twitter Bot

    python 微信bot by Lucas Kohorst 卢卡斯·科斯特(Lucas Kohorst) 使用Tweepy在Python中创建Twitter Bot (Create a Twitter ...

  7. python 微信bot_我如何创建Python Bot自动登录到强制门户

    python 微信bot by Ritvik Khanna Ritvik Khanna着 我如何创建Python Bot自动登录到强制门户 (How I created a Python Bot to ...

  8. 「懒惰的美德」我用 python 写了个自动生成给文档生成索引的脚本

    我用 python 写了一个自动生成索引的脚本 简介:为了刷算法题,建了一个 GitHub仓库:PiperLiu / ACMOI_Journey,记录自己的刷题轨迹,并总结一下方法.心得.想到一个需求 ...

  9. Python微信公众号开发平台

    上大学的时候,对微信公众号开发浅尝辄止的玩了一下,感觉还是挺有意思的. //www.jb51.net/article/133677.htm后来服务器到期了,也就搁置了.由于发布web程序,使用PHP很 ...

最新文章

  1. Django+JWT实现Token认证
  2. [做题记录]AtCoder AGC做题记录
  3. plsql developer无监听程序_微信小程序支持分享到朋友圈啦!技术解读跟我来
  4. leetcode403 青蛙过河
  5. bind blz mysql_MySQ DBAL重点剖析课程 企业级MySQL系统安全与DBA运维日常事务管理 运维DBA必备宝典...
  6. python pip升级报错
  7. 『动态规划』最大子段和
  8. 2018-2019赛季多校联合新生训练赛第三场题解和补题(中石油)
  9. 模型评估——混淆矩阵confusion_matrix
  10. 涨知识:当前主流服务器操作系统的三大流派!
  11. 抽象工厂和工厂方法模式
  12. 程序人生 - 敬酒常识
  13. java数据之头尾链表
  14. 如何批量修改多个文件的后缀名?
  15. LT-mapper,LT-removert代码运行与学习
  16. Taro3.2 适配 React Native 之运行时架构详解
  17. 数据采集 - 笔记 2
  18. thinkphp配置文件设置session有效期未生效的问题
  19. 计算机网络之TCP三次握手
  20. 什么是主机安全?怎么做好主机安全?

热门文章

  1. 在计算机系统中对文件执行彻底删除,怎么让电脑删除文件时可以直接彻底进行删除...
  2. wing带你玩转自定义view系列(3)模仿微信下拉眼睛
  3. 【golang】golang使用cmd去ping网址在window和linux的区别
  4. Mybatis错误Illegal overloaded gette
  5. 图片怎样加贴纸?这些方法值得一试
  6. 小米一体化微水滴形态转轴,揭露小米MIX Fold 2的轻薄秘密
  7. 洲际酒店集团大中华区开业酒店突破600家;因美纳中国生产制造基地正式启用 | 美通企业日报...
  8. 关于某normal大学数据库登录的一个尝试
  9. 【漆天编程】MT4和MT5有什么区别?这是我见到过的最好的回答
  10. CUDA安装 + tensorflow gpu版本出现的问题:Not creating XLA devices, tf_xla_enable_xla_devices not set