You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Telethon获取电报频道所有媒体数据的总MB大小

使用Telethon统计电报频道所有媒体总大小的解决方案

问题核心在于Telegram不同类型媒体的大小字段存储位置不同:照片的大小在photo.sizes的最大尺寸项中,而视频、文档、音频等的大小直接在document.size里。只读取data.media.document.size会漏掉照片类媒体,同时SearchRequest有数量限制,无法覆盖频道全部消息。

解决步骤

  1. 遍历频道全部消息:使用client.iter_messages而非SearchRequest,它能分页获取频道所有消息(limit=None表示获取全部)。
  2. 区分媒体类型提取大小:
    • 照片(MessageMediaPhoto):取photo.sizes中分辨率最大的条目对应的size(这是原照片的实际大小)。
    • 文档/视频/音频/GIF(MessageMediaDocument):直接读取document.size。
  3. 累加并转换单位:将所有字节数累加后转换为MB(或其他单位)。

完整代码示例

from telethon import TelegramClient
from telethon.tl.types import MessageMediaPhoto, MessageMediaDocument

async def calculate_total_media_size(client, channel_identifier):
    total_bytes = 0
    # 遍历频道所有消息,自动处理分页
    async for message in client.iter_messages(channel_identifier, limit=None):
        if not message.media:
            continue
        
        # 处理照片媒体
        if isinstance(message.media, MessageMediaPhoto):
            photo = message.media.photo
            if photo.sizes:
                # 按分辨率排序,取最大尺寸的照片大小
                largest_photo = max(photo.sizes, key=lambda s: s.width * s.height)
                total_bytes += largest_photo.size
        
        # 处理文档/视频/音频等媒体
        elif isinstance(message.media, MessageMediaDocument):
            doc = message.media.document
            total_bytes += doc.size
    
    # 转换为MB(1MB = 1024^2 字节)
    total_mb = total_bytes / (1024 ** 2)
    print(f"频道所有媒体总大小: {total_mb:.2f} MB")
    return total_mb

# 替换为你的API信息和目标频道
API_ID = 你的API_ID
API_HASH = '你的API_HASH'
CHANNEL = '频道用户名或ID'

with TelegramClient('media_size_session', API_ID, API_HASH) as client:
    client.loop.run_until_complete(calculate_total_media_size(client, CHANNEL))

注意事项

  • 权限验证:确保你的账号已加入目标频道(私有频道需手动加入后才能访问)。
  • 速率限制:Telegram API有调用频率限制,iter_messages会自动处理延迟,但大频道可能需要较长时间完成遍历。
  • 扩展媒体类型:如果需要统计贴纸(MessageMediaSticker)等其他媒体,可添加对应的类型判断,贴纸的大小同样存储在document.size中。
  • 单位转换:若需统计GB,将计算式改为total_gb = total_bytes / (1024 ** 3)即可。

内容的提问来源于stack exchange,提问作者theprogrammer451

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 04:52:17