论坛求助最新回复提醒
互助团队月度奖(九月份)颁奖帖https://fishc.com.cn/thread-183543-1-1.html
觉得一直在线很无聊?又没刷到新回复的帖子?试试下面这个吧
10秒刷新一次论坛(觉得太频繁的话,可以自行修改时间),有新回复的帖子,会弹窗,播放音乐
import requests
from bs4 import BeautifulSoup
import time
import tkinter as tk
from tkinter import messagebox
import pygame
import threading
import webbrowser
class Watch_html(tk.Tk):
def __init__(self):
super().__init__()
self.url = 'https://fishc.com.cn/forum.php?mod=forumdisplay&fid=173&filter=typeid&typeid=392'
self.headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36 Edg/86.0.622.56'}
self.result = ['', '']
self.link = ''
self.music_file = '提示.wav'# 音乐文件路径
self.main_run()
def Get_response(self):
response = requests.get(url=self.url, headers=self.headers)
html_str = response.content.decode('gbk')
return html_str
def Get_data(self, html_str):
soup = BeautifulSoup(html_str, 'lxml')
data = soup.find('table', id='threadlisttableid')# 所有主题的列表tags
data = data.contents# 按照主题tbody的平行标签,查找第一个主题
data_name = data.th.contents.text# 帖子主题
data_link = data.th.contents['href']# 帖子链接
return data_name, data_link
def run(self):#获取帖子的程序
self.start_button['text']='已启动'#设置为已启动,显示状态
self.start_button.config(state=tk.DISABLED)#设置禁用状态
#计数程序
self.tk_var_num = tk.StringVar()
self.ctr = 0
#self.tk_var_num.set("0")
self.label_txt_num = tk.Label(self.frame,textvariable=self.tk_var_num)
self.label_txt_num.pack()
self.updater()
pygame.mixer.init()# 初始化音乐播放
pygame.mixer.music.load(self.music_file)
html_str = self.Get_response()
self.result, self.link = self.Get_data(html_str)# 获取第一次主题
while True:# 循环获取
time.sleep(10)# 设置循环刷新间隔
html_str = self.Get_response()
self.result, self.link = self.Get_data(html_str)# 获取新主题
print(self.result)
if self.result != self.result:# 将获取的主题做对比
pygame.mixer.music.play(-1, 0)
messagebox.showinfo('提示', '有新回复的帖子')
pygame.mixer.music.stop()
self.tk_var2.set(f'帖子主题为:{self.result}')
self.tk_var3.set(f'帖子链接为:{self.link}')
self.result = self.result# 将第一个主题重新赋值
@staticmethod
def thread_it(func, *args):
'''将函数打包进线程'''
t = threading.Thread(target=func, args=args)
t.setDaemon(True)
t.start()
def open_url(self, event):# 此处必须注意,绑定的事件函数中必须要包含event参数
webbrowser.open(self.link, new=0)
def open_url_1(self, event):# 此处必须注意,绑定的事件函数中必须要包含event参数
url = 'https://fishc.com.cn/forum.php?mod=forumdisplay&fid=173&filter=typeid&typeid=392'
webbrowser.open(url, new=0)
def updater(self):#计数程序
if self.ctr < 10:
self.ctr += 1
self.tk_var_num.set(str(self.ctr))
self.after(1000, self.updater)
else:
self.ctr = 0
self.ctr += 1
self.tk_var_num.set(str(self.ctr))
self.after(1000, self.updater)
def main_run(self):#运行主程序
self.title('论坛新回复贴监控')# 定义顶层窗口的标题
self.frame = tk.Frame(self)# 建立框架frame,并把顶层窗口传进去
self.frame.pack(side=tk.LEFT, padx=60, pady=60)# 框架的自定义边框
self.tk_var1 = tk.StringVar()
self.tk_var1.set(f'鱼C论坛-python交流-问题求助')
self.label_txt1 = tk.Label(self.frame, textvariable=self.tk_var1)
self.label_txt1.pack()
self.label_txt1.bind("<Button-1>", self.open_url_1)# 绑定label单击事件
self.start_button = tk.Button(self.frame, height=3, width=10, text='启动', command=lambda: self.thread_it(self.run))
self.start_button.pack()
self.tk_var2 = tk.StringVar()
self.label_txt2 = tk.Label(self.frame,
textvariable=self.tk_var2,
wraplength=200,# 指定多行的对齐方式
justify='left'# 指定多行的对齐方式
)
self.label_txt2.pack()
self.tk_var3 = tk.StringVar()
self.label_txt3 = tk.Label(self.frame,
textvariable=self.tk_var3,
wraplength=200,# 指定多行的对齐方式
justify='left'# 指定多行的对齐方式
)
self.label_txt3.pack()
self.label_txt3.bind("<Button-1>", self.open_url)# 绑定label单击事件
if __name__ == '__main__':
watch_html = Watch_html()
watch_html.mainloop()
注:音乐要改成本地音乐,需要pyinstaller的话要用wav格式的 这是要做专业回答问题的节奏呀 风过无痕1989 发表于 2020-10-31 13:07
这是要做专业回答问题的节奏呀
{:10_256:}给需要做专业回答问题的选手看的。。。。。。。 这个可以有 这个必须有!
虽然我也是业余…… weiter 发表于 2020-10-31 13:42
这个必须有!
虽然我也是业余……
{:10_256:}都是业余的 hrp 发表于 2020-10-31 13:37
这个可以有
简单小程序,随时关注论坛{:10_256:} 小可爱. 发表于 2020-10-31 14:29
好厉害呀这么怎么搞呀
简单的程序,代码在上面,自己看看呗 我也做过,(看我的日志)
https://fishc.com.cn/blog-566159-5875.html liuzhengyuan 发表于 2020-11-3 18:30
我也做过,(看我的日志)
https://fishc.com.cn/blog-566159-5875.html
嗯,类似的,你这还有回答数和时间,我就简单的判断了是否新回复 赶超 sun 大佬? LuLD 发表于 2020-11-6 16:11
赶超 sun 大佬?
应该是赶超zltzlt大佬{:10_256:} LuLD 发表于 2020-11-6 16:11
赶超 sun 大佬?
{:10_284:}这怎么赶超。。。。。。。。。。。。。没本法超越
页:
[1]