好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 fff123123 于 2023-11-30 22:33 编辑
发现快手点赞列表有几千的时候一个一个取关太麻烦了,所以想自动化取消
自动快手作品取消点赞 链接
https://wwiw.lanzouy.com/i3hTY1gg0IDA
密码:brfz
使用要求:使用edge浏览器,打开并且登录快手账号,最后进入个人主页
注意:必须只能有一个打开的的包含“快手”两个字的标签页面,否则无法识别
无反应可以看文字提示
像这样打开就可以了
最后在输入框中输入要取消点赞的作品数量
实现原理是控制鼠标点击
目前我的笔记本可以跑,如果没有反应可以重新多次尝试,或者关闭重新尝试
源码
import time
from pywinauto import Desktop, Application
import threading # 导入多线程模块
from tkinter import *
class MyApp(Tk):
"""继承Tk,创建自己的桌面应用程序类"""
def __init__(self):
"""构造函数"""
super().__init__()
self.title('Frame')
self.geometry('400x100')
# self.resizable(width=False, height=False) # 阻止Python GUI的大小调整
# 底界面
self.frame = Frame(self, bg='#90c0c0')
self.frame.pack(expand=True, fill=BOTH)
self.text_display = StringVar()
self.init_ui()
def init_ui(self):
"""初始化界面"""
frame1 = Frame(self.frame, bg='#90c0c0') # 第一行
frame2 = Frame(self.frame, bg='#90c0c0') # 第二行
frame1.pack(expand=True, fill=X)
frame2.pack(expand=True, fill=X)
self.text_display.set("先在edge浏览器打开快手并登录,下方输入取消的作品数量")
label = Label(frame1, textvariable=self.text_display, bg='#90c0c0')
label.pack(expand=True, fill="x")
entry_number = Entry(frame2)
entry_number.config(validate="key")
entry_number.pack(side=LEFT, anchor="center", expand=True, fill=BOTH, padx=5)
Button(frame2, text='确认', width=12, command=lambda: self.auto(entry_number.get())). \
pack(side=LEFT, anchor="center", expand=True, fill=BOTH, padx=5) # 搜索确认键
def auto(self, number):
try:
number = int(number)
except ValueError:
self.text_display.set("输入的不是数字")
return 0
if number < 1:
self.text_display.set("输入的数字需为正")
return 0
# 获取所有窗口
windows = Desktop(backend="uia").windows()
edge_app = None # 需要连接的软件
# 输出所有窗口的标题
for window in windows:
# print(window.window_text())
# 如果找到包含 "Microsoft Edge" 标题的窗口
if "Microsoft​ Edge" in window.window_text():
edge_window = window
edge_window.set_focus() # 将Edge浏览器窗口设为焦点
print(edge_window.handle)
# 连接到 Edge 浏览器应用程序
edge_app = Application(backend="uia").connect(handle=edge_window.handle)
break
if edge_app is None:
self.text_display.set("未打开edge浏览器")
return 0
edge_app_contain = edge_app.window()
tab_container = edge_app_contain.child_window(class_name="TabContainerImpl")
tab_items = tab_container.children(class_name="Tab", control_type="TabItem") # 返回list ControlType.Document
# print(len(tab_items))
# 遍历所有选项卡项,
t = 0
for tab_item in tab_items:
# print(type(tab_item))
if "快手" in tab_item.window_text():
# 点击找到的选项卡项
# tab_item.select() # 切换选项卡项
tab_item.click_input() # 模拟点击 click_input(coords=(100, 100))
t = 1
break
if t != 1:
self.text_display.set("未打开快手页面")
return 0
# 点击进入点赞界面
portfolio_work = edge_app_contain.child_window(class_name="pl-tab-panel", control_type="ListItem",
found_index=2)
portfolio_work.click_input()
Document = edge_app_contain.child_window(class_name="", control_type="Document")
portfolio = Document.child_window(class_name="card-link", control_type="Group", found_index=0)
portfolio.click_input()
# 等待异步加载数据 重新获取当前页面的ui
time.sleep(1)
edge_app_contain = edge_app.window()
upvote = edge_app_contain.child_window(class_name="interactive-item like-item liked", control_type="Group")
video_switch_next = edge_app_contain.child_window(class_name="switch-item video-switch-next",
control_type="Group")
while number:
number -= 1
upvote.click_input()
time.sleep(1)
upvote.click_input()
time.sleep(1)
video_switch_next.click_input()
time.sleep(1)
return 1
if __name__ == '__main__':
app = MyApp()
app.mainloop()
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|