鱼C论坛

 找回密码
 立即注册
查看: 3350|回复: 13

[技术交流] 论坛求助最新回复提醒

[复制链接]
发表于 2020-10-31 13:03:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
互助团队月度奖(九月份)颁奖帖
https://fishc.com.cn/thread-183543-1-1.html

觉得一直在线很无聊?又没刷到新回复的帖子?试试下面这个吧
10秒刷新一次论坛(觉得太频繁的话,可以自行修改时间),有新回复的帖子,会弹窗,播放音乐

  1. import requests
  2. from bs4 import BeautifulSoup
  3. import time
  4. import tkinter as tk
  5. from tkinter import messagebox
  6. import pygame
  7. import threading
  8. import webbrowser


  9. class Watch_html(tk.Tk):
  10.     def __init__(self):
  11.         super().__init__()
  12.         self.url = 'https://fishc.com.cn/forum.php?mod=forumdisplay&fid=173&filter=typeid&typeid=392'
  13.         self.headers = {
  14.             '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'}
  15.         self.result = ['', '']
  16.         self.link = ''
  17.         self.music_file = '提示.wav'  # 音乐文件路径
  18.         self.main_run()

  19.     def Get_response(self):
  20.         response = requests.get(url=self.url, headers=self.headers)
  21.         html_str = response.content.decode('gbk')
  22.         return html_str

  23.     def Get_data(self, html_str):
  24.         soup = BeautifulSoup(html_str, 'lxml')
  25.         data = soup.find('table', id='threadlisttableid')  # 所有主题的列表tags
  26.         data = data.contents[5]  # 按照主题tbody的平行标签,查找第一个主题
  27.         data_name = data.th.contents[5].text  # 帖子主题
  28.         data_link = data.th.contents[5]['href']  # 帖子链接
  29.         return data_name, data_link

  30.     def run(self):#获取帖子的程序
  31.         self.start_button['text']='已启动'#设置为已启动,显示状态
  32.         self.start_button.config(state=tk.DISABLED)#设置禁用状态
  33.         #计数程序
  34.         self.tk_var_num = tk.StringVar()
  35.         self.ctr = 0
  36.         #self.tk_var_num.set("0")
  37.         self.label_txt_num = tk.Label(self.frame,textvariable=self.tk_var_num)
  38.         self.label_txt_num.pack()
  39.         self.updater()

  40.         pygame.mixer.init()  # 初始化音乐播放
  41.         pygame.mixer.music.load(self.music_file)

  42.         html_str = self.Get_response()
  43.         self.result[0], self.link = self.Get_data(html_str)  # 获取第一次主题

  44.         while True:  # 循环获取
  45.             time.sleep(10)  # 设置循环刷新间隔
  46.             html_str = self.Get_response()
  47.             self.result[1], self.link = self.Get_data(html_str)  # 获取新主题
  48.             print(self.result)
  49.             if self.result[0] != self.result[1]:  # 将获取的主题做对比
  50.                 pygame.mixer.music.play(-1, 0)
  51.                 messagebox.showinfo('提示', '有新回复的帖子')
  52.                 pygame.mixer.music.stop()
  53.                 self.tk_var2.set(f'帖子主题为:{self.result[1]}')
  54.                 self.tk_var3.set(f'帖子链接为:{self.link}')
  55.                 self.result[0] = self.result[1]  # 将第一个主题重新赋值

  56.     @staticmethod
  57.     def thread_it(func, *args):
  58.         '''将函数打包进线程'''
  59.         t = threading.Thread(target=func, args=args)
  60.         t.setDaemon(True)
  61.         t.start()

  62.     def open_url(self, event):  # 此处必须注意,绑定的事件函数中必须要包含event参数
  63.         webbrowser.open(self.link, new=0)

  64.     def open_url_1(self, event):  # 此处必须注意,绑定的事件函数中必须要包含event参数
  65.         url = 'https://fishc.com.cn/forum.php?mod=forumdisplay&fid=173&filter=typeid&typeid=392'
  66.         webbrowser.open(url, new=0)

  67.     def updater(self):#计数程序
  68.         if self.ctr < 10:
  69.             self.ctr += 1
  70.             self.tk_var_num.set(str(self.ctr))
  71.             self.after(1000, self.updater)
  72.         else:
  73.             self.ctr = 0
  74.             self.ctr += 1
  75.             self.tk_var_num.set(str(self.ctr))
  76.             self.after(1000, self.updater)

  77.     def main_run(self):#运行主程序
  78.         self.title('论坛新回复贴监控')  # 定义顶层窗口的标题
  79.         self.frame = tk.Frame(self)  # 建立框架frame,并把顶层窗口传进去
  80.         self.frame.pack(side=tk.LEFT, padx=60, pady=60)  # 框架的自定义边框

  81.         self.tk_var1 = tk.StringVar()
  82.         self.tk_var1.set(f'鱼C论坛-python交流-问题求助')
  83.         self.label_txt1 = tk.Label(self.frame, textvariable=self.tk_var1)
  84.         self.label_txt1.pack()
  85.         self.label_txt1.bind("<Button-1>", self.open_url_1)  # 绑定label单击事件

  86.         self.start_button = tk.Button(self.frame, height=3, width=10, text='启动', command=lambda: self.thread_it(self.run))
  87.         self.start_button.pack()

  88.         self.tk_var2 = tk.StringVar()
  89.         self.label_txt2 = tk.Label(self.frame,
  90.                               textvariable=self.tk_var2,
  91.                               wraplength=200,  # 指定多行的对齐方式
  92.                               justify='left'  # 指定多行的对齐方式
  93.                               )
  94.         self.label_txt2.pack()

  95.         self.tk_var3 = tk.StringVar()
  96.         self.label_txt3 = tk.Label(self.frame,
  97.                               textvariable=self.tk_var3,
  98.                               wraplength=200,  # 指定多行的对齐方式
  99.                               justify='left'  # 指定多行的对齐方式
  100.                               )
  101.         self.label_txt3.pack()
  102.         self.label_txt3.bind("<Button-1>", self.open_url)  # 绑定label单击事件


  103. if __name__ == '__main__':
  104.     watch_html = Watch_html()
  105.     watch_html.mainloop()
复制代码


注:音乐要改成本地音乐,需要pyinstaller的话要用wav格式的
171048qbq4wzd1qy0oq9oe.png.thumb.jpg

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-10-31 13:07:55 | 显示全部楼层
这是要做专业回答问题的节奏呀
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-31 13:10:19 | 显示全部楼层
风过无痕1989 发表于 2020-10-31 13:07
这是要做专业回答问题的节奏呀

给需要做专业回答问题的选手看的。。。。。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-31 13:37:08 | 显示全部楼层
这个可以有
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-31 13:42:06 | 显示全部楼层
这个必须有!
虽然我也是业余……
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-31 13:57:17 From FishC Mobile | 显示全部楼层
weiter 发表于 2020-10-31 13:42
这个必须有!
虽然我也是业余……

都是业余的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-31 13:58:23 From FishC Mobile | 显示全部楼层
hrp 发表于 2020-10-31 13:37
这个可以有

简单小程序,随时关注论坛
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-31 14:29:03 From FishC Mobile | 显示全部楼层
好厉害呀  这么怎么搞呀
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-31 14:55:39 | 显示全部楼层
小可爱. 发表于 2020-10-31 14:29
好厉害呀  这么怎么搞呀

简单的程序,代码在上面,自己看看呗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-3 18:30:57 | 显示全部楼层
我也做过,(看我的日志)

https://fishc.com.cn/blog-566159-5875.html
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-3 18:40:44 | 显示全部楼层
liuzhengyuan 发表于 2020-11-3 18:30
我也做过,(看我的日志)

https://fishc.com.cn/blog-566159-5875.html

嗯,类似的,你这还有回答数和时间,我就简单的判断了是否新回复
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-6 16:11:18 | 显示全部楼层
赶超 sun 大佬?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-6 17:37:40 | 显示全部楼层
LuLD 发表于 2020-11-6 16:11
赶超 sun 大佬?

应该是赶超zltzlt大佬
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-6 18:38:36 | 显示全部楼层
LuLD 发表于 2020-11-6 16:11
赶超 sun 大佬?

这怎么赶超。。。。。。。。。。。。。没本法超越
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-19 08:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表