如何使用Pyrogram或Telethon抓取Telegram群组的照片与视频?
从Telegram群组抓取照片与视频并指定格式保存
Pyrogram 实现方式
批量抓取历史消息中的媒体
使用get_chat_history遍历群组历史消息,针对不同媒体类型处理:
- 照片保存为JPG/JPEG:判断消息包含
photo属性时,调用download_media并指定文件名后缀为.jpg或.jpeg - 视频保存为MP4:判断消息包含
video属性时,调用download_media并指定文件名后缀为.mp4
代码示例:
from pyrogram import Client # 假设你已经初始化好client实例 async def fetch_media_from_group(client, chat_id): async for message in client.get_chat_history(chat_id): # 处理照片 if message.photo: # 自定义文件名,确保后缀为jpg await message.download_media(file_name=f"photos/photo_{message.id}.jpg") # 处理视频 elif message.video: # 自定义文件名,确保后缀为mp4 await message.download_media(file_name=f"videos/video_{message.id}.mp4") # 运行(需在异步环境中) # asyncio.run(fetch_media_from_group(client, "你的群组ID或用户名"))
实时监听并保存媒体
如果需要实时抓取新发布的媒体,使用on_message装饰器:
@client.on_message() async def handle_new_messages(client, message): if message.chat.id == "你的群组ID": if message.photo: await message.download_media(file_name=f"photos/photo_{message.id}.jpg") elif message.video: await message.download_media(file_name=f"videos/video_{message.id}.mp4")
Telethon 实现方式
批量抓取历史消息中的媒体
使用iter_messages遍历群组消息,处理逻辑类似:
- 照片保存为JPG/JPEG:检查
message.photo存在,调用download_media指定JPG后缀 - 视频保存为MP4:检查
message.video存在,调用download_media指定MP4后缀
代码示例:
from telethon import TelegramClient # 假设你已经初始化好client实例 async def fetch_media_from_group(client, chat_id): async for message in client.iter_messages(chat_id): # 处理照片 if message.photo: await client.download_media(message, file=f"photos/photo_{message.id}.jpg") # 处理视频 elif message.video: await client.download_media(message, file=f"videos/video_{message.id}.mp4") # 运行(需在异步环境中) # asyncio.run(fetch_media_from_group(client, "你的群组ID或用户名"))
实时监听并保存媒体
使用events.NewMessage监听新消息:
from telethon import events @client.on(events.NewMessage(chats="你的群组ID")) async def handle_new_messages(event): message = event.message if message.photo: await client.download_media(message, file=f"photos/photo_{message.id}.jpg") elif message.video: await client.download_media(message, file=f"videos/video_{message.id}.mp4")
注意事项
- 确保你有目标群组的访问权限,且客户端已完成授权
- 批量抓取时建议添加适当的延迟,避免触发Telegram的频率限制
- 保存路径需提前创建(如
photos/和videos/文件夹)
内容的提问来源于stack exchange,提问作者theprogrammer451
相关产品推荐
相关产品推荐

