mirror of
https://github.com/alfem/telegram-download-daemon.git
synced 2024-11-10 08:55:44 +08:00
First working version
This commit is contained in:
parent
a15c32ed6a
commit
2540e13f90
3 changed files with 1141 additions and 0 deletions
1058
LICENSE.txt
Normal file
1058
LICENSE.txt
Normal file
File diff suppressed because it is too large
Load diff
39
README.md
39
README.md
|
@ -1 +1,40 @@
|
|||
# telegram-download-daemon
|
||||
|
||||
A Telegram Daemon (not a bot) for file downloading automation
|
||||
|
||||
If you have got an Internet connected computer or NAS and you want to automate file downloading from Telegram channels, this
|
||||
daemon is for you.
|
||||
|
||||
Telegram bots are limited to 20Mb file size downloads. So I wrote this agent
|
||||
or daemon to allow bigger downloads.
|
||||
|
||||
# Installation
|
||||
|
||||
You need Python3 (tested in 3.5).
|
||||
|
||||
Install Telethon module (using pip or your OS package system):
|
||||
pip install --user telethon
|
||||
|
||||
Install cryptg to use a C library to speed up downloads (optional)
|
||||
pip install --user cryptg
|
||||
|
||||
Obtain your own api id: https://core.telegram.org/api/obtaining_api_id
|
||||
|
||||
Edit telegram-download-daemon.py and put your own api_id and api_hash values
|
||||
into the proper variables.
|
||||
|
||||
Change the destination folder if desired.
|
||||
|
||||
Use your favorite Telegram app to create a new (private)channel.
|
||||
|
||||
Change the channel_id in telegram-download-daemon.py.
|
||||
|
||||
Run the script!
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
44
telegram-download-daemon.py
Normal file
44
telegram-download-daemon.py
Normal file
|
@ -0,0 +1,44 @@
|
|||
#!/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)
|
||||
|
||||
|
||||
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)
|
||||
|
||||
# Edit these lines:
|
||||
api_id = NNNNNN
|
||||
api_hash = "XXXXXXXXXXXXXXXXXXXXXXXXXX"
|
||||
downloadFolder="/tmp"
|
||||
channel_id= NNNNNNNNN
|
||||
proxy = None
|
||||
# End of interesting parameters
|
||||
|
||||
session = "DownloadDaemon"
|
||||
|
||||
client = TelegramClient(session, api_id, api_hash, proxy=proxy).start()
|
||||
|
||||
@client.on(events.NewMessage())
|
||||
async def handler(event):
|
||||
if event.to_id != PeerChannel(channel_id):
|
||||
return
|
||||
print(event)
|
||||
if event.media:
|
||||
filename=event.media.document.attributes[0].file_name
|
||||
answer="Downloading file %s (%i bytes)" % (filename,event.media.document.size)
|
||||
print(answer)
|
||||
await event.respond(answer)
|
||||
|
||||
await client.download_media(event.message,downloadFolder)
|
||||
await event.respond(filename+" ready")
|
||||
|
||||
|
||||
with client:
|
||||
client.run_until_disconnected()
|
||||
|
||||
|
||||
|
Loading…
Reference in a new issue