telegram-download-daemon/telegram-download-daemon.py

65 lines
2.4 KiB
Python
Raw Normal View History

2020-04-23 02:35:13 +08:00
#!/usr/bin/env python3
# Telegram Download Daemon
# Author: Alfonso E.M. <alfonso@el-magnifico.org>
# You need to install telethon (and cryptg to speed up downloads)
2020-04-24 00:32:42 +08:00
from os import getenv
2020-04-23 02:35:13 +08:00
from telethon import TelegramClient, events
from telethon.tl.types import PeerChannel
import logging
logging.basicConfig(format='[%(levelname) 5s/%(asctime)s]%(name)s:%(message)s',level=logging.WARNING)
2020-04-24 00:32:42 +08:00
import argparse
TELEGRAM_DEAMON_API_ID = getenv("TELEGRAM_DEAMON_API_ID")
TELEGRAM_DEAMON_API_HASH = getenv("TELEGRAM_DEAMON_API_HASH")
TELEGRAM_DEAMON_CHANNEL = getenv("TELEGRAM_DEAMON_CHANNEL")
parser = argparse.ArgumentParser(description="Script to download files from Telegram Channel.")
2020-04-24 01:12:34 +08:00
parser.add_argument("--api-id", required=TELEGRAM_DEAMON_API_ID == None, type=int, default=TELEGRAM_DEAMON_API_ID, help='api_id from https://core.telegram.org/api/obtaining_api_id (default is TELEGRAM_DEAMON_API_ID env var)')
2020-04-24 00:32:42 +08:00
parser.add_argument("--api-hash", required=TELEGRAM_DEAMON_API_HASH == None, type=str, default=TELEGRAM_DEAMON_API_HASH, help='api_hash from https://core.telegram.org/api/obtaining_api_id (default is TELEGRAM_DEAMON_API_HASH env var)')
parser.add_argument("--dest", type=str, default=getenv("TELEGRAM_DEAMON_DEST", "/telegram-downloads"), help='Destenation path for downloading files (default is /telegram-downloads).')
2020-04-24 01:12:34 +08:00
parser.add_argument("--channel", required=TELEGRAM_DEAMON_CHANNEL == None, type=int, default=TELEGRAM_DEAMON_CHANNEL, help='Channel id to download from it (default is TELEGRAM_DEAMON_CHANNEL env var')
2020-04-24 00:32:42 +08:00
args = parser.parse_args()
api_id = args.api_id
api_hash = args.api_hash
channel_id = args.channel
downloadFolder = args.dest
2020-04-23 02:35:13 +08:00
# Edit these lines:
2020-04-24 00:32:42 +08:00
proxy = None
2020-04-23 02:35:13 +08:00
# End of interesting parameters
session = "DownloadDaemon"
client = TelegramClient(session, api_id, api_hash, proxy=proxy).start()
@client.on(events.NewMessage())
async def handler(event):
2020-04-24 01:12:34 +08:00
async def log_respond(respond):
print(respond)
await event.respond(respond)
2020-04-23 02:35:13 +08:00
if event.to_id != PeerChannel(channel_id):
return
2020-04-24 01:12:34 +08:00
2020-04-23 02:35:13 +08:00
print(event)
2020-04-24 01:12:34 +08:00
2020-04-23 02:35:13 +08:00
if event.media:
filename=event.media.document.attributes[0].file_name
2020-04-24 01:12:34 +08:00
log_respond(f"Downloading file {filename} ({event.media.document.size} bytes)")
2020-04-23 02:35:13 +08:00
2020-04-24 01:12:34 +08:00
await client.download_media(event.message, downloadFolder)
log_respond(f"{filename} ready")
2020-04-23 02:35:13 +08:00
with client:
client.run_until_disconnected()