# Telegram Media Downloader 配置指南 > 本文档记录了在 macOS 上配置和运行 Telegram Media Downloader 的完整步骤。 --- ## 目录 - [环境要求](#环境要求) - [快速启动](#快速启动) - [详细配置步骤](#详细配置步骤) - [1. 安装依赖](#1-安装依赖) - [2. 获取 Telegram API 密钥](#2-获取-telegram-api-密钥) - [3. 配置代理](#3-配置代理) - [4. 修改 Web 端口](#4-修改-web-端口) - [5. 首次登录认证](#5-首次登录认证) - [6. 配置下载任务](#6-配置下载任务) - [7. 配置 Bot(持续运行)](#7-配置-bot持续运行) - [配置文件说明](#配置文件说明) - [常用命令](#常用命令) - [常见问题](#常见问题) - [我的配置信息](#我的配置信息) --- ## 环境要求 - **操作系统**: macOS / Linux / Windows - **Python**: 3.7 及以上 - **代理软件**: Clash / V2Ray 等(国内必需) - **Telegram 账号**: 需要能正常登录 --- ## 快速启动 如果已经配置好,直接运行: ```bash cd /Users/gaotu/WebstormProjects/telegram_media_downloader-master python3 media_downloader.py ``` 访问 Web 界面: - **下载进度**: http://localhost:5001 - **控制台**: http://localhost:5001/control --- ## 详细配置步骤 ### 1. 安装依赖 ```bash # 进入项目目录 cd /Users/gaotu/WebstormProjects/telegram_media_downloader-master # 安装依赖(macOS/Linux) make install # 或者直接用 pip(Windows) pip3 install -r requirements.txt ``` ### 2. 获取 Telegram API 密钥 1. 访问 https://my.telegram.org/apps 2. 使用 Telegram 账号登录,登录时需要注意,验证码不是发短信,是发送到软件里,需要到软件中的服务号查收。 3. 填写表单创建新应用(Platform 选 Desktop) 4. 获取 `api_id` 和 `api_hash` > ⚠️ 注意:如果提示 "too many tries",需要等待 1-2 小时再试。 ### 3. 配置代理 由于国内无法直连 Telegram,需要配置代理。 编辑 `config.yaml`,添加代理配置: ```yaml # Clash 代理配置 proxy: scheme: socks5 hostname: 127.0.0.1 port: 7891 # Clash SOCKS5 端口,根据实际情况修改 ``` **常见代理端口**: | 代理软件 | HTTP 端口 | SOCKS5 端口 | |---------|----------|------------| | Clash | 7890 | 7891 | | V2Ray | 10809 | 10808 | | Shadowsocks | - | 1080 | ### 4. 修改 Web 端口 macOS 的 AirPlay Receiver 默认占用 5000 端口,需要修改: ```yaml web_host: 127.0.0.1 web_port: 5001 # 改为其他端口 ``` ### 5. 首次登录认证 运行程序: ```bash python3 media_downloader.py ``` 首次运行会要求输入: 1. **手机号**:输入 Telegram 注册手机号(带国际区号,如 `+8615064240820`) 2. **确认**:输入 `y` 确认 3. **验证码**:查看 Telegram 客户端收到的验证码,输入 登录成功后会生成 `media_downloader.session` 文件,后续无需重复登录。 ### 6. 配置下载任务 编辑 `config.yaml` 中的 `chat` 部分: ```yaml chat: - chat_id: happycat03 # 频道用户名或 ID last_read_message_id: 0 # 从头开始下载设为 0 download_filter: message_date >= 2024-01-01 00:00:00 # 时间过滤 ``` **获取频道 ID 的方法**: 1. **使用用户名**:直接填写 `@` 后面的部分,如 `happycat03` 2. **使用机器人**:发送频道链接给 [@username_to_id_bot](https://t.me/username_to_id_bot) 3. **Web Telegram**:从 URL 中获取 **时间过滤器示例**: ```yaml # 下载 2024 年以后的 download_filter: message_date >= 2024-01-01 00:00:00 # 下载指定时间段 download_filter: message_date >= 2024-01-01 00:00:00 and message_date <= 2024-06-30 23:59:59 # 不设置过滤器(下载全部) # 删除 download_filter 行即可 ``` ### 7. 配置 Bot(持续运行) 默认情况下,程序下载完成后会自动退出。配置 Bot 后程序会持续运行。 **创建 Bot**: 1. 在 Telegram 中打开 [@BotFather](https://t.me/BotFather) 2. 发送 `/newbot` 3. 按提示设置名称和用户名(用户名必须以 `bot` 结尾) 4. 获取 Bot Token **添加到配置**: ```yaml bot_token: 你的Bot_Token ``` 配置后: - 程序会持续运行 - 可以通过机器人发送命令下载 - Web 界面可以一直访问 --- ## 配置文件说明 完整的 `config.yaml` 示例: ```yaml # Telegram API 密钥 api_hash: your_api_hash api_id: your_api_id # Bot Token(可选,配置后程序持续运行) bot_token: your_bot_token # 下载任务配置 chat: - chat_id: channel_username # 频道用户名或 ID last_read_message_id: 0 # 上次读取位置,0 表示从头开始 download_filter: message_date >= 2024-01-01 00:00:00 # 时间过滤 # 下载的媒体类型 media_types: - audio - photo - video - document - voice - video_note # 文件格式过滤 file_formats: audio: - all document: - all video: - all # 保存路径 save_path: /Users/gaotu/Downloads/telegram_downloads # 文件路径前缀(子目录结构) file_path_prefix: - chat_title # 频道名称 - media_datetime # 媒体日期 # Web 界面配置 web_host: 127.0.0.1 web_port: 5001 # 代理配置 proxy: scheme: socks5 hostname: 127.0.0.1 port: 7891 # 语言 language: ZH # ZH 中文, EN 英文 ``` --- ## 常用命令 ```bash # 启动下载程序 python3 media_downloader.py # 停止程序 Ctrl + C # 后台运行(可选) nohup python3 media_downloader.py > download.log 2>&1 & # 查看后台进程 ps aux | grep media_downloader # 停止后台进程 pkill -f media_downloader ``` --- ## 常见问题 ### Q1: 连接超时(Connection timed out) **原因**:代理未配置或代理软件未运行 **解决**: 1. 确保 Clash/V2Ray 正在运行 2. 检查 `config.yaml` 中的代理端口是否正确 ### Q2: 端口 5000 被占用 **原因**:macOS AirPlay Receiver 占用 **解决**:修改 `web_port` 为其他端口(如 5001) ### Q3: 程序下载完就退出 **原因**:未配置 Bot Token **解决**:创建 Telegram Bot 并配置 `bot_token` ### Q4: 大文件下载失败(Request timed out) **原因**:网络不稳定,大文件容易超时 **解决**: 1. 重新运行程序,会自动重试失败的文件 2. 更换更稳定的代理节点 ### Q5: API 密钥申请被限制 **原因**:尝试次数过多 **解决**:等待 1-2 小时后重试,或更换网络/IP --- ## 我的配置信息 > ⚠️ 以下是我的个人配置,请勿泄露给他人 | 配置项 | 值 | |--------|-----| | api_id | `35804872` | | api_hash | `79872da654ba47a407ff758df43b342b` | | bot_token | `8304994550:AAHrfD8iZy-g7eMvd5j_nUCWAVzkfpn-STk` | | Bot 用户名 | [@ymxixibot](https://t.me/ymxixibot) | | 代理端口 | `7891`(Clash SOCKS5) | | Web 端口 | `5001` | | 保存路径 | `/Users/gaotu/Downloads/telegram_downloads` | --- ## Web 界面说明 ### 下载进度页面 地址:http://localhost:5001 - 查看正在下载的文件 - 查看已完成的下载 - 暂停/继续下载 ### 控制台页面(自定义) 地址:http://localhost:5001/control - 输入频道链接 - 设置下载时间范围 - 查看当前配置 - 查看下载状态 --- ## 更新日志 - **2026-01-10**: 初次配置,成功下载 184 个无损音乐文件 - **2026-01-10**: 配置 Bot Token,实现程序持续运行 - **2026-01-10**: 添加自定义 Web 控制台页面 --- *文档创建于 2026-01-10*