Skip to content

一款使用Python开发的Windows桌面应用程序,专为多源消息聚合、统一管理、智能通知设计,一站式解决物联网消息、网络推送、本地事件、订阅内容等分散接收消息的问题。

License

Notifications You must be signed in to change notification settings

pmh1314520/WinMsgHub

Repository files navigation

WinMsgHub Logo

WinMsgHub

一站式消息接收 · 多源聚合 · 智能通知

Python PyQt6 Platform License Coverage


📖 项目简介

WinMsgHub 是一款基于 Python + PyQt6 开发的 Windows 桌面应用,专为多源消息聚合、统一管理、智能通知设计,一站式解决物联网消息、网络推送、本地事件、订阅内容等分散接收的问题。

无论是 MQTT 物联网消息、RSS 新闻订阅、文件变化提醒,还是剪贴板内容、系统硬件事件,WinMsgHub 都能秒级处理并以高度定制化的桌面弹窗展示,同时支持本地数据存储、消息过滤、统计分析等核心能力。

💡 为什么选择 WinMsgHub?

  • 多源全覆盖:支持8类消息源,支持添加多个消息源实例(例如:多MQTT服务器/多监控文件夹等)
  • 极致定制化:弹窗位置/动画/样式全自定义,你的弹窗你做主
  • 实时高效:秒级消息处理,配置热重载(修改立即生效,无需重启软件)
  • 安全本地化:SQLite 本地存储所有数据,还支持纯本地MQTT服务,一键启动
  • 轻量易用:软件体积极小,可最小化至系统托盘,不占用任务栏,操作界面现代化、易上手

✨ 核心特性

🔌 8大消息源全支持

📡 网络消息源

  • MQTT(支持 TLS 加密连接)
  • WebSocket 实时双向通信
  • API 定时轮询(HTTP/HTTPS)
  • Webhook 内置服务器接收推送
  • IMAP 邮件服务器实时监听

💻 本地消息源

  • RSS/Atom 博客/新闻订阅解析
  • 文件监控 文件夹/文件变化监控(增删改移)
  • 剪贴板 内容实时监控(文本/文件)

💡 所有消息源均支持多实例单独启用/禁用

🎨 高度可定制的通知弹窗

📍 位置定制 🎬 动画效果 🎨 样式自定义
8个位置可选
四角+四边
3种动画效果
滑入/淡入/缩放
支持动画速度调节
完全自定义
尺寸/透明度/颜色
字体/音效

🌟 其他核心亮点

  • 💾 消息管理:SQLite本地存储,支持关键词搜索/时间筛选/数据导出
  • 🎯 智能过滤:自定义过滤规则(包含/排除关键词),只接收重要消息
  • 📊 统计面板:实时查看消息数量/各源占比/连接状态,支持数据可视化
  • 🔔 系统托盘:最小化至托盘,支持托盘右键快捷操作/托盘消息提示
  • 热重载:所有配置修改立即生效,无需重启应用
  • 🔄 自动更新:一键检查GitHub最新版本,及时获取新功能
  • 📝 完善日志:分级日志记录(INFO/DEBUG/ERROR),方便问题排查

🖼️ 界面预览











🚀 快速开始

📋 系统要求

项目 要求
操作系统 Windows 10 64位 / Windows 11(推荐)
Python 版本 3.9 及以上(3.10/3.11 兼容性最佳)
硬件 2GB 及以上内存,100MB 及以上磁盘空间
依赖 无额外系统依赖,pip 自动安装所有Python包

📦 安装与运行

📥 点击展开 - 安装步骤

1. 克隆/下载项目到本地,进入项目根目录

cd WinMsgHub

2. 安装项目依赖(建议使用虚拟环境)

# 推荐:创建虚拟环境
python -m venv venv
venv\Scripts\activate

# 安装依赖
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

3. 运行应用(三种方式可选)

# 方式1:批处理运行(推荐,自动激活虚拟环境)
run.bat

# 方式2:直接运行(显示控制台日志)
python main.py

# 方式3:无控制台窗口运行
pythonw main.py

⚙️ 快速配置消息源

  1. 启动应用后,点击左侧导航栏「消息源配置
  2. 选择需要配置的消息源类型(如MQTT/文件监控)标签页
  3. 点击「➕ 添加」按钮,填写配置信息(带*为必填项)
  4. 点击「保存」,配置立即生效(无需重启)!

📄 配置示例:查看项目内 config/example_multi_sources.json 了解所有消息源的完整配置参数。


📱 如何将手机上的任何消息转发至WinMsgHub?(仅演示局域网转发方式)

由于本人只有Android系统的手机,以下教程仅演示如何将Android手机上的任何消息转发至电脑上的WinMsgHub,并以消息弹窗的形式在电脑上展示出来

1、开始前的准备

2、配置WinMsgHub(Windows端)

  • 点击左侧的 “本地MQTT服务”,之后点击 “启动服务” 按钮

  • 之后点击左侧的 “消息源配置”,再点击 “添加MQTT消息源” 按钮

  • 在弹出的配置界面中为这个MQTT消息源起一个名称,其它配置项保持默认

  • 点击底部的 “一键复制JSON模板”,将复制的JSON模板发送给自己的手机,让自己的手机复制好

  • 之后点击底部的 “OK” 按钮,此时WinMsgHub就配置好了

3、配置短信转发器(Android端)

  • 点击软件底部的 “发送通道”,再点右上角的 “+”,选择 “Socket”
  • 为通道随便起个 ”名称“,“服务端IP” 和 “端口” 依据 WinMsgHub 中 “本地MQTT服务” 页面中展示的 “服务地址” 进行填写
  • 往下滑,在 ”输入消息主题“ 和 ”输出消息主题“ 中填入 ”/WMH“(填入时不要加引号!)
  • 之后直接点击底部的 ”保存“ 按钮
  • 再点击底部的 ”转发规则“,在顶部你会看到支持转发 “短信消息”、“通话消息” 和 “应用通知”,接下来我以转发 “短信消息” 为例
  • 点击右上角的 “+”,选择 “发送通道” 为你刚刚新增的那个Socket通道
  • 点击 “启用自定义模板”,将之前从 WinMsgHub 复制的 “JSON模板” 粘贴进输入框中
  • 将JSON模板中的消息标题、消息内容和来源名称这三段文本删掉(引号别删)
  • 将输入位置点在 “title” 后面的空双引号中,点击底部的 “来源姓名”
  • 将输入位置点在 “content” 后面的空双引号中,点击底部的 “短信内容”
  • 将输入位置点在 “source” 后面的空双引号中,点击底部的 “来源号码”(source是可选的,可以没有这个JSON字段)
  • 最后点击最底部的 “保存” 按钮,之后手机接收到的所有短信都会被转发到 WinMsgHub 上,并以弹窗形式出现啦!

4、注意事项

  • 若长期使用,建议将 WinMsgHub “系统设置” 中的 “开机自启动” 打开,以及 “本地MQTT服务” 页面中的 “下次启动软件时自动启动MQTT服务” 勾上
  • 还有就是根据 “本地MQTT服务” 页面顶部的静态内网IP配置教学,将自己电脑的内网IP配置为静态IP

5、实测图

(还可以通过配置 WinMsgHub “弹窗设置” 中的 “智能复制设置” 实现自动提取短信通知中的 “验证码” 至系统剪贴板哦~)


📁 项目结构

采用分层架构设计(UI层/核心层/数据层/工具层),模块解耦、易扩展,便于后续新增消息源和功能。

📂 点击展开 - 完整项目结构
WinMsgHub/
├── main.py                      # 应用程序入口(初始化/启动)
├── run.bat                      # 快速运行批处理文件
├── requirements.txt             # 项目依赖清单
├── ui/                          # 【UI层】图形界面相关
│   ├── modern_main_window.py    # 主窗口布局与导航
│   ├── tray_icon.py             # 系统托盘图标与右键菜单
│   ├── notification_popup.py    # 通知弹窗核心组件
│   ├── theme_manager.py         # 主题管理(亮色/暗色/自动切换)
│   ├── svg_icons.py             # SVG图标库(手写图标,无Emoji)
│   └── pages/                   # 各功能页面
│       ├── dashboard_page.py    # 仪表盘(统计/状态)
│       ├── sources_page.py      # 消息源配置页面
│       ├── history_page.py      # 消息历史查询/导出
│       ├── popup_page.py        # 弹窗样式/动画配置
│       ├── local_mqtt_page.py   # 本地MQTT服务管理
│       ├── scheduler_page.py    # 定时任务管理
│       ├── settings_page.py     # 系统通用设置
│       └── about_page.py        # 关于页面(版本/更新检查)
├── core/                        # 【核心层】业务逻辑处理
│   ├── config_manager.py        # 配置管理(加载/保存/热重载)
│   ├── connector_manager.py     # 消息源连接器统一管理
│   ├── message_processor.py     # 消息统一处理/分发
│   ├── filter_engine.py         # 消息过滤引擎(规则匹配)
│   ├── popup_manager.py         # 弹窗统一调度/显示
│   ├── local_mqtt_manager.py    # 本地MQTT Broker管理
│   ├── scheduler_manager.py     # 定时任务调度管理
│   └── system_monitor.py        # 系统资源监控
├── data/                        # 【数据层】数据存储与消息源连接
│   ├── database.py              # SQLite数据库操作封装
│   ├── async_database.py        # 异步数据库操作
│   ├── models.py                # 数据模型(消息/配置/统计)
│   └── connectors/              # 各消息源连接器实现
│       ├── base.py              # 连接器基类
│       ├── mqtt_connector.py    # MQTT连接器
│       ├── rss_connector.py     # RSS/Atom连接器
│       ├── file_monitor_connector.py # 文件监控连接器
│       ├── clipboard_connector.py    # 剪贴板监控连接器
│       ├── api_connector.py     # API轮询连接器
│       ├── webhook_connector.py # Webhook服务器连接器
│       ├── websocket_connector.py    # WebSocket连接器
│       ├── imap_connector.py    # IMAP邮件连接器
│       └── error_handler.py     # 连接器错误处理
├── utils/                       # 【工具层】通用工具函数
│   ├── logger.py                # 日志系统(分级记录/文件保存)
│   ├── update_checker.py        # 更新检查器(GitHub Release API)
│   ├── network_utils.py         # 网络工具(IP获取等)
│   ├── async_worker.py          # 异步任务工作器
│   ├── resource_path.py         # 资源路径工具(支持打包)
│   └── single_instance.py       # 单实例锁(防止重复启动)
├── config/                      # 配置文件目录
│   ├── default_config.json      # 默认配置模板
│   ├── example_mqtt_config.json # MQTT配置示例
│   └── example_multi_sources.json # 多消息源配置示例
├── resources/                   # 静态资源(图标/音效)
│   ├── icons/                   # 应用图标
│   └── sounds/                  # 提示音效
└── tests/                       # 单元测试与集成测试
    ├── test_database.py         # 数据库测试
    ├── test_config_manager.py   # 配置管理器测试
    ├── test_mqtt_connector.py   # MQTT连接器测试
    └── test_message_connector.py # 消息连接器测试

🛠️ 技术栈

类别 技术/库 核心用途
主开发语言 Python 3.9+ 应用核心开发,简洁易扩展
GUI框架 PyQt6 现代化桌面界面,弹窗/托盘/主题/SVG图标支持
本地存储 SQLite + sqlite3 轻量无服务,存储消息/配置/统计数据
网络通信 paho-mqtt / websocket-client / requests / imaplib MQTT/WebSocket/API/Webhook/IMAP 协议支持
MQTT服务 aMQTT 内置本地MQTT Broker,支持一键启动
本地监控 watchdog / pyperclip 文件监控/剪贴板监听
解析工具 feedparser RSS/Atom 订阅内容解析
系统监控 psutil CPU/内存/磁盘/网络监控
安全加密 cryptography TLS/SSL 加密连接,数据加密
异步支持 asyncio / aiofiles 异步IO操作,提升性能避免卡顿
版本管理 packaging 版本号比较,支持自动更新检查
测试框架 pytest + Hypothesis + coverage 单元测试/属性测试/测试覆盖率统计

📄 开源协议

本项目采用 自定义开源许可协议

License

📋 协议概要

✅ 允许商业使用 | ✅ 允许二次开发 | ⚠️ 二次开发必须开源 | ⚠️ 必须标明原作者

✅ 允许的使用方式

  • ✓ 个人使用和学习
  • ✓ 商业使用
  • ✓ 修改和二次开发
  • ✓ 分发和传播

⚠️ 使用条件(必须遵守)

  1. 开源要求 - 任何二次开发或衍生作品必须开源
  2. 署名要求 - 必须标明原作者:青云制作_彭明航
  3. 协议传递 - 衍生作品必须使用相同的许可协议
  4. 版权声明 - 不得移除或修改原有版权声明

❌ 禁止的行为

  • ✗ 闭源发布衍生作品
  • ✗ 移除或篡改原作者信息
  • ✗ 用于非法用途

📝 代码文件版权声明

所有源代码文件必须包含以下版权声明:

"""
WinMsgHub - [模块名称]
作者:青云制作_彭明航
版权所有 - 二次开发必须开源并标明原作者,允许商用
"""

📖 完整协议

完整的许可协议内容请查看 LICENSE 文件。


👤 作者

青云制作_彭明航

QQ:2124691573

这是我开源的第二款软件项目,如果它对您有所帮助,希望能给个⭐ Star 支持一下!

您的支持是项目持续开发的最大动力 💪


🙏 致谢

感谢以下优秀的开源项目,WinMsgHub的开发离不开它们的支持:

PyQt6 paho-mqtt aMQTT websocket-client feedparser watchdog psutil Hypothesis requests pyperclip

☕ 请作者喝杯奶茶 ☕

微信收款码        支付宝收款码

WinMsgHub - 让Windows跨设备接收消息 ✨

Made with ❤️ by 青云制作_彭明航

⬆ 回到顶部

About

一款使用Python开发的Windows桌面应用程序,专为多源消息聚合、统一管理、智能通知设计,一站式解决物联网消息、网络推送、本地事件、订阅内容等分散接收消息的问题。

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages