web-dev-qa-db-ja.com

テレグラムグループからすべての共有メディアファイルをダウンロードする方法

40,000を超える共有ファイルを含むテレグラムグループがあります。
一度にすべてをダウンロードするボットはありますか?ない場合は、pythonを使用して共有メディアファイルをダウンロードするテレグラムAPIスクリプトメソッドはありますか?

5
Mohsen Haddadi

telethon 、電報クライアントを使用して、パブリックグループ内のすべてのファイルをダウンロードできます

from telethon import TelegramClient
from tqdm import tqdm
# These example values won't work. You must get your own api_id and
# api_hash from `my.telegram.org` , under API Development.
api_id = APIID
api_hash = 'APIHASH'
client = TelegramClient('session_name', api_id, api_hash)
client.start()
print(client.get_me().stringify())
# client.send_message('username', 'Hello! Talking to you from Telethon')
# client.send_file('username', '/home/myself/Pictures/holidays.jpg')
# client.download_profile_photo('hamidzr')
messages = client.get_messages('intothestates', limit=2000)
print(len(messages))
for msg in tqdm(messages):
client.download_media(msg)
4
victorvs

残念ながら、電報ボットAPIは古いメッセージ(またはファイル)の表示を許可していません。

これを行う唯一の方法は、 Telethon などのAPIを使用することです。これは、電報に関する限りユーザーとして機能します。

1
jsmnbom

Telethon はvictorvsの答えから変わったようです。 ( ドキュメント

これは動作するはずです:

from telethon.sync import TelegramClient, events
from tqdm import  tqdm
import os

# These example values won't work. You must get your own api_id and
# api_hash from https://my.telegram.org, under API Development.
api_id = <api_id>
api_hash = '<api_hash>'


with TelegramClient('name', api_id, api_hash) as client:
    messages = client.get_messages('<channel/chat>', limit=50) # limit defaults to 1
    for msg in tqdm(messages):
        msg.download_media(file=os.path.join('media', '<file_name>'))
0
mh sattarian