鱼C论坛

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

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

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

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

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

x
互助团队月度奖(九月份)颁奖帖
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[5]  # 按照主题tbody的平行标签,查找第一个主题
        data_name = data.th.contents[5].text  # 帖子主题
        data_link = data.th.contents[5]['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[0], self.link = self.Get_data(html_str)  # 获取第一次主题

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

    @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格式的
171048qbq4wzd1qy0oq9oe.png.thumb.jpg

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-31 13:07:55 | 显示全部楼层
这是要做专业回答问题的节奏呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

给需要做专业回答问题的选手看的。。。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-31 13:37:08 | 显示全部楼层
这个可以有
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-31 13:42:06 | 显示全部楼层
这个必须有!
虽然我也是业余……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

都是业余的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

简单小程序,随时关注论坛
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-31 14:29:03 From FishC Mobile | 显示全部楼层
好厉害呀  这么怎么搞呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

简单的程序,代码在上面,自己看看呗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

https://fishc.com.cn/blog-566159-5875.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

嗯,类似的,你这还有回答数和时间,我就简单的判断了是否新回复
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-6 16:11:18 | 显示全部楼层
赶超 sun 大佬?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

应该是赶超zltzlt大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

这怎么赶超。。。。。。。。。。。。。没本法超越
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 01:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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