前言 订阅了挺多的网盘影视 tg 频道,但是打开 tg 还是觉得麻烦,于是就简单让 cursor 糊了个实时更新订阅的几个网盘资源频道消息。
项目地址:https://github.com/DEKVIW/tgmonitor
demo:https://pan.pkll.de
项目介绍:
基于 Python + Telethon + Streamlit 的 Telegram 频道消息监控与管理系统。
自动监听网盘影视资源分享 类 Telegram 频道,只保存包含网盘链接的消息
支持主流网盘类型:阿里云盘、百度网盘、夸克网盘、天翼云盘、115 网盘、123 云盘、UC 网盘、迅雷
推荐/适配频道(可自定义扩展):
频道名
频道名
频道名
频道名
BaiduCloudDisk
tianyirigeng
Aliyun_4K_Movies
NewQuark
XiangxiuNB
shareAliyun
bdwpzhpd
Lsp115
tyypzhpd
SharePanBaidu
QuarkFree
alyp_1
vip115hot
QukanMovie
下面是详细的部署和使用教程
电报api获取步骤
环境与依赖版本建议
推荐 Python 版本 :3.10 或 3.11(3.12 也可,优先用 3.10/3.11,兼容性最佳)
推荐 PostgreSQL 版本 :13、14 或 15
依赖安装 :已在 requirements.txt 中声明,pip install -r requirements.txt 一键安装。
首次 Telethon 登录 方法一:推荐 - 使用 session 获取脚本
运行专门的 session 获取脚本:
按提示输入 API 凭据:
TELEGRAM_API_ID :你的 Telegram API ID
TELEGRAM_API_HASH :你的 Telegram API Hash
按提示输入手机号、验证码
手机号格式 :+国家代码手机号(如:+8613812345678)
登录成功后,session 文件会自动保存为 tg_monitor_session.session
方法二:直接运行监控服务登录
本地运行监控服务进行登录:
1 python -m app.core.monitor
按提示输入手机号、验证码
登录成功后,session 文件会自动保存为 tg_monitor_session.session
Session 文件说明 :
文件名:tg_monitor_session.session
包含 Telegram 登录凭据,无需重复登录
请妥善保管,不要泄露给他人
如果 session 失效,删除文件重新登录即可
把文件放到项目根目录
Docker 部署 1. 克隆项目 1 2 git clone https://github.com/DEKVIW/tgmonitor.git cd docker
2. 环境准备 .env 环境配置:
1 2 3 4 5 6 TELEGRAM_API_ID=你的API_ID TELEGRAM_API_HASH=你的API_HASH DATABASE_URL=postgresql://tg_user:password@db:5432/tg_monitor DEFAULT_CHANNELS=频道1,频道2 LOG_LEVEL=INFO SECRET_SALT=your_secret_salt_key_here
⚠️ 重要提示:
SECRET_SALT 密钥 :用于用户登录验证,建议使用随机生成的强密钥
可以使用项目提供的脚本生成:python generate_secret.py
可以使用在线工具生成:https://www.random.org/strings/
或使用命令生成:openssl rand -hex 32
示例:SECRET_SALT=a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef1234
数据库密码包含特殊字符时的转义处理
如果数据库密码包含特殊字符(如 #、@、%、&、+、=、!、$、*、(、)、[、]、{、}、|、\、:、;、"、'、<、>、,、/、?),需要进行 URL 编码转义。在线 URL 编码工具 :Online URL Encoder
示例 :
原始密码:1j7wxLn#ZTlNZ#3tpkwF
转义后:1j7wxLn%23ZTlNZ%233tpkwF(# 转义为 %23)
完整示例 :
1 2 3 # 原始密码:1j7wxLn#ZTlNZ#3tpkwF DATABASE_URL=postgresql://tg_user:1j7wxLn%23ZTlNZ%233tpkwF@localhost:5432/tg_monitor SECRET_SALT=a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef1234
3. 构建与初始化数据库 1 2 3 cd dockerdocker-compose up -d db docker-compose run --rm monitor python -m app.scripts.init_db
注意 : 此命令会自动创建默认管理员用户(用户名: admin,密码: admin123)
4. 启动服务
查看服务状态和日志 :
1 2 3 4 5 6 7 8 9 10 11 docker-compose ps docker-compose logs -f monitor docker-compose logs -f web docker-compose logs -f db
5. 其它注意事项
系统环境部署 1. 克隆项目 1 2 git clone https://github.com/DEKVIW/tgmonitor.git cd tgmonitor
2. 安装 Python(如果未安装) 检查 Python 版本 :
如果未安装或版本不符合要求(需要 3.10 或 3.11),请安装:
1 2 sudo apt update sudo apt install python3 python3-venv python3-dev python3-pip -y
验证安装 :
3. 配置数据库(系统环境) 1 2 3 4 5 6 7 sudo apt update sudo apt install postgresql postgresql-contrib -y sudo -u postgres psql CREATE DATABASE tg_monitor; CREATE USER tg_user WITH PASSWORD 'your_password' ; GRANT ALL PRIVILEGES ON DATABASE tg_monitor TO tg_user;
如果遇到 permission denied for schema public 错误 :
这是 PostgreSQL 15+ 版本的安全改进,需要手动授予权限。执行以下命令修复:
1 2 3 4 5 6 sudo -u postgres psql -d tg_monitor GRANT ALL ON SCHEMA public TO tg_user; ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO tg_user; ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON SEQUENCES TO tg_user; \q
4. 创建虚拟环境并安装依赖 1 2 3 4 5 6 7 8 python3 -m venv tgmonitor-venv source tgmonitor-venv/bin/activatepip install -r requirements.txt
5. 配置环境变量 编辑 .env 文件,示例:
1 2 3 4 5 6 TELEGRAM_API_ID=你的API_ID TELEGRAM_API_HASH=你的API_HASH DATABASE_URL=postgresql://tg_user:your_password@localhost:5432/tg_monitor DEFAULT_CHANNELS=频道1,频道2 LOG_LEVEL=INFO SECRET_SALT=your_secret_salt_key_here
6. 初始化数据库表 1 python -m app.scripts.init_db
注意 : 此命令会自动创建默认管理员用户(用户名: admin,密码: admin123)
7. 启动服务 先正常启动服务进行测试
1 2 3 4 5 python -m app.core.monitor streamlit run app/web/web.py
8.systemd 服务管理 为了方便启动和停止项目,可以使用 systemd。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 cat <<EOF >/etc/systemd/system/tg-monitor.service [Unit] Description=TG Monitor Service After=network.target [Service] User=root WorkingDirectory=/root/data/python/tg-monitor Environment="PATH=/root/data/python/tg-monitor/tgmonitor-venv/bin" ExecStart=/root/data/python/tg-monitor/tgmonitor-venv/bin/python -m app.core.monitor Restart=always [Install] WantedBy=multi-user.target EOF
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 cat <<EOF >/etc/systemd/system/tg-monitor-web.service [Unit] Description=TG Monitor Web Service After=network.target [Service] User=root WorkingDirectory=/root/data/python/tg-monitor Environment="PATH=/root/data/python/tg-monitor/tgmonitor-venv/bin" ExecStart=/root/data/python/tg-monitor/tgmonitor-venv/bin/streamlit run app/web/web.py --server.port 8501 --server.address 0.0.0.0 Restart=always [Install] WantedBy=multi-user.target EOF
启动和管理服务
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 # 重新加载 systemd 配置 sudo systemctl daemon-reload # 启用服务(开机自启) sudo systemctl enable tg-monitor sudo systemctl enable tg-monitor-web # 启动服务 sudo systemctl start tg-monitor sudo systemctl start tg-monitor-web # 重启服务 sudo systemctl restart tg-monitor sudo systemctl restart tg-monitor-web # 查看服务状态 sudo systemctl status tg-monitor sudo systemctl status tg-monitor-web # 查看日志(推荐用 journalctl) sudo journalctl -u tg-monitor -f sudo journalctl -u tg-monitor-web -f # 停止服务 sudo systemctl stop tg-monitor sudo systemctl stop tg-monitor-web
9.条目去重 相同的网盘链接只保存最新更新的条目信息,遇到更新间隔不超过 1 分钟保留网盘标签最多的条目。
1 (crontab -l 2>/dev/null; echo "0 * * * * cd /root/data/python/tg-monitor && /root/data/python/tg-monitor/tgmonitor-venv/bin/python -m app.scripts.manage --dedup-links-fast >> /root/data/python/tg-monitor/dedup.log 2>&1") | crontab -
数据库备份和恢复 备份 项目已提供智能备份脚本 scripts/backup_db.sh,需要根据需求修改备份的目标目录:
1 2 chmod +x scripts/backup_db.sh ./scripts/backup_db.sh
使用前提 :
确保项目根目录存在 .env 文件,且包含正确的 DATABASE_URL 配置
代码中云端备份目录修改成自己的
添加定时任务,定时备份
1 (crontab -l 2>/dev/null; echo "0 3 * * * /root/data/python/tg-monitor/scripts/backup_db.sh > /dev/null 2>&1") | crontab -
恢复 1 2 3 4 5 6 # 给脚本添加执行权限 chmod +x scripts/restore_db.sh # 恢复数据库(推荐在项目根目录运行) # 脚本会自动查找本地 backup 目录中最新的备份文件 ./scripts/restore_db.sh
使用前提 :确保项目根目录存在 .env 文件,且包含正确的 DATABASE_URL 配置
注意事项 :恢复操作会覆盖现有数据库中的所有数据,请谨慎操作!
使用命令参考 说明 :以下命令提供 Docker 和系统两种版本,部署完成后可根据需要选择使用。
频道管理命令 列出频道 1 2 3 4 5 docker-compose run --rm monitor python -m app.scripts.manage --list-channels python -m app.scripts.manage --list-channels
添加频道 1 2 3 4 5 docker-compose run --rm monitor python -m app.scripts.manage --add-channel 频道名1 频道名2 python -m app.scripts.manage --add-channel 频道名1 频道名2
删除频道 1 2 3 4 5 docker-compose run --rm monitor python -m app.scripts.manage --del-channel 频道名 python -m app.scripts.manage --del-channel 频道名
修改频道名 1 2 3 4 5 docker-compose run --rm monitor python -m app.scripts.manage --edit-channel 旧频道名 新频道名 python -m app.scripts.manage --edit-channel 旧频道名 新频道名
频道诊断 1 2 3 4 5 docker-compose run --rm monitor python -m app.scripts.manage --diagnose-channels python -m app.scripts.manage --diagnose-channels
用户管理命令 创建默认用户 1 2 3 4 5 docker-compose run --rm monitor python -m app.scripts.init_users --create-default python -m app.scripts.init_users --create-default
添加新用户 1 2 3 4 5 docker-compose run --rm monitor python -m app.scripts.init_users --add-user 用户名 密码 [姓名] [邮箱] python -m app.scripts.init_users --add-user 用户名 密码 [姓名] [邮箱]
修改密码 1 2 3 4 5 docker-compose run --rm monitor python -m app.scripts.init_users --change-password 用户名 新密码 python -m app.scripts.init_users --change-password 用户名 新密码
修改用户名 1 2 3 4 5 docker-compose run --rm monitor python -m app.scripts.init_users --change-username 旧用户名 新用户名 python -m app.scripts.init_users --change-username 旧用户名 新用户名
编辑用户信息 1 2 3 4 5 docker-compose run --rm monitor python -m app.scripts.init_users --edit-user 用户名 [姓名] [邮箱] python -m app.scripts.init_users --edit-user 用户名 [姓名] [邮箱]
查看所有用户 1 2 3 4 5 docker-compose run --rm monitor python -m app.scripts.init_users --list-users python -m app.scripts.init_users --list-users
删除用户 1 2 3 4 5 docker-compose run --rm monitor python -m app.scripts.init_users --remove-user 用户名 python -m app.scripts.init_users --remove-user 用户名
数据维护命令 网盘链接去重 1 2 3 4 5 docker-compose run --rm monitor python -m app.scripts.manage --dedup-links python -m app.scripts.manage --dedup-links
快速网盘链接去重 1 2 3 4 5 docker-compose run --rm monitor python -m app.scripts.manage --dedup-links-fast [批次大小] python -m app.scripts.manage --dedup-links-fast [批次大小]
去重功能说明 :
链接检测命令 检测最近 N 小时的链接 1 2 3 4 5 6 7 8 9 10 11 docker-compose run --rm monitor python -m app.scripts.manage --check-links [小时数] [并发数] python -m app.scripts.manage --check-links [小时数] [并发数] docker-compose run --rm monitor python -m app.scripts.manage --check-links 24 docker-compose run --rm monitor python -m app.scripts.manage --check-links 48 10
检测所有历史链接 1 2 3 4 5 docker-compose run --rm monitor python -m app.scripts.manage --check-all-links [并发数] python -m app.scripts.manage --check-all-links [并发数]
时间段检测 1 2 3 4 5 6 7 8 9 10 docker-compose run --rm monitor python -m app.scripts.manage --check-period [时间段] [并发数] python -m app.scripts.manage --check-period [时间段] [并发数] docker-compose run --rm monitor python -m app.scripts.manage --check-period today docker-compose run --rm monitor python -m app.scripts.manage --check-period week 5 docker-compose run --rm monitor python -m app.scripts.manage --check-period 2024-01-15:2024-01-20
查看检测统计 1 2 3 4 5 docker-compose run --rm monitor python -m app.scripts.manage --link-stats python -m app.scripts.manage --link-stats
查看失效链接 1 2 3 4 5 docker-compose run --rm monitor python -m app.scripts.manage --show-invalid-links [数量] python -m app.scripts.manage --show-invalid-links [数量]
系统管理命令 查看帮助 1 2 3 4 5 docker-compose run --rm monitor python -m app.scripts.manage --help python -m app.scripts.manage --help
查看用户管理帮助 1 2 3 4 5 docker-compose run --rm monitor python -m app.scripts.init_users --help python -m app.scripts.init_users --help
快速上手示例 首次使用流程 1 2 3 4 5 6 7 8 9 10 11 docker-compose run --rm monitor python -m app.scripts.manage --list-channels docker-compose run --rm monitor python -m app.scripts.manage --add-channel 频道名1 频道名2 docker-compose run --rm monitor python -m app.scripts.manage --dedup-links docker-compose run --rm monitor python -m app.scripts.manage --check-links 1 3
查看帮助 : python -m app.scripts.manage --help
链接检测高级功能 查看中断记录 1 2 3 4 5 docker-compose run --rm monitor python -m app.scripts.manage --show-interrupted python -m app.scripts.manage --show-interrupted
清空检测数据 1 2 3 4 5 docker-compose run --rm monitor python -m app.scripts.manage --clear-link-check-data python -m app.scripts.manage --clear-link-check-data
清空旧检测数据 1 2 3 4 5 6 7 8 9 10 docker-compose run --rm monitor python -m app.scripts.manage --clear-old-link-check-data [天数] python -m app.scripts.manage --clear-old-link-check-data [天数] docker-compose run --rm monitor python -m app.scripts.manage --clear-old-link-check-data 7 docker-compose run --rm monitor python -m app.scripts.manage --clear-old-link-check-data 30 docker-compose run --rm monitor python -m app.scripts.manage --clear-old-link-check-data 60