最近有次在钉钉看直播,发现这个直播非常之精彩,于是情不自禁地想要为主播大佬连刷一波赞:

但我发现,手动连击点赞速度十分不可观。气人的是,钉钉直播不能长按刷赞!这让我很恼怒。心中满怀的激动和兴奋以及对大佬的崇高的敬意无法尽情表达,于是我一拍桌子,好,写个脚本来 刷赞 表示敬意!古有怀怒未发,休祲降于天,今有难以点赞,拍桌写代码

(我这一言难尽的文学素养……)

话不多说,马上开始!

钉钉点赞程序

这个简单的程序只需要用到一个库:pyautogui

进入 cmd 命令行,安装库:

pip install pyautogui

然后在代码里导入库:

import pyautogui as pg

接下来做一个设置,设置操作间隔时间

pg.PAUSE = 0.01 # 设置操作间隔时间

这样,程序每点击一次点赞按钮,都会有 0.01 秒的间隔时间,防止因点击过快造成卡顿等问题。

点赞器 1.0版

首先我们要获取点赞按钮的坐标,我们可以通过 position 方法获取,我获取到的坐标是 (1568, 771):

print(pg.position()) # 打印鼠标当前坐标,返回一个 Point 对象:Point(1568, 771)

小 tip: 这个要怎么搞呢?很多编辑器都有 编译代码 快捷键(比如 IDLE 默认为F5,Sublime Text 里默认为Ctrl+B),那么我们可以将光标移到目标位置,按下 F5,即可以运行这句代码,它会输出光标此时的坐标。或者我们也可以进入 IDLE 里的交互模式,输入这句代码后,将鼠标移到目标,然后按下回车即可运行。

接下来要控制光标点击按钮。pyautogui 库实现点击操作的方法是 click:

pg.click(x, y)

  • 传入两个参数:点击位置的横坐标和纵坐标。横坐标、纵坐标我们已经知道了(这里是 1568, 771)。

接下来放上程序代码:

import pyautogui as pg

pg.PAUSE = 0.01 # 每个操作之间间隔0.01秒

#print(pg.position())

for i in range(500): # 循环点赞500次
pg.click(1568, 771) # 点击
print(i) # 打印循环次数

看看 1.0 版点赞器的效果:

(由于点赞很快,大拇指有时候会蹦不出来了,不过我们可以看到点赞量还是在蹭蹭上涨的)

点赞器 2.0版

愉快地疯狂点赞后,很快我就发现一个严重的问题:点赞 难以暂停!就像下面这样:

当我想要停止刷赞,去做做别的事情的时候,我发现鼠标根本挪不开!一移开又被强制移回来,这样体验很不好。

特别是当我尝试刷上万个赞的时候,我等得花都谢了,人都要疯掉了但是它还没点完!这让我意识到:我必须提供一个方法让用户中断点赞!

于是我对代码进行了改进,增加了一个判断:如果鼠标坐标不等于按钮坐标的话,就判定为鼠标移开,自动跳出 for 循环,停止点赞。当然,在第一次循环,也就是第一次点击前,鼠标还没移过去呢,因此我们还得排除掉这种情况。看看最新代码:

import pyautogui as pg

#print(pg.position())

pg.PAUSE = 0.01 # 每个操作之间间隔0.01秒

for i in range(500):
if i and pg.position() != (1568, 771): # 判断鼠标是否离开
print('break')
break # 跳出循环,停止点赞
pg.click(1568, 771) # 点击
print(i) # 打印循环次数

然后这是最新效果:

可以看到,在鼠标挪开之后,点赞就立刻停止了。不戳不戳。

点赞器 3.0版 ——大幅增速

我写这玩意的初衷是:方便地给大佬点赞 和 提高点赞速度。既然现在点赞很方便了,那么我就琢磨着把速度再提升一下。我将间隔时间 PAUSE 改为了 0.001,看看效果怎么样:

pg.PAUSE = 0.001 # 设置操作间隔时间

不错,不错,很快(快到已经卡住了),看看所用时间:

500个赞用了13秒。

我再试试多线程?

下面这个代码我导入了threading库,开了两个线程,试试效果怎样:

import pyautogui as pg
from threading import Thread # 多线程库 #print(pg.position()) pg.PAUSE = 0.01 # 每个操作之间间隔0.01秒 # 点赞函数
def run(n):
for i in range(250): # 由于两个线程,因此把每个线程点赞数减一半
if i > 1 and pg.position() != (1568, 771):
print('break')
break
pg.click(1568, 771)
print(i) # 两个线程
t1 = Thread(target=run, args=('t1',))
t2 = Thread(target=run, args=('t2',))
# 线程开始
t1.start()
t2.start()

看一看开两个线程的效果:

我们可以看到这已经非常快(卡到不行)了,用了多少时间?

好家伙只需要 6 秒,时间直接减半!很棒很棒针不戳!

不过我觉得我还是更愿意用回 2.0 版,因为更顺畅一些,否则,连直播界面都是卡顿的 [流泪][流泪] 没办法,电脑配置太低

所以我建议大家,尽量别开多线程来点赞。尤其不要尝试开 10000 个线程点 10000 个赞!那时候不知道你电脑还在不在……


——the End——

谢谢你的阅读!关注作者,跟作者一起学Python!

2022/2/7

别人都在认真听课,我埋头写Python为主播疯狂点点点点点赞!的更多相关文章

  1. 别人都在认真听课,而我埋头写Python为主播疯狂点点点点点赞!

    最近有次在钉钉看直播,发现这个直播非常之精彩,于是情不自禁地想要为主播大佬连刷一波赞: 但我发现,手动连击点赞速度十分不可观.气人的是,钉钉直播不能长按刷赞!这让我很恼怒.心中满怀的激动和兴奋以及对大 ...

  2. 油猴Tampermonkey 全局函数 它的注入函数都在 onload里面,直接写函数 都是内部函数,外部要是调用,就要挂靠到window上

    油猴Tampermonkey 全局函数 它的注入函数都在 onload里面,直接写函数 都是内部函数,外部要是调用,就要挂靠到window上 window.like111 = function (){ ...

  3. 程序代写, CS代写, 代码代写, CS编程代写, java代写, python代写, c++/c代写, R代写, 算法代写, web代写

    互联网一线工程师程序代写 微信联系 当天完成 查看大牛简介特色: 学霸代写,按时交付,保证原创,7*24在线服务,可加急.用心代写/辅导/帮助客户CS作业. 客户反馈与评价 服务质量:保证honor ...

  4. CS代码代写, 程序代写, java代写, python代写, c/c++代写,csdaixie,daixie,作业代写,代写

    互联网一线工程师程序代写 微信联系 当天完成特色: 互联网一线工程师 24-48小时完成.用心代写/辅导/帮助客户CS作业. 客户反馈与评价 服务质量:保证honor code,代码原创.参考课程sl ...

  5. 初学者都在坑里!不要在Python中使用“+”来连接字符串

    很多初学者都像我一样,最开始使用Python时,会不自觉地使用“+”来连接字符串,就像在许多其他编程语言(比如Java)中那样,因为这样既直观又容易. 但我很快意识到成熟的开发人员似乎更喜欢使用.jo ...

  6. 使用C/C++写Python模块

    最近看开源项目时学习了一下用C/C++写python模块,顺便把学习进行一下总结,废话少说直接开始: 环境:windows.python2.78.VS2010或MingW 1 创建VC工程 (1) 打 ...

  7. 用Emacs 写python了

    之前都是用python 自带的IDLE 写 python 的,现在换了Emacs,感觉真是不错,爽. 截图留念: 用了sr-speedbar ,顿时有了IDE 的感觉,是不是很爽. 版权声明:本文为博 ...

  8. 在html中写python代码的语法和特点-----基于webpy的httpserver

    在html文件里写python语法的内容,的注意事项: 1:python程序中的变量通过以下方法传入到html: 1:通过全局变量 :全局变量是不须要用$def with语法实现传递的,仅仅要定义了 ...

  9. 如何用VSCode愉快的写Python

    在学习Python的过程中,一直没有找到比较趁手的第三方编辑器,用的最多的还是Python自带的编辑器.由于本人用惯了宇宙第一IDE(Visual Studio),所以当Visual Studio C ...

随机推荐

  1. 【剑指Offer】二叉搜索树的第k个结点 解题报告(Python)

    [剑指Offer]二叉搜索树的第k个结点 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-intervie ...

  2. 应用程序开发 WebApp NativeApp 微信小程序

    Web    Native App  微信小程序 WebApp是指基于Web的系统和应用,其作用是向广大的最终用户发布一组复杂的内容和功能.webapp 框架是一种简单的与WSGI兼容的网络应用程序框 ...

  3. Java初学者作业——编写程序计算实发工资(实践1)

    返回本章节 返回作业目录 需求说明: 腾讯为Java工程师提供了基本工资(8000元).物价津贴及房租津贴.其中物价津贴为基本工资的40%,房屋津贴为基本工资的25%.要求编写程序计算实发工资. 实现 ...

  4. docker学习:docker容器数据卷

    是什么 docker的理念 将运用与运行的环境打包形成容器运行,运行可以伴随着容器,但是我们对数据的要求希望是持久化的 容器之间希望有可能共享数据 docker容器产生的数据,如果不通过docker ...

  5. Android8 以上使用 UIautomator Viewer提示Unexpected error while obtaining UI hierarchy报错(方法二)

    一:最常见的一个问题就是:Android8及以上的系统无法获取到页面,提示报下面的错误 二:解决办法 1.下载新的tools,在下面链接里找到SDK tools下载 http://www.androi ...

  6. Java数据类型 long 与 Long 的区别 和 正确用法

    1.区别 (1) long  是 基本类型  [类似于 int] Long 是 对象类型  [类似于Integer] (2) long 默认值是 0 Long 默认值是 null 2.比较方法 (1) ...

  7. PowerPoint2010实现折线图动态展示

    原文链接:https://www.toutiao.com/i6797629648881582596/ 我们经常会制作折线图表来表达一个过程的趋势变化,而如果让折线图动起来,会更加的生动.接下来我们将一 ...

  8. Python入门(上)

    Python入门(上) Python入门(上) 简介 Python 基础语法 行与缩进 注释 运算符 标准数据类型 变量 编程流程 顺序(略) 分支 if 循环 for while break 和 c ...

  9. Java 在PDF中添加工具提示|ToolTip

    本文,将介绍如何通过Java后端程序代码在PDF中创建工具提示.添加工具提示后,当鼠标悬停在页面上的元素时,将显示工具提示内容. 导入jar包 本次程序中使用的是 Free Spire.PDF for ...

  10. 网络协议学习笔记(九)CDN和数据中心

    概述 上一篇给大家介绍了DNS协议和HttpDns协议,现在给大家介绍一下CDN和数据中心相关的知识. CDN:你去小卖部取过快递么? 如果你去电商网站下单买个东西,这个东西一定要从电商总部的中心仓库 ...