V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
EscYezi
V2EX  ›  分享创造

分享一个下载 telegram 频道图片的脚本

  •  
  •   EscYezi ·
    yeziyezi · 2019-03-21 16:06:00 +08:00 · 11838 次点击
    这是一个创建于 2109 天前的主题,其中的信息可能已经有所发展或是发生改变。

    由于某些你懂的理由,需要从某个频道下载所有的图片,搜索一番发现并没有现成的工具,但是有封装好的 telegram python api 库—— Telethon,于是基于该库编写了此脚本

    链接: https://github.com/yeziyezi/scripts

    或者也可以直接用 Telethon 来搞事情(

    Telethon 的文档: https://telethon.readthedocs.io/en/latest/index.html

    16 条回复    2020-12-22 21:18:57 +08:00
    yggd
        1
    yggd  
       2019-03-21 16:14:21 +08:00
    Markdown 链接前面不加 !
    EscYezi
        2
    EscYezi  
    OP
       2019-03-21 16:19:18 +08:00 via iPhone
    @yggd #1 感谢指正
    xFrank
        3
    xFrank  
       2019-03-23 11:42:27 +08:00
    怎么用?
    EscYezi
        4
    EscYezi  
    OP
       2019-03-23 12:23:53 +08:00 via iPhone
    @xFrank #3 安装依赖,拿到自己的 tg api id 和 hash,把那几个变量改一下,然后运行。具体的在 readme 和注释里已经写了
    metalbug
        5
    metalbug  
       2019-03-23 18:39:26 +08:00
    能下载所有视频吗?
    EscYezi
        6
    EscYezi  
    OP
       2019-03-24 02:13:32 +08:00 via iPhone
    @metalbug #5 这个脚本只能下载图片
    Deteriorator
        7
    Deteriorator  
       2019-05-12 20:56:01 +08:00
    请问怎么获取 saved messages 信息?
    EscYezi
        8
    EscYezi  
    OP
       2019-05-12 21:30:31 +08:00 via iPad
    @Deteriorator 这个我也不太清楚,可以去 Telethon 的文档找找看
    Deteriorator
        9
    Deteriorator  
       2019-05-12 22:04:06 +08:00
    @EscYezi 试了一个下午,到现在都没找到方法,吐血了都
    ronman
        10
    ronman  
       2019-11-15 16:52:28 +08:00
    老哥有没有遇到 FloodWaitError 啊,我看了一下好像是短时间请求次数太多了,导致的出错,有什么好的解决办法吗?
    Aistv
        11
    Aistv  
       2020-01-01 12:37:41 +08:00
    @EscYezi @ronman 我想问一下,第一次登陆需要输入手机号码之类的,在哪里输入啊?我运行脚本后,过一会就提示:连接失败 5 次,是不是代理不行?我用的 ssr
    ronman
        12
    ronman  
       2020-01-01 13:06:57 +08:00 via Android
    @Aistv 代理没设置好,直接运行的话不走代理,搜一下怎么处理吧
    Aistv
        13
    Aistv  
       2020-01-01 14:53:12 +08:00
    @ronman 开了 ssr 后在 Telegram 自定义代理里面试了 127.0.0.1,1080,软件都可以用 脚本就不行,能告诉我你用的什么代理吗?


    Traceback (most recent call last):
    File "C:\Users\Aistv\Desktop\scripts-master\download-telegram-channel-pictures.py", line 19, in <module>
    client = TelegramClient('my_session',api_id=api_id,api_hash=api_hash,proxy=proxy).start()
    File "C:\Users\Aistv\AppData\Roaming\Python\Python38\site-packages\telethon\client\auth.py", line 132, in start
    else self.loop.run_until_complete(coro)
    File "C:\Users\Aistv\AppData\Local\Programs\Python\Python38\lib\asyncio\base_events.py", line 612, in run_until_complete
    return future.result()
    File "C:\Users\Aistv\AppData\Roaming\Python\Python38\site-packages\telethon\client\auth.py", line 139, in _start
    await self.connect()
    File "C:\Users\Aistv\AppData\Roaming\Python\Python38\site-packages\telethon\client\telegrambaseclient.py", line 439, in connect
    if not await self._sender.connect(self._connection(
    File "C:\Users\Aistv\AppData\Roaming\Python\Python38\site-packages\telethon\network\mtprotosender.py", line 124, in connect
    await self._connect()
    File "C:\Users\Aistv\AppData\Roaming\Python\Python38\site-packages\telethon\network\mtprotosender.py", line 237, in _connect
    raise ConnectionError('Connection to Telegram failed %d time(s)', self._retries)
    ConnectionError: [Errno Connection to Telegram failed %d time(s)] 5
    >>>
    ronman
        14
    ronman  
       2020-01-03 10:56:03 +08:00
    @Aistv pysocks
    Aistv
        15
    Aistv  
       2020-01-03 19:39:35 +08:00
    @ronman 我连续下载了几千张并没有碰到你说的什么 FloodWaitError,只有验证过期什么的,重新开一下脚本就可以继续。
    minxiansheng
        16
    minxiansheng  
       2020-12-22 21:18:57 +08:00
    @Aistv 大佬,我用 clash 代理,运行这个程序出现 Connection to Telegram failed 5 time(s),怎么解决啊,谢谢大佬
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   931 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 21:19 · PVG 05:19 · LAX 13:19 · JFK 16:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.